- El equipo de Node.js de Red Hat está experimentando con formas de integrar LLM con Node.js y TypeScript/JavaScript
- Comparan varios frameworks, con especial énfasis en las llamadas a tools/functions y la forma en que operan los agentes
- Analizan las capacidades del recientemente lanzado Llama Stack y su potencial de integración con Node.js
Cómo configurar y ejecutar Llama Stack
- Llama Stack es un framework modular que distribuye varias implementaciones con el objetivo de estandarizar APIs
- Al usar un contenedor basado en Ollama, ofrece la forma más sencilla de ejecución
- Configuración del servidor mediante un ejemplo de script de arranque:
- Modelo:
meta-llama/Llama-3.1-8B-Instruct
- Puerto:
8321
- IP del servidor Ollama:
10.1.2.38
- El modelo debe ejecutarse previamente en Ollama, y es necesario usarlo al menos una vez al día para mantener el keepalive
- El endpoint de documentación (
/docs) permite ver el esquema de la API y hacer pruebas interactivas
Primer ejemplo de aplicación en Node.js
- Usa la librería
llama-stack-client-typescript para comunicarse con Llama Stack
- Define dos tools:
favorite_color_tool: proporciona información de color basada en ciudad/país
favorite_hockey_tool: proporciona información de equipos de hockey sobre hielo basada en ciudad/país
- Prueba el flujo de llamadas a tools mediante un escenario de preguntas
- Problema inicial: cuando falta información necesaria para la tool, no se muestra un mensaje de guía claro
- Solución: insertar la palabra "assistant" en el mensaje de respuesta mejora el flujo de forma más natural
Cómo maneja Llama Stack las llamadas a tools
- Al usar la API
chatCompletion(), las llamadas a tools deben manejarse directamente
- La función
handleResponse() detecta las solicitudes de tools y vuelve a pasar el resultado como mensaje
tool_choice está configurado como "auto" por defecto, pero tiende fuertemente a usar tools si existen
- Se observó que, incluso cuando la pregunta no está relacionada con ninguna tool, el sistema intenta usarlas y luego termina marcando el caso como ‘no puede responder’
Experimento de integración entre MCP y Llama Stack
- Con MCP (Model Context Protocol), es posible alojar tools en un servidor externo y compartirlas entre distintos frameworks
- El servidor MCP usa Supergateway para hacer bridge de un servidor basado en stdio hacia SSE
- Tras registrar el servidor MCP, se pueden invocar automáticamente las tools MCP usando la API de agentes de Llama Stack
- La API de agentes:
- maneja automáticamente el estado y los mensajes
- ejecuta internamente el flujo de llamadas a tools dentro del framework
- Sin embargo, no se pueden ver directamente los logs de las llamadas a tools, y solo es posible confirmar la respuesta final
Uso de MCP para acceder al entorno local
- Se puede ejecutar un servidor MCP en modo stdio dentro del entorno local y conectarlo con Llama Stack
- Se necesita código para convertir el JSON de definición de tools del servidor MCP al formato compatible con Llama Stack
- Mediante
mcpClient.callTool(), es posible devolver resultados de tools dentro del flujo de respuesta del LLM
- Esto permite implementar escenarios de acceso a entornos de apps locales en lugar de depender de un servidor centralizado
Cierre
- Se realizó una práctica de integración de LLM y llamadas a tools mediante Llama Stack en un entorno Node.js
- Se presentan distintos enfoques: tools locales, MCP remoto y MCP local, con varios casos de uso
- En particular, ofrece ejemplos de código y flujos prácticos para desarrolladores de JavaScript/TypeScript
- Puede servir como un punto de partida útil para quienes quieran integrar LLM y Node.js en adelante
Material adicional
Aún no hay comentarios.