Cómo integrar modelos LLM en tu aplicación Laravel con Prism

  • Publicado el 03 abril, 2025
  • Palabras: 368

Prism es un paquete de Laravel para integrar modelos de lenguaje de gran tamaño (LLM) en tus aplicaciones.

Cómo integrar modelos LLM en tu aplicación Laravel con Prism

Quizás ya conozcas proveedores de AI como OpenAI (creadores de ChatGPT), Anthropic (con Claude) y Ollama (de Meta), todos ellos con API para realizar solicitudes de finalización. En lugar de depender de sus interfaces de chat, podemos hacer que nuestro sistema realice una solicitud y analice los datos devueltos en la respuesta.

 

Para lograr esto en Laravel, podemos usar el fantástico paquete Prism. Prism nos permite comunicarnos con proveedores de AI mediante un conjunto de comandos fluido, práctico y muy compatible con Laravel. Lo mejor es que los comandos serán los mismos independientemente del proveedor que elijamos, por lo que es muy sencillo si necesitamos cambiar de proveedor más adelante.

 

Para usar Prism, debes instalarlo y configurarlo con las claves API de tu proveedor de IA. Aquí tienes un ejemplo rápido de cómo funciona:

 

#Instalación y configuración

Primero, agreguemos Prism a tu proyecto usando Composer. Abre tu terminal, navega al directorio de tu proyecto y ejecuta:

 

composer require prism-php/prism

 

Prism incluye un archivo de configuración que querrás personalizar. Publícalo en tu directorio de configuración ejecutando:

 

php artisan vendor:publish --tag=prism-config

 

Esto creará un nuevo archivo en config/prism.php

 

#Configuración del proveedor

Prism utiliza un sistema de configuración de proveedores sencillo que permite configurar varios proveedores de AI en un solo lugar. Cada proveedor tiene su propia sección en el archivo de configuración, donde se puede especificar:

 

  • Credenciales de API
  • URL base (útiles para instancias autoalojadas o endpoints personalizados)
  • Otras configuraciones específicas del proveedor

 

La lista de proveedores a día de hoy son: OpenAI, Anthropic, Ollama, Mistral, Groq, xAI, Gemini, DeepSeek y Voyage AI. En nuestro caso nos vamos a fijar en el proveedor OpenAI:

 

 

'providers' => [
        'openai' => [
            'url' => env('OPENAI_URL', 'https://api.openai.com/v1'),
            'api_key' => env('OPENAI_API_KEY', ''),
            'organization' => env('OPENAI_ORGANIZATION', null),
            'project' => env('OPENAI_PROJECT', null),
        ],

 

#Variables de entorno

Prism sigue las mejores prácticas de configuración del entorno de Laravel. Todos los valores sensibles o específicos del entorno deben almacenarse en el archivo .env. Funciona así:

 

  1. La configuración de cada proveedor obtiene valores de las variables de entorno.
  2. Los valores predeterminados se proporcionan como respaldo.
  3. Las variables de entorno siguen un patrón de nombres predecible:

 

Para nuestro caso:

 

# Prism Server Configuration
PRISM_SERVER_ENABLED=true

# Provider Configuration
OPENAI_API_KEY=tu-api-key-aqui

 

#Generar texto

Prism ofrece una potente interfaz para generar texto mediante Modelos de Lenguaje Grandes (LLM). Esto puede ser desde el uso básico hasta funciones avanzadas como interacciones multimodales y gestión de respuestas.

 

Veamos un uso básico con un comando de Laravel

 

php artisan make:command ChatCommand 

 

Editamos el comando:

 

<?php

namespace AppConsoleCommands;

use IlluminateConsoleCommand;
use PrismPrismEnumsProvider;
use PrismPrismPrism;
use function LaravelPrompts	extarea;

class ChatCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'chat';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Chat using Prism';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $message = textarea('¿Cuál es tu pregunta?');

        $response = Prism::text()
            ->using(Provider::OpenAI, 'gpt-4o')
            ->withPrompt($message)
            ->asText();

        dd($response->text);
    }
}



Para probarlo ejecutamos el comando desde la consola:

 

php artisan chat

 

y vemos la salida

 

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión