Integrando ChatGPT no Laravel: Como Buscar Prompts Simples

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.


Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *