Let's build an AI agent using Laravel | Laravel AI SDK
Introducción al uso del Laravel AI SDK
Presentación del video
- El presentador, Aritya, da la bienvenida a los espectadores y presenta el tema del video: la creación de un agente de ventas utilizando el nuevo Laravel AI SDK.
- Se menciona que se utilizará un proyecto de Laravel con React e Inertia, enfatizando que el enfoque principal es implementar el SDK.
Estructura del proyecto
- Se describen los modelos utilizados en la base de datos: categorías, pedidos y productos. Se han sembrado algunos valores para mostrar ejemplos prácticos.
- El presentador muestra las categorías disponibles en la base de datos antes de proceder a instalar el SDK.
Instalación y configuración del SDK
Proceso de instalación
- Se copia un comando para instalar el SDK desde la terminal, seguido por la publicación de archivos necesarios como stubs y migraciones.
- Después de publicar los archivos, se confirma que se han creado dos tablas:
agent_conversationsyagent_conversation_messages, lo cual permite mantener un historial de conversaciones.
Configuración inicial
- Se explica cómo las migraciones crean tablas necesarias para almacenar conversaciones y mensajes entre agentes.
- La configuración predeterminada utiliza APIs de OpenAI para generación de texto; también se pueden cambiar modelos según sea necesario.
Creación del Agente
Definición del agente
- El presentador crea un agente llamado "asistente de ventas", destacando su capacidad para proporcionar respuestas estructuradas o en formato simple.
- Se definen los límites del agente, permitiéndole acceder a tablas específicas (productos, categorías y pedidos).
Instrucciones y herramientas
- Las instrucciones proporcionan contexto sobre las funciones esperadas del asistente; debe ser útil al ofrecer información sobre productos y pedidos.
- Se discuten las herramientas que puede usar el modelo LLM basándose en entradas específicas; por ejemplo, una función que obtiene resultados específicos sobre órdenes.
Implementación final
Creación de herramientas adicionales
- El presentador planea crear herramientas personalizadas para mejorar la funcionalidad del asistente basado en consultas específicas relacionadas con productos.
Implementación de Herramientas en un Proyecto
Creación de Herramientas para el Usuario
- Se introducen varias herramientas: herramienta de producto, herramienta de lista de categorías y herramienta de lista de pedidos para usuarios. Estas herramientas están diseñadas para ser específicas para cada usuario.
- Se comienza a agregar estas herramientas al proyecto, comenzando con la herramienta de lista de productos y continuando con la herramienta de categoría y la herramienta de pedidos.
Configuración del Controlador
- Se crea una ruta en
web.phpque permitirá interactuar con el agente mediante un controlador. La ruta se define comoroute post invoke agent.
- Se genera un controlador llamado
agent controllerutilizando el comando PHP Artisan, que manejará las invocaciones del agente.
Validación y Lógica del Agente
- Antes de invocar al agente, se valida que se haya proporcionado un mensaje o prompt. Esto asegura que la interacción tenga contenido significativo.
- El método utilizado puede ser flexible; se puede pasar directamente el prompt o asociarlo a un usuario autenticado para mantener la conversación contextualizada.
Implementación del Tool Producto
- Se inicia la creación de una herramienta simple que mostrará todos los productos disponibles o filtrará según una categoría específica si se proporciona un ID.
- La definición incluye una descripción clara sobre cómo listar productos y qué parámetros pueden manejarse, asegurando que sea fácil entender su funcionalidad.
Consulta y Respuesta
- Al consultar los productos, se utiliza una cláusula
whenpara filtrar por categoría si esta es proporcionada. Esto permite obtener resultados más específicos.
- Finalmente, se devuelve la respuesta con los productos obtenidos. También hay opciones para seleccionar columnas específicas si es necesario.
Interacción Frontend
- En el frontend (React), se establece un estado para manejar mensajes desde el usuario. Esto incluye configurar entradas y botones necesarios para enviar mensajes al servidor.
- Se realiza una llamada fetch a la ruta definida anteriormente (
invoke agent) usando POST, asegurándose también de incluir el token CSRF necesario para evitar errores relacionados con seguridad.
Este resumen captura los puntos clave discutidos en el video sobre cómo implementar herramientas dentro del contexto mencionado, proporcionando enlaces directos a momentos específicos relevantes en la transcripción.
Implementación de un Asistente de Ventas
Procesamiento y Visualización de Productos
- Se aborda un error relacionado con el análisis de datos en formato JSON, sugiriendo cambiar a texto para facilitar la visualización.
- Se establece un estado para las respuestas utilizando
useState, permitiendo que los mensajes del chat se manejen como una lista, donde el ID es opcional.
- Se modifica la forma en que se manejan las respuestas, asegurando que cada respuesta tenga un ID único basado en la longitud anterior más uno.
Interacción del Usuario y Respuestas
- Antes de enviar un mensaje, se agrega este al estado de respuestas como un mensaje del usuario, especificando su rol.
- Se menciona la necesidad de limpiar el campo después de enviar un mensaje y mostrar un estado de carga mientras se recuperan productos desde la base de datos.
Filtrado por Categoría
- El asistente puede filtrar productos por categoría; se verifica que los productos devueltos correspondan a "tops para hombres".
- Se utiliza una biblioteca para convertir Markdown a HTML, mejorando la presentación visual. También se recomienda usar DOM Purify para evitar ataques XSS.
Herramientas Adicionales y Gestión de Conversaciones
- Se añaden herramientas para listar categorías específicas y gestionar pedidos basados en el ID del usuario, manteniendo limpio el esquema de entrada.
- La conversación puede ser recordada automáticamente mediante el uso del paquete Laravel AI SDK, eliminando la necesidad de funciones adicionales para manejar mensajes.
Seguimiento y Almacenamiento
- Al crear o hacer referencia a una conversación existente, se puede almacenar automáticamente el ID correspondiente para futuras interacciones.
- El asistente responde correctamente a solicitudes sobre productos y órdenes asociadas al usuario. Además, permite pasar detalles adicionales sobre los productos solicitados.
Conclusiones Finales
- Las conversaciones son almacenadas en la base de datos, lo que permite acceder al historial basado en IDs específicos.
- El asistente está listo para pruebas finales; se demuestra cómo interactuar con él solicitando tanto productos como órdenes.