Skip to main content
Glama

Financial AI Agent System

by NBWolfer
master-server.js3.76 kB
// master-server.js import express from 'express'; import { ChatOllama } from "@langchain/community/chat_models/ollama"; import { HumanMessage, SystemMessage } from "@langchain/core/messages"; // Artık LangChain'in tool-calling özelliklerine ihtiyacımız yok import { PortfolioAnalysisTool, RiskAnalysisTool, GeneralChatbotTool } from './tools.js'; // --- Kurulum --- const app = express(); app.use(express.json()); const PORT = 8001; // Sadece temel LLM'e ihtiyacımız var const llm = new ChatOllama({ model: "gemma3:4b", baseUrl: "http://127.0.0.1:11434" }); // Kullanılabilir araçları (Uzman Ajanları) tanımla const tools = [ new PortfolioAnalysisTool(), new RiskAnalysisTool(), new GeneralChatbotTool(), ]; // --- API Endpoint --- app.post('/master-agent', async (req, res) => { const { query, oid } = req.body; if (!query) { return res.status(400).json({ error: "Sorgu (query) eksik." }); } console.log(`\n--- Master Agent'a yeni sorgu geldi: "${query}" ---`); try { // --- MANUEL YÖNLENDİRME MANTIĞI --- // Adım 1: LLM için talimatları ve araç listesini içeren bir prompt oluştur. // Araçların açıklamalarını doğrudan prompt'un içine gömüyoruz. const toolDescriptions = tools.map(t => `- ${t.name}: ${t.description}`).join('\n'); const routerPrompt = ` Sen bir yapay zeka yönlendiricisisin. Görevin, kullanıcının sorgusunu analiz edip aşağıdaki listeden en uygun aracın adını seçmektir. Yanıt olarak SADECE ve SADECE seçtiğin aracın adını yazmalısın. Başka hiçbir açıklama, selamlama veya metin ekleme. İşte araçların listesi: ${toolDescriptions} Eğer emin değilsen veya soru genel bir sohbet ise, 'general_chatbot_agent' adını seç. `; // Adım 2: LLM'e bu talimatla birlikte kullanıcı sorgusunu gönder. const messages = [ new SystemMessage(routerPrompt), new HumanMessage(query), ]; const response = await llm.invoke(messages); // Gelen yanıtın içeriğini temizleyip araç adı olarak alıyoruz. const chosenToolName = response.content.trim(); console.log(`Master Agent karar verdi: "${chosenToolName}" aracı kullanılacak.`); // Adım 3: Gelen metin yanıtına göre aracı bul ve çalıştır. const chosenTool = tools.find(t => t.name === chosenToolName); if (chosenTool) { const tool_input = chosenToolName === "general_chatbot_agent" ? query : oid; if (!tool_input && chosenToolName !== "general_chatbot_agent") { return res.status(400).json({ error: `Bu işlem için 'oid' gereklidir.`, source: chosenToolName }); } const toolResult = await chosenTool.call(tool_input); return res.json({ source: chosenToolName, response: toolResult }); } else { // Eğer LLM geçersiz bir araç adı döndürürse, varsayılan olarak sohbet botunu çalıştır. console.log(`Geçersiz araç adı "${chosenToolName}". Varsayılan sohbete yönlendiriliyor.`); const fallbackTool = new GeneralChatbotTool(); const toolResult = await fallbackTool.call(query); return res.json({ source: 'fallback_chatbot', response: toolResult }); } } catch (error) { console.error("Master agent'ta bir hata oluştu:", error); res.status(500).json({ error: "Master agent'ta bir sunucu hatası oluştu.", details: error.message }); } }); app.listen(PORT, () => { console.log(`Node.js Master Agent Sunucusu http://127.0.0.1:${PORT} adresinde çalışıyor.`); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NBWolfer/mcpServerNode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server