UNPKG

@oliverlessa/gemini-agent-lib

Version:

Uma biblioteca NodeJS para criar agentes de IA com Gemini LLM

58 lines (53 loc) 2.35 kB
// tools/weather-tool.js const ToolBuilder = require('../tool-builder'); const FunctionDeclarationSchemaType = require('../function-declaration-schema-type'); const debug = require('../debug').tools; /** * Implementação da função de clima * @param {Object} args - Argumentos da função * @returns {Object} - Dados meteorológicos */ function weatherImplementation(args) { debug(`Chamada para get_weather com args: %o`, args); // Retorna dados meteorológicos fictícios return { location: args.location, temperature: Math.floor(Math.random() * 30) + 5, // 5-35°C unit: args.unit || "celsius", conditions: ["ensolarado", "nublado", "chuvoso", "tempestuoso"][Math.floor(Math.random() * 4)], humidity: Math.floor(Math.random() * 60) + 30, // 30-90% wind: Math.floor(Math.random() * 30), // 0-30 km/h forecast: [ { day: "hoje", temp: Math.floor(Math.random() * 30) + 5, conditions: "ensolarado" }, { day: "amanhã", temp: Math.floor(Math.random() * 30) + 5, conditions: "parcialmente nublado" }, { day: "depois de amanhã", temp: Math.floor(Math.random() * 30) + 5, conditions: "chuvoso" } ] }; }; // Cria a factory da tool usando ToolBuilder const weatherTool = ToolBuilder.createTool("weather", "Obtém informações meteorológicas de hoje ou de até dois dias adiante para uma localização específica") .addParameter("location", "string", "Nome da cidade ou localização", { required: true }) .addParameter("unit", "string", "Unidade de temperatura (opcional)", { enum: ["celsius", "fahrenheit"] }) .setFunction(weatherImplementation) .createFactory({ // Configurações padrão unit: "celsius" }); /** * Factory function para criar instâncias da tool Weather * com configurações personalizadas. * * @param {Object} config - Configurações personalizadas para a tool * @param {string} config.unit - Unidade de temperatura padrão (opcional, padrão: 'celsius') * @returns {Object} - Instância configurada da tool Weather * * @example * // Uso básico (com valores padrão) * const defaultTool = weatherTool(); * * // Uso com configurações personalizadas * const fahrenheitTool = weatherTool({ * unit: 'fahrenheit' * }); */ module.exports = weatherTool;