UNPKG

@oliverlessa/gemini-agent-lib

Version:

Uma biblioteca NodeJS para criar agentes de IA com Gemini LLM

158 lines (134 loc) 6.02 kB
require('dotenv').config(); const { ChatAgent } = require('../'); const VertexAILLM = require('../lib/vertex-ai-llm'); /** * Função para testar o ChatAgent */ async function testChatAgent() { console.log("Iniciando teste do ChatAgent..."); // Inicializa o LLM no modo chat const llm = new VertexAILLM({ projectId: process.env.GOOGLE_CLOUD_PROJECT_ID, credentialsPath: process.env.GOOGLE_APPLICATION_CREDENTIALS, modelName: "gemini-2.0-flash-001", mode: "chat", generationConfig: { maxOutputTokens: 2048, temperature: 0.2 } }); console.log("LLM inicializado no modo chat"); // Cria uma instância do ChatAgent const chatAgent = new ChatAgent({ role: "Assistente Pessoal", objective: "Ajudar o usuário com suas perguntas e tarefas", context: "Você é um assistente pessoal útil e amigável chamado GeminiBot. Responda às perguntas do usuário de forma clara e concisa.", llm: llm }); console.log("ChatAgent inicializado"); // Teste 1: Primeira mensagem console.log("\n--- Teste 1: Primeira mensagem ---"); const resposta1 = await chatAgent.processUserMessage("Olá! Quem é você?"); console.log("Resposta 1:", resposta1.text); // Teste 2: Segunda mensagem (deve manter contexto) console.log("\n--- Teste 2: Segunda mensagem (deve manter contexto) ---"); const resposta2 = await chatAgent.processUserMessage("Qual é o seu propósito?"); console.log("Resposta 2:", resposta2.text); // Teste 3: Pergunta sobre conversa anterior console.log("\n--- Teste 3: Pergunta sobre conversa anterior ---"); const resposta3 = await chatAgent.processUserMessage("O que eu perguntei para você primeiro?"); console.log("Resposta 3:", resposta3.text); // Teste 4: Adicionando ferramentas console.log("\n--- Teste 4: Adicionando ferramentas ---"); // Definição da ferramenta de previsão do tempo const weatherTool = { name: "obter_previsao_tempo", description: "Obtém a previsão do tempo para uma cidade", parameters: { type: "OBJECT", properties: { cidade: { type: "STRING", description: "Nome da cidade" } }, required: ["cidade"] }, function: async (args) => { // Simulação de resposta return { cidade: args.cidade, temperatura: "25°C", condicao: "Ensolarado", umidade: "60%" }; } }; // Adiciona a ferramenta ao agente chatAgent.tools = [weatherTool]; // Teste 4: Usando a ferramenta de previsão do tempo (com processamento automático de function calls) console.log("\n--- Teste 4: Usando a ferramenta de previsão do tempo ---"); const resposta4 = await chatAgent.processUserMessage("Como está o tempo em São Paulo hoje?"); console.log("Resposta 4:", resposta4.text); // Não é mais necessário verificar e processar manualmente a function call // O método processUserMessage já faz isso automaticamente // Teste 5: Verificando memória de longo prazo console.log("\n--- Teste 5: Verificando memória de longo prazo ---"); const resposta5 = await chatAgent.processUserMessage("Qual foi a temperatura em São Paulo que você me informou?"); console.log("Resposta 5:", resposta5.text); // Teste 6: Limpando histórico console.log("\n--- Teste 6: Limpando histórico ---"); chatAgent.clearHistory(); const resposta6 = await chatAgent.processUserMessage("Do que estávamos falando antes?"); console.log("Resposta 6:", resposta6.text); // Teste 7: Iniciando nova conversa após limpar histórico console.log("\n--- Teste 7: Nova conversa após limpar histórico ---"); const resposta7 = await chatAgent.processUserMessage("Olá novamente! Você se lembra de mim?"); console.log("Resposta 7:", resposta7.text); // Teste 8: Adicionando outra ferramenta console.log("\n--- Teste 8: Adicionando outra ferramenta ---"); // Definição da ferramenta de calculadora const calculatorTool = { name: "calcular", description: "Realiza cálculos matemáticos", parameters: { type: "OBJECT", properties: { expressao: { type: "STRING", description: "Expressão matemática a ser calculada" } }, required: ["expressao"] }, function: async (args) => { try { // AVISO: eval é usado apenas para demonstração // Em um ambiente de produção, use uma solução mais segura const resultado = eval(args.expressao); return { expressao: args.expressao, resultado: resultado }; } catch (error) { return { expressao: args.expressao, erro: error.message }; } } }; // Adiciona a ferramenta ao agente chatAgent.tools = [weatherTool, calculatorTool]; // Teste 9: Usando a ferramenta de calculadora (com processamento automático de function calls) console.log("\n--- Teste 9: Usando a ferramenta de calculadora ---"); const resposta9 = await chatAgent.processUserMessage("Quanto é 123 + 456?"); console.log("Resposta 9:", resposta9.text); // Não é mais necessário verificar e processar manualmente a function call // O método processUserMessage já faz isso automaticamente console.log("\nTestes concluídos!"); } // Executa o teste testChatAgent().catch(error => { console.error("Erro durante o teste:", error); });