Cómo integrar ChatGPT con una aplicación Laravel

Inicio   /   Cómo integrar ChatGPT con una aplicación Laravel

Blog Cómo integrar ChatGPT con una aplicación Laravel


Cómo integrar ChatGPT con una aplicación Laravel

Integrar ChatGPT con una aplicación Laravel es más sencillo de lo que parece. En esta guía completa, te mostraré cómo implementar la API de OpenAI en tu proyecto Laravel paso a paso.

Paso 1: Instalar las Dependencias Necesarias

Primero, necesitamos instalar el paquete de OpenAI para PHP. Ejecuta el siguiente comando en tu terminal:
composer require openai-php/laravel

Paso 2: Configurar las Credenciales de OpenAI

Agrega tu API Key de OpenAI en el archivo .env:
OPENAI_API_KEY=tu-api-key-aqui
Publica el archivo de configuración:
php artisan vendor:publish --provider="OpenAI\\Laravel\\ServiceProvider"

Paso 3: Crear un Controlador para ChatGPT

Crea un controlador que manejará las peticiones a ChatGPT:
php artisan make:controller ChatGPTController
Implementa el método para enviar mensajes:
<?php

namespace App\\Http\\Controllers;

use Illuminate\\Http\\Request;
use OpenAI\\Laravel\\Facades\\OpenAI;

class ChatGPTController extends Controller
{
    public function sendMessage(Request $request)
    {
        $request->validate([
            'message' => 'required|string|max:2000'
        ]);

        $result = OpenAI::chat()->create([
            'model' => 'gpt-3.5-turbo',
            'messages' => [
                ['role' => 'user', 'content' => $request->message],
            ],
        ]);

        return response()->json([
            'response' => $result->choices[0]->message->content
        ]);
    }
}

Paso 4: Configurar las Rutas

Agrega las rutas en routes/web.php o routes/api.php:
use App\\Http\\Controllers\\ChatGPTController;

Route::post('/chat', [ChatGPTController::class, 'sendMessage']);

Paso 5: Crear la Vista

Crea una vista sencilla para interactuar con ChatGPT (resources/views/chat.blade.php):
<!DOCTYPE html>
<html>
<head>
    <title>Chat con GPT</title>
    <meta name="csrf-token" content="{{ csrf_token() }}">
</head>
<body>
    <div id="chat-container">
        <div id="messages"></div>
        <input type="text" id="user-input" placeholder="Escribe tu mensaje...">
        <button onclick="sendMessage()">Enviar</button>
    </div>

    <script>
        async function sendMessage() {
            const input = document.getElementById('user-input');
            const message = input.value;
            
            const response = await fetch('/chat', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content
                },
                body: JSON.stringify({ message: message })
            });
            
            const data = await response.json();
            document.getElementById('messages').innerHTML += 
                `<p><strong>Tú:</strong> ${message}</p>` +
                `<p><strong>ChatGPT:</strong> ${data.response}</p>`;
            input.value = '';
        }
    </script>
</body>
</html>

Ejemplo Avanzado: Chat con Historial de Conversación

Para mantener el contexto de la conversación, puedes usar sesiones:
public function sendMessageWithHistory(Request $request)
{
    $messages = session('chat_history', []);
    
    $messages[] = ['role' => 'user', 'content' => $request->message];
    
    $result = OpenAI::chat()->create([
        'model' => 'gpt-3.5-turbo',
        'messages' => $messages,
    ]);
    
    $messages[] = [
        'role' => 'assistant', 
        'content' => $result->choices[0]->message->content
    ];
    
    session(['chat_history' => $messages]);
    
    return response()->json([
        'response' => $result->choices[0]->message->content
    ]);
}

Consejos de Optimización

- Implementa caché para respuestas frecuentes - Usa colas (queues) para peticiones pesadas - Establece límites de uso por usuario - Maneja errores apropiadamente con try-catch

Conclusión

Integrar ChatGPT en Laravel es un proceso directo que abre muchas posibilidades para tu aplicación. Con estos ejemplos, puedes crear desde chatbots simples hasta asistentes virtuales complejos. ¡Experimenta y crea soluciones increíbles!

Tags: Laravel, api, php, chatgpt, Desarrollo Web, OpenAI, Integración,