- A equipe de Node.js da Red Hat está experimentando formas de integrar LLMs com Node.js e TypeScript/JavaScript
- Comparando vários frameworks, com foco especial em chamadas de tools/functions e no funcionamento de agentes
- Análise dos recursos do Llama Stack, lançado recentemente, e de seu potencial de integração com Node.js
Como configurar e executar o Llama Stack
- O Llama Stack é um framework modular que distribui várias implementações com o objetivo de padronizar APIs
- Ao usar um contêiner baseado em Ollama, ele oferece a forma mais fácil de execução
- Configuração do servidor por meio de um exemplo de script de execução:
- Modelo:
meta-llama/Llama-3.1-8B-Instruct
- Porta:
8321
- IP do servidor Ollama:
10.1.2.38
- É preciso executar o modelo no Ollama com antecedência e usá-lo ao menos uma vez por dia para manter o keepalive
- O endpoint de documentação (
/docs) permite consultar o esquema da API e fazer testes interativos
Exemplo da primeira aplicação em Node.js
- Uso da biblioteca
llama-stack-client-typescript para se comunicar com o Llama Stack
- Definição de duas tools:
favorite_color_tool: fornece informações de cor com base em cidade/país
favorite_hockey_tool: fornece informações de times de hóquei no gelo com base em cidade/país
- Teste do fluxo de chamada de tools por meio de um cenário de perguntas
- Problema inicial: quando faltavam informações necessárias para a tool, não era exibida uma orientação clara
- Solução: inserir a palavra "assistant" na mensagem de resposta melhorou o fluxo de forma natural
Como o Llama Stack trata chamadas de tools
- Ao usar a API
chatCompletion(), é preciso tratar diretamente as chamadas de tools
- A função
handleResponse() detecta solicitações de tools e devolve os resultados novamente como mensagem
tool_choice vem definido como "auto" por padrão, mas há forte tendência a tentar usar tools quando elas estão disponíveis
- Foi observado que, mesmo quando a pergunta não tem relação com as tools, o sistema desiste de tentar usá-las e acaba tratando o caso como ‘não é possível responder’
Experimento de integração entre MCP e Llama Stack
- Com o MCP (Model Context Protocol), é possível hospedar tools em um servidor externo e compartilhá-las com vários frameworks
- O servidor MCP faz a ponte de servidores baseados em stdio para SSE por meio do Supergateway
- Após registrar o servidor MCP, é possível usar a API de agentes do Llama Stack para chamar automaticamente as tools do MCP
- A API de agentes:
- gerencia automaticamente estado e mensagens
- executa internamente o fluxo de chamada de tools no framework
- No entanto, não é possível ver diretamente os logs das chamadas de tools, apenas a resposta final
Uso de MCP para acesso ao ambiente local
- É possível executar um servidor MCP localmente em modo stdio e conectá-lo ao Llama Stack
- É necessário código para converter o JSON de definição de tools do servidor MCP para um formato compatível com o Llama Stack
- Por meio de
mcpClient.callTool(), é possível retornar resultados de tools dentro do fluxo de resposta do LLM
- Com isso, é possível implementar cenários de acesso a aplicações locais, e não apenas a servidores centralizados
Encerramento
- Foi realizada uma prática de integração de LLMs e chamadas de tools com o Llama Stack em ambiente Node.js
- São apresentados vários métodos: tools locais, MCP remoto e MCP local, cobrindo diferentes casos de uso
- Em especial, o material oferece exemplos de código e fluxos práticos para desenvolvedores JavaScript/TypeScript
- Serve como um bom ponto de partida para quem quer integrar LLMs com Node.js no futuro
Materiais adicionais
Ainda não há comentários.