ForcePilot/src/agents/reporter/graph.py

39 lines
1.4 KiB
Python
Raw Normal View History

from langchain.agents import create_agent
2025-11-05 16:22:51 +08:00
from src import config
from src.agents.common import BaseAgent, get_mcp_tools, load_chat_model
from src.agents.common.middlewares import context_aware_prompt, context_based_model
from src.agents.common.toolkits.mysql import get_mysql_tools
from src.utils import logger
_mcp_servers = {"mcp-server-chart": {"command": "npx", "args": ["-y", "@antv/mcp-server-chart"], "transport": "stdio"}}
class SqlReporterAgent(BaseAgent):
2025-11-02 01:15:36 +08:00
name = "数据库报表助手"
description = "一个能够生成 SQL 查询报告的智能体助手。同时调用 Charts MCP 生成图表。"
def __init__(self, **kwargs):
super().__init__(**kwargs)
async def get_tools(self):
chart_tools = await get_mcp_tools("mcp-server-chart", additional_servers=_mcp_servers)
mysql_tools = get_mysql_tools()
return chart_tools + mysql_tools
async def get_graph(self, **kwargs):
if self.graph:
return self.graph
# 创建 SqlReporterAgent
graph = create_agent(
2025-11-05 16:22:51 +08:00
model=load_chat_model(config.default_model), # 默认模型,会被 middleware 覆盖
tools=await self.get_tools(),
middleware=[context_aware_prompt, context_based_model],
checkpointer=await self._get_checkpointer(),
)
self.graph = graph
logger.info("SqlReporterAgent 构建成功")
return graph