El chatbot de soporte de ShopEasy puede responder a la pregunta “¿Dónde está mi pedido?” invocando una función de backend como lookup_order y convirtiendo el resultado en una frase útil que el usuario pueda leer.
Una forma sencilla de definir un Modelo de Lenguaje Extenso (LLM) en este curso es decir que toma el texto que enviamos y predice el siguiente texto que debe devolver; funciona como una función de autocompletar muy potente capaz de generar párrafos enteros.
Incluso en esa única pregunta sobre un pedido, ShopEasy maneja varias entradas distintas. La instrucción del sistema (system prompt) es la instrucción privada que ShopEasy envía con cada solicitud; por ejemplo: “Eres el soporte de ShopEasy. Sé conciso. Pide el número de pedido si falta”. El historial de la conversación es el registro continuo de los intercambios anteriores que ShopEasy incluye para que el modelo mantenga la coherencia. La entrada del usuario es el nuevo mensaje, como “¿Dónde está mi pedido?”. Las herramientas son funciones del lado del servidor que ShopEasy puede ejecutar —como lookup_order y request_refund— cuando el chatbot necesita datos o debe realizar una acción.
Una vez que ShopEasy dispone de estos elementos, la solicitud sigue un ciclo repetible. Un mensaje del usuario llega a la API de ShopEasy y la aplicación construye una instrucción (prompt) para el modelo concatenando la instrucción del sistema, el historial de la conversación y la nueva entrada del usuario. La aplicación envía dicha instrucción a un proveedor de LLM, el cual devuelve una respuesta del modelo que puede ser un texto directo o una propuesta de llamada a una herramienta con sus argumentos.
Cuando el modelo propone llamar a una herramienta, el código de la aplicación ShopEasy decide si ejecutarla y luego invoca una función concreta, como lookup_order para obtener el estado del envío o request_refund para iniciar una devolución. A continuación, ShopEasy envía el resultado de la herramienta al modelo como un nuevo mensaje para que este redacte la respuesta final dirigida al usuario; solo esa respuesta final se envía al usuario. Hay un detalle importante para la seguridad y la depuración posterior: el modelo no tiene memoria interna entre llamadas, por lo que ShopEasy debe reenviar el historial de la conversación en cada ocasión; de lo contrario, el modelo respondería como si nunca hubiera interactuado con el usuario anteriormente. Representemos este ciclo mediante un diagrama de flujo de la solicitud.
Este diagrama hace visible el límite de confianza. La entrada del usuario no es de confianza porque cualquier emisor puede escribir texto arbitrario, y los resultados de las herramientas tampoco lo son, ya que una herramienta puede devolver contenido inesperado que, aun así, se retroalimenta al modelo. [fuentes][/fuentes]
Una implicación importante de este ciclo en términos de seguridad es que el modelo no lee la base de datos, no emite reembolsos ni aplica políticas. El modelo solo genera texto que sugiere qué hacer a continuación, mientras que el código de la aplicación ShopEasy es el componente que realmente ejecuta acciones y devuelve datos a través de herramientas. [fuentes][/fuentes]
Dicha separación solo se mantiene clara si distinguimos tres identidades. El usuario final es el cliente que consulta sobre un pedido; sus permisos deben limitar qué pedidos puede ver y qué acciones puede solicitar. El servicio ShopEasy es nuestro propio backend, el cual posee capacidades más amplias, como el acceso a la base de datos y la facultad de ejecutar request_refund. La credencial del proveedor del LLM es la clave API o el token de servicio que ShopEasy utiliza para llamar al punto de conexión (endpoint) del modelo; dicha credencial autoriza únicamente el uso del modelo, no las acciones del cliente. Mezclar estas identidades provoca fallos en los que el backend gasta dinero, revela datos o realiza acciones en nombre de un usuario que no debería poder iniciarlas. Si algo sale mal, ¿qué parte puede realmente hacer cumplir las reglas: el texto del prompt, el LLM o el código de la aplicación ShopEasy? [fuentes][/fuentes]