UNPKG

@oliverlessa/gemini-agent-lib

Version:

Uma biblioteca NodeJS para criar agentes de IA com Gemini LLM

149 lines (110 loc) 6 kB
# Orquestrador Hierárquico de Agentes O `HierarchicalAgentOrchestrator` é um componente avançado que permite coordenar múltiplos agentes especialistas para resolver tarefas complexas de forma colaborativa e hierárquica. ## Visão Geral Este orquestrador implementa uma abordagem hierárquica para a resolução de problemas, onde: 1. Um agente orquestrador (de nível superior) analisa a tarefa principal 2. Seleciona os agentes especialistas mais adequados para a tarefa 3. Distribui subtarefas para os especialistas selecionados 4. Coleta e sintetiza as respostas em uma solução final coesa ## Características Principais - **Seleção Inteligente de Agentes**: Utiliza um modelo de linguagem (LLM) para analisar a tarefa e selecionar os agentes mais relevantes. - **Formatação Personalizada de Tarefas**: Suporta formatadores personalizados para adaptar a tarefa principal ao contexto específico de cada agente. - **Integração com Google Search**: Suporte especial para agentes com capacidade de busca na web. - **Síntese Avançada de Respostas**: Utiliza o LLM para integrar as diferentes perspectivas dos especialistas em uma resposta final coesa. ## Instalação O `HierarchicalAgentOrchestrator` faz parte da biblioteca principal e não requer instalação separada. ```javascript const { HierarchicalAgentOrchestrator } = require('caminho-para-biblioteca'); ``` ## Uso Básico ```javascript const { HierarchicalAgentOrchestrator } = require('./lib/hierarchical-agent-orchestrator'); const { Agent } = require('./lib/agent'); const { GenerativeAILLM } = require('./lib/generative-ai-llm'); // Configurar o modelo de linguagem (LLM) const llm = new GenerativeAILLM({ apiKey: 'sua-api-key', // outras configurações... }); // Criar agentes especialistas const agents = [ new Agent({ role: 'Especialista em Marketing Digital', objective: 'Fornecer estratégias eficazes de marketing online', llm: llm }), new Agent({ role: 'Analista de Dados', objective: 'Analisar métricas e extrair insights acionáveis', llm: llm }), new Agent({ role: 'Especialista em UX', objective: 'Melhorar a experiência do usuário e a usabilidade', llm: llm }) ]; // Criar o orquestrador const orchestrator = new HierarchicalAgentOrchestrator(agents, llm); // Executar uma tarefa async function runTask() { const task = 'Desenvolver uma estratégia para aumentar as conversões do nosso site de e-commerce'; const result = await orchestrator.orchestrate(task); console.log('Resultado Final:', result); } runTask(); ``` ## Uso Avançado ### Formatadores de Tarefa Personalizados Você pode definir formatadores personalizados para adaptar a tarefa principal ao contexto específico de cada agente: ```javascript const marketingAgent = new Agent({ role: 'Especialista em Marketing Digital', objective: 'Fornecer estratégias eficazes de marketing online', llm: llm, taskFormatter: (task, agent) => { return `Como ${agent.role}, analise a seguinte tarefa de e-commerce: "${task}" Concentre-se especificamente em estratégias de aquisição de clientes e otimização de funil de vendas. Forneça 3-5 recomendações acionáveis com base em tendências atuais do mercado.`; } }); ``` ### Integração com Google Search Para agentes que precisam de informações da web: ```javascript const researchAgent = new Agent({ role: 'Pesquisador de Mercado', objective: 'Fornecer dados atualizados sobre tendências de mercado', llm: llm, enableGoogleSearch: true // Habilita a busca no Google para este agente }); ``` ## Fluxo de Execução 1. **Análise da Tarefa**: O orquestrador analisa a tarefa principal usando o LLM. 2. **Seleção de Agentes**: Determina quais agentes especialistas são mais adequados para a tarefa. 3. **Distribuição de Tarefas**: Formata e distribui a tarefa para cada agente selecionado. 4. **Execução Paralela**: Cada agente processa sua parte da tarefa independentemente. 5. **Coleta de Respostas**: As respostas de todos os agentes são coletadas. 6. **Síntese Final**: O orquestrador sintetiza todas as respostas em uma solução final coesa. ## Considerações de Desempenho - O tempo de execução aumenta com o número de agentes selecionados, já que cada agente requer pelo menos uma chamada ao LLM. - Para tarefas que exigem respostas rápidas, considere limitar o número de agentes disponíveis ou usar critérios de seleção mais rigorosos. ## Tratamento de Erros O orquestrador inclui tratamento robusto de erros: - Se um agente falhar, sua resposta será substituída por uma mensagem de erro, mas o processo continuará com os outros agentes. - Se nenhum agente for considerado relevante para a tarefa, o orquestrador retornará uma mensagem apropriada. - Erros na síntese final são capturados e uma mensagem de erro genérica é retornada. ## Limitações Conhecidas - A qualidade da seleção de agentes e da síntese final depende diretamente da qualidade do LLM utilizado. - Não há mecanismo integrado para agentes solicitarem informações adicionais ou esclarecerem a tarefa. - A comunicação entre agentes é unidirecional (do orquestrador para os agentes) - não há colaboração direta entre agentes especialistas. ## Exemplos de Casos de Uso - **Planejamento Estratégico**: Combinar perspectivas de especialistas em finanças, marketing e operações. - **Análise de Produto**: Integrar feedback de especialistas em UX, desenvolvimento e negócios. - **Criação de Conteúdo**: Coordenar especialistas em SEO, redação e design visual. - **Resolução de Problemas Complexos**: Decompor problemas multifacetados em componentes especializados. ## Veja Também - [Documentação do Agent](./agent.md) - [Formatadores Personalizados](./formatadores-personalizados.md) - [Google Search](./google-search.md)