Cómo integrar la API de OpenAI en Laravel (Guía paso a paso)
La Inteligencia Artificial ha dejado de ser una “tecnología del futuro” para convertirse en una herramienta esencial en el arsenal de cualquier desarrollador FullStack.
En este tutorial, aprenderás cómo integrar la API de OpenAI en un proyecto de Laravel para generar texto, completar frases o crear un chat inteligente. Utilizaremos el cliente PHP mantenido por la comunidad y Nuno Maduro, que es el estándar de facto para Laravel.
Requisitos previos
Antes de empezar, asegúrate de tener:
- PHP 8.1 o superior.
- Un proyecto de Laravel instalado (versión 10 o 11).
- Una cuenta en OpenAI Platform.
Paso 1: Obtener tu API Key
- Ve a OpenAI API Keys.
- Crea una nueva clave secreta (Create new secret key).
- Cópiala inmediatamente (no podrás verla de nuevo).
Paso 2: Instalación del Cliente
Vamos a utilizar el paquete openai-php/client. Abre tu terminal en la raíz de tu proyecto Laravel y ejecuta:
composer require openai-php/client
Paso 3: Configuración de Variables de Entorno
Nunca debemos escribir las claves API directamente en el código. Abre tu archivo .env y agrega tu clave:
OPENAI_API_KEY=sk-tu-clave-secreta-aqui...
OPENAI_ORGANIZATION=org-tu-id-opcional
Ahora, es una buena práctica configurar esto en config/services.php para poder acceder a ella limpiamente en toda la aplicación:
// config/services.php
return [
// ... otras configuraciones
'openai' => [
'api_key' => env('OPENAI_API_KEY'),
],
];
Paso 4: Creando el Controlador
Vamos a crear un controlador para manejar la lógica de la IA. Ejecuta:
php artisan make:controller AiController
Abre app/Http/Controllers/AiController.php y añade el siguiente código. En este ejemplo, crearemos un endpoint que sugiere ideas para títulos de blog (¡muy meta!).
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use OpenAI;
class AiController extends Controller
{
public function suggestTitles(Request $request)
{
// Validamos que el usuario envíe un tema
$request->validate([
'topic' => 'required|string|max:100',
]);
// Inicializamos el cliente
$client = OpenAI::client(config('services.openai.api_key'));
// Hacemos la petición a la API (usando GPT-4 o GPT-3.5-turbo)
$result = $client->chat()->create([
'model' => 'gpt-4o-mini', // Modelo rápido y económico
'messages' => [
['role' => 'system', 'content' => 'Eres un experto en SEO y redacción técnica.'],
['role' => 'user', 'content' => "Dame 3 títulos atractivos para un artículo sobre: {$request->topic}"],
],
]);
// Extraemos el contenido de la respuesta
$content = $result->choices[0]->message->content;
return response()->json([
'topic' => $request->topic,
'suggestions' => $content,
]);
}
}
Paso 5: Definir la Ruta
Ve a tu archivo routes/api.php (o web.php si prefieres hacerlo directamente en el navegador sin usar Postman) y registra la nueva ruta:
use App\Http\Controllers\AiController;
use Illuminate\Support\Facades\Route;
Route::post('/ai/suggest-titles', [AiController::class, 'suggestTitles']);
Paso 6: Probando la Integración
Ahora puedes probar tu integración. Si usas una herramienta como Postman o Thunder Client, haz una petición POST a http://tu-dominio.test/api/ai/suggest-titles con el siguiente JSON:
{
"topic": "Laravel y Astro"
}
Respuesta esperada
La API te devolverá algo similar a esto:
{
"topic": "Laravel y Astro",
"suggestions": "1. Construyendo el futuro: Combina la potencia de Laravel con la velocidad de Astro.\n2. Guía definitiva para usar Laravel como Headless CMS para Astro.\n3. Astro vs Blade: ¿Por qué deberías desacoplar tu Frontend?"
}
Consideraciones Importantes
- Costos y Límites: Recuerda que la API de OpenAI es de pago por uso. Configura límites de gasto en tu panel de OpenAI para evitar sorpresas.
- Latencia: Las peticiones a la IA pueden tardar varios segundos. Si vas a usar esto en producción, considera usar Colas (Queues) de Laravel para procesar la petición en segundo plano y no bloquear al usuario.
- Seguridad: Nunca expongas tu API Key en el frontend (JavaScript). Siempre realiza las llamadas desde tu servidor (Backend) como hicimos en este ejemplo.
Conclusión
Integrar IA en Laravel es increíblemente sencillo gracias al ecosistema de paquetes de PHP. Con solo unas pocas líneas de código, puedes añadir funcionalidades de resumen, traducción, chat o generación de contenido a tus aplicaciones.
¿Qué vas a construir tú con esta integración?