Cómo conectar Laravel con ChatGPT paso a paso (OpenAI API)
Veamos los pasos para poder conectar ChatGPT con un proyecto en Laravel, aunque los pasos son prácticamente los mismos en cualquier otra tecnología. Lo único que cambia ligeramente es cómo harías el llamado.
1. Instalar el paquete para peticiones HTTP
Lo primero que necesitamos es un paquete para hacer peticiones HTTP, en caso de que no lo tengas instalado.
En Laravel, usualmente viene por defecto, así que no deberías tener ningún problema. Pero si no lo tienes, lo instalas como siempre:
$ composer require guzzlehttp/guzzle
2. Obtener la clave de API de OpenAI
El siguiente paso sería obtener tu clave de API de ChatGPT.
Para eso, ve al sitio oficial de OpenAI:
https://platform.openai.com/api-keys
Allí verás una pantalla como esta. Haz clic en “Create new secret key”, colócale un nombre cualquiera (puede ser el nombre del proyecto) y crea la clave.
Una vez generada, guárdala en tu proyecto en Laravel
3. Crear la vista
Creamos un controlador con una vista simple en HTML que contenga un formulario para hacer la consulta:
Un <textarea> para escribir la pregunta.
Un botón de Enviar:
resources\views\chatgtp\textarea.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form action="{{ route('gtp-1') }}" method="post">
@csrf
<textarea name="ask"></textarea>
<button type="submit">{{ __('Send') }}</button>
</form>
</body>
</html>
Aquí, como puedes ver, tenemos dos rutas:
Una ruta de tipo GET para mostrar el formulario.
Una ruta de tipo POST para procesar la pregunta.
routes\web.php
Route::get('chatgtp', [ChatGTPController::class, 'textarea']);
Route::post('chatgtp/ask1', [ChatGTPController::class, 'ask'])->name('gtp-1');
Además, le colocamos un nombre a la ruta para referenciarla fácilmente desde la vista.
4. Controlador: Realizar la petición a la API
Usando el paquete HTTP ya instalado, hacemos una petición a la API de OpenAI. Aquí tienes un ejemplo básico de estructura:
- URL del endpoint de OpenAI.
- El modelo a usar (en mi caso, el gratuito: gpt-3.5-turbo).
- El mensaje con:
- Rol: "user".
- Contenido: la pregunta ingresada.
- temperature: valor que define la creatividad de la respuesta (puedes probar con 0.7, por ejemplo).
También puedes colocar un dd() o dump() para ver qué devuelve la API.
app\Http\Controllers\Dashboard\ChatGTPController.php
<?php
namespace App\Http\Controllers\Dashboard;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Http;
class ChatGTPController extends Controller
{
public function textarea()
{
return view('chatgtp.textarea');
}
public function ask(): string
{
$response = Http::withToken(env('OPENAI_API_KEY'))
->post('https://api.openai.com/v1/chat/completions', [
'model' => 'gpt-3.5-turbo',
'messages' => [
['role' => 'user', 'content' => request('ask')],
],
'temperature' => 0.7,
]);
dd($response->json());
return $response->json()['choices'][0]['message']['content'] ?? 'No hubo respuesta.';
}
}
5. Configurar la clave en .env
La clave la puedes guardar directamente en tu archivo .env, por ejemplo:
.env
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
Y luego recuperarla en tu código con env('OPENAI_API_KEY').
Acepto recibir anuncios de interes sobre este Blog.
Mostramos los pasos para que puedas conectar tu app en Laravel a ChatGTP.
- Andrés Cruz