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.