Integrando ChatGPT no Laravel: Como Buscar Prompts Simples
Integrar o ChatGPT em uma aplicação Laravel pode adicionar um poderoso recurso de processamento de linguagem natural ao seu projeto. Esta integração permite que você envie prompts ao ChatGPT e receba respostas diretamente na sua aplicação. Neste guia, vamos explorar passo a passo como buscar prompts simples utilizando a API do ChatGPT em um projeto Laravel, abordando desde a configuração inicial até a implementação completa.
Pré-requisitos
Antes de começar, certifique-se de ter:
- PHP e Composer instalados em sua máquina.
- Um projeto Laravel configurado.
- Uma chave de API do OpenAI (você pode obter uma em OpenAI).
- Conhecimento básico de Laravel e PHP.
Configuração do Ambiente
1. Instalando Laravel
Se ainda não tiver o Laravel instalado, você pode instalá-lo globalmente usando Composer:
composer global require laravel/installer
Crie um novo projeto Laravel:
laravel new chatgpt-integration
cd chatgpt-integration
2. Instalando Pacotes Necessários
Para facilitar as requisições HTTP à API do ChatGPT, vamos instalar o pacote guzzlehttp/guzzle
:
composer require guzzlehttp/guzzle
Configurando a Chave de API do OpenAI
Adicione sua chave de API do OpenAI ao arquivo .env
:
OPENAI_API_KEY=your_openai_api_key
Criando um Serviço para a API do ChatGPT
Vamos criar um serviço para encapsular a lógica de comunicação com a API do ChatGPT.
1. Criando o Serviço
Crie um diretório Services
dentro de app
e adicione um arquivo ChatGPTService.php
:
app/
├── Services/
│ └── ChatGPTService.php
2. Implementando o Serviço
No arquivo ChatGPTService.php
, adicione o seguinte código:
<?php
namespace App\Services;
use GuzzleHttp\Client;
class ChatGPTService
{
protected $client;
protected $apiKey;
public function __construct()
{
$this->client = new Client();
$this->apiKey = env('OPENAI_API_KEY');
}
public function getResponse($prompt)
{
$response = $this->client->post('https://api.openai.com/v1/engines/davinci-codex/completions', [
'headers' => [
'Authorization' => 'Bearer ' . $this->apiKey,
'Content-Type' => 'application/json',
],
'json' => [
'prompt' => $prompt,
'max_tokens' => 150,
],
]);
$data = json_decode($response->getBody(), true);
return $data['choices'][0]['text'] ?? 'No response';
}
}
Criando um Controller para Lidar com Requisições
1. Criando o Controller
Crie um controller chamado ChatGPTController
:
php artisan make:controller ChatGPTController
2. Implementando o Controller
No arquivo ChatGPTController.php
, adicione o seguinte código:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\ChatGPTService;
class ChatGPTController extends Controller
{
protected $chatGPTService;
public function __construct(ChatGPTService $chatGPTService)
{
$this->chatGPTService = $chatGPTService;
}
public function getResponse(Request $request)
{
$request->validate([
'prompt' => 'required|string',
]);
$prompt = $request->input('prompt');
$response = $this->chatGPTService->getResponse($prompt);
return response()->json(['response' => $response]);
}
}
Configurando Rotas
Adicione uma rota para o novo endpoint no arquivo routes/web.php
:
use App\Http\Controllers\ChatGPTController;
Route::post('/chatgpt', [ChatGPTController::class, 'getResponse']);
Testando a Integração
Para testar a integração, você pode usar um cliente HTTP como Postman ou cURL para enviar uma requisição POST ao endpoint /chatgpt
com um prompt simples.
Exemplo de Requisição com cURL
curl -X POST http://localhost:8000/chatgpt \
-H "Content-Type: application/json" \
-d '{"prompt": "Hello, how are you?"}'
Exemplo de Interface Simples
Para completar, vamos criar uma interface simples para interagir com o ChatGPT.
1. Criando uma View
Crie uma view chamada chat.blade.php
no diretório resources/views
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ChatGPT Integration</title>
</head>
<body>
<form id="chat-form">
<label for="prompt">Enter your prompt:</label>
<input type="text" id="prompt" name="prompt" required>
<button type="submit">Send</button>
</form>
<div id="response"></div>
<script>
document.getElementById('chat-form').addEventListener('submit', function (event) {
event.preventDefault();
const prompt = document.getElementById('prompt').value;
fetch('/chatgpt', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({ prompt: prompt })
})
.then(response => response.json())
.then(data => {
document.getElementById('response').innerText = data.response;
})
.catch(error => console.error('Error:', error));
});
</script>
</body>
</html>
2. Atualizando a Rota
Atualize o web.php
para incluir uma rota que renderiza esta view:
Route::get('/chat', function () {
return view('chat');
});
Conclusão
Integrar o ChatGPT com Laravel é um processo direto que pode adicionar um recurso de linguagem natural valioso à sua aplicação. Portanto neste guia, cobrimos desde a configuração inicial até a implementação de um endpoint que interage com a API do ChatGPT, além de uma interface simples para testar a funcionalidade. Com essas etapas, você pode facilmente expandir e personalizar a integração de acordo com as necessidades do seu projeto.