ForcePilot/src/agents/chatbot/context.py

43 lines
1.6 KiB
Python
Raw Normal View History

from dataclasses import dataclass, field
from typing import Annotated
from src.agents.common import BaseContext, gen_tool_info
from src.knowledge import knowledge_base
from src.services.mcp_service import get_mcp_server_names
from .tools import get_tools
@dataclass(kw_only=True)
class Context(BaseContext):
tools: Annotated[list[dict], {"__template_metadata__": {"kind": "tools"}}] = field(
default_factory=list,
metadata={
"name": "工具",
"options": lambda: gen_tool_info(get_tools()), # 这里的选择是所有的工具
"description": "内置的部分工具,包含 common 工具和本智能体的特有工具(不含 MCP",
},
)
knowledges: list[str] = field(
default_factory=list,
metadata={
"name": "知识库",
"options": lambda: [k["name"] for k in knowledge_base.get_retrievers().values()],
"description": "知识库列表,可以在左侧知识库页面中创建知识库。",
"type": "list", # Explicitly mark as list type for frontend if needed
},
)
mcps: list[str] = field(
default_factory=list,
metadata={
"name": "MCP服务器",
"options": lambda: get_mcp_server_names(),
"description": (
"MCP服务器列表建议使用支持 SSE 的 MCP 服务器,"
"如果需要使用 uvx 或 npx 运行的服务器,也请在项目外部启动 MCP 服务器,并在项目中配置 MCP 服务器。"
),
},
)