Laravel + ChatGPT

Opaaa pessoal, tudo bom? Aqui está um exemplo de como conectar o a API do ChatGPT com Laravel Framework:

Passo 1: Crie um novo projeto Laravel

Considerando que você já tenha Laravel instalado no seu computador, crie um novo projeto executando o seguinte comando no terminal: composer create-project laravel/laravel chatgpt

Passo 2: Instalar Guzzle HTTP

Guzzle é um cliente PHP HTTP que facilita o envio de solicitações HTTP, simplifica a integração com serviços da web e funciona com APIs. Para instalar, excute o seguinte comando: composer require guzzlehttp/guzzle

Passso 3: Obtenha uma chave para autenticação

Para conseguir utilizar a API do ChatGPT é necessário ter uma chave. Para isso, visite https://platform.openai.com/docs/api-reference/authentication, siga os passos e obtenha a chave.

Passo 4: Crie um novo Controller

Execute o seguinte comando para criar um novo controller: php artisan make:controller ChatController

Passo 5: Crie um método no Controller para fazer uma requisição para a API

Na classe ChatController, adicione um método para fazer a requisição para a API do ChatGPT utilizando Guzzle HTTP, que instalamos anteriormente. Exemplo:

<?php
namespace App\Http\Controllers;

use GuzzleHttp\Client;
use Illuminate\Http\Request;

class ChatController extends Controller
{
    public function chat(Request $request)
    {
        $message = $request->input('message');

        $client = new Client();
        $response = $client->post('https://api.openai.com/v1/chat/completions', [
            'headers' => [
                'Content-Type' => 'application/json',
                'Authorization' => 'Bearer ' . env('OPENAI_API_KEY'),
            ],
            'json' => [
                "model" => "gpt-3.5-turbo",
                "messages" => json_decode('[{"role": "user", "content": "'.$message.'"}]', true),
                "temperature" => 0.7
            ],
        ]);
        $result = json_decode($response->getBody()->getContents(), true);
        return response()->json($result['choices'][0]['message']['content']);
    }
}
?>

No código acima, criamos um novo cliente Guzzle e enviamos uma requisição POST para o endpoint da API do ChatGPT. Nós passamos a chave da API como um Authorization header e a mensagem que nós queremos enviar como um payload. A resposta é convertida em JSON e retornada para o cliente.

Passo 6: Adicione uma rota para o método do Controller

No arquivo routes/api.php, adicione a seguinte rota: Route::post('/chat', [ChatController::class, 'chat']);

Passo 7: Teste a API

Agora é só testar a API enviando uma requisição POST para o endpoint api/chat como uma mensagem como parâmetro. Exemplo utilziando o cURL:

curl -X POST \
  http://localhost:8000/chat \
  -H 'Content-Type: application/json' \
  -d '{
    "message": "Hello, ChatGPT!"
}'

A API vai responder com um objeto JSON contendo a resposta da API do ChatGPT. E é isso! Deixei o código disponível no github para quem tiver interesse em visualizar: https://github.com/FabioAugustoRodrigues/laravel-chatgpt

As referências estão todas aqui no medium: https://marcocaggiano.medium.com/how-to-connect-laravel-to-chatgpt-api-2992fae7c28

Uma dica é que não precisa insstalar o guzzle o laravel ja tem isso por padrão(Illuminate\Support\Facades\Http) nele e inclusive usa o guzzle hahaha.

Muito obrigado pela dica! 😀😀