多代理循环查询助手

一个利用Google Gemini模型、MCP工具服务器和检索管道来回答用户查询的多代理循环系统。

  • by RoyRushreeta
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 RoyRushreeta/tsai-s10-multi-agent-orchestration

使用说明

代理查询助手

该项目编排了一个多代理循环,使用Google Gemini模型、MCP工具服务器和检索管道回答用户查询。核心流程:

  1. 感知:理解查询,用之前的会话记忆作为基础。
  2. 检索器:可选的检索计划器,决定是否需要额外的上下文,并从MCP工具(如DuckDuckGo搜索或本地RAG)中获取。
  3. 决定:计划并执行工具/代码步骤,同时重用检索到的上下文和会话数据。
  4. 行动:通过执行沙盒Python action/executor.py,安全地调用MCP工具。
  5. 批评家:使用Gemini提示进行稳健评估,从语义上评估每个步骤以确定进度。
  6. 内存和日志记录: AgentSession 记录感知快照、计划、步骤评估和检索器计划,以实现完全可追溯性。

关键组件

  • main.py:CLI入口点连接MCP服务器并运行 AgentLoop.
  • agent/agent_loop2.py:感知的异步编排→ 检索→ 决定→ 行动→ 批评周期。
  • retriever/retriever.py:提示驱动的计划器,返回上下文片段并发出计划元数据。
  • decision/decision.py双子座驱动的规划者,吸收感知、检索背景和批评反馈。
  • critic/critic.py:将语义LLM评估与启发式回退相结合,用于步骤评分。
  • memory/session_log.py:持久会话跟踪(session_logs/YYYY/MM/DD/*.json).

运行助手

python main.py

您将看到MCP工具发现输出,然后系统会提示您进行查询。每个会话都会生成一个JSON日志 memory/session_logs/ 捕获感知、检索计划、决策步骤、代码执行结果和评论家评估。

配置

  • 编辑 config/mcp_server_config.yaml 添加/删除MCP服务器。
  • 感知、决策和批评的推动者生活在 prompts/ (UTF-8文本)。
  • 环境变量:set GEMINI_API_KEY Gemini接入。

开发说明

  • action/executor.py 注入 retrieved_context/retrieved_context_text 因此,生成的代码可以立即使用提取的片段。
  • 当感知/记忆已经回答问题时,检索器提示会避免冗余的网络调用,并在跳过检索时记录。
  • Critic prompt利用Gemini来防止像通用令牌不匹配这样的假阴性,确保语义评估。

日志和诊断

  • 会话日志现在包括 retriever.plan (原始计划JSON)和 retriever.skipped 旗帜。
  • 内存搜索结果在运行启动期间打印,以提高透明度。
  • LLM速率限制(例如Gemini 429)被困在 decision.py 并报告为NOP步骤,而不是崩溃。

快乐的实验!对于新功能,更新提示和会话日志,以保持代理行为的可解释性。