feat:接入mcp,为模型提供图表信息

This commit is contained in:
2026-10-01 06:33:44 -07:00
parent 618290d852
commit f1b2a70ad1
44 changed files with 6531 additions and 207 deletions
+19
View File
@@ -58,6 +58,21 @@ class Settings:
default_factory=lambda: int(os.getenv("MAX_ACTION_RETRIES", "2"))
)
# 物料字段 MCP 服务:只给模型查询字段定义,只监听本机,随应用启动
mcp_material_url: str = field(
default_factory=lambda: (
os.getenv("MCP_MATERIAL_URL") or "http://127.0.0.1:8201/mcp"
)
)
# 单次字段查询的超时(秒)
mcp_tool_timeout: float = field(
default_factory=lambda: float(os.getenv("MCP_TOOL_TIMEOUT", "5"))
)
# 生成动作或修正建议时,最多几轮查询字段,之后必须给出结果
max_field_tool_rounds: int = field(
default_factory=lambda: int(os.getenv("MAX_FIELD_TOOL_ROUNDS", "4"))
)
# 没有任何对话的空会话保留时长(秒),超时后视为不存在
conversation_empty_ttl: int = field(
default_factory=lambda: int(os.getenv("CONVERSATION_EMPTY_TTL", "7200"))
@@ -113,6 +128,10 @@ class Settings:
raise ValueError("CONVERSATION_HISTORY_TURNS 必须是非负整数")
if type(self.max_action_retries) is not int or self.max_action_retries < 0:
raise ValueError("MAX_ACTION_RETRIES 必须是非负整数")
if self.mcp_tool_timeout <= 0:
raise ValueError("MCP_TOOL_TIMEOUT 必须是正数")
if self.max_field_tool_rounds < 0:
raise ValueError("MAX_FIELD_TOOL_ROUNDS 必须是非负整数")
if not 0 <= self.intent_min_probability <= 1:
raise ValueError("INTENT_MIN_PROBABILITY 必须在 0 到 1 之间")
if not 0 <= self.intent_qa_min_probability <= 1: