8000 GitHub - foreveryh/mentis: Mentis: A powerful multi-agent orchestration framework built on LangGraph.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

foreveryh/mentis

Repository files navigation

Mentis - Agent Development Kit

Python Version License: MIT

概述 (Overview)

Mentis 是一个基于 LangGraph 构建的、可扩展的多 Agent ADK(Agent Development Kit)。它的核心是一个状态驱动的规划型 Supervisor Agent,负责理解用户复杂请求、制定执行计划,并智能地协调一组具有不同专业能力的子 Agent (Specialist Agents) 来共同完成任务。

此框架旨在实现复杂任务的自动化处理,通过 Agent 间的协作提供比单一 Agent 更强大、更灵活的问题解决能力。

核心特性 (Core Features)

  • Multi-Agent 架构: 采用中心化的 Supervisor 协调多个专门的子 Agent (如 Research, Coder, Reporter, Designer, Data Analyst)。
  • State-Based Planning: 引入独立的 Planner 节点负责初始规划,Supervisor 专注于基于计划状态的执行和调度,Evaluator 节点负责评估子 Agent 结果并更新状态。计划状态通过 LangGraph 持久化(需配置 Checkpointer)。
  • 模块化 Agent 设计: 基于 BaseAgentReactAgent 构建,易于添加或修改具有不同能力的子 Agent。
  • 工具注册与管理: 通过 core/tools/registry.py 实现工具的集中注册、分类和动态加载。
  • 可配置 LLM: 支持通过 LLMManager (或环境变量) 配置和切换不同的 LLM Provider (OpenAI, DeepSeek, XAI Grok via compatible endpoint) 和模型。
  • 持久化支持: 基于 LangGraph 的 Checkpointer 机制,可以实现对话状态和计划的持久化。
  • 清晰的执行流程: Planner -> Supervisor -> (Handoff -> Agent -> Evaluator -> Supervisor 循环) -> 最终输出/Reporter。
  • A2A 协议支持: 实现了 Google 的 Agent-to-Agent (A2A) 协议,使 Mentis Agents 能够与其他支持 A2A 协议的系统进行互操作。

架构概览 (Architecture Overview)

  1. 用户请求 (Input): 用户通过入口点 (main.py 或 API) 提交任务请求。
  2. 规划节点 (Planner Node): 分析请求,生成一个包含任务步骤、建议 Agent 的初始计划 (Plan),并更新到图状态 (PlanningAgentState)。
  3. 主管节点 (Supervisor Node): 接收带有计划的状态,根据计划状态和消息历史决定下一步行动:
    • 启动新任务 (标记 'in_progress')。
    • 委派 'in_progress' 的任务给合适的子 Agent (通过 Handoff 工具)。
    • 等待子 Agent 完成。
    • 判断计划是否最终完成。
    • 决定最终输出方式(自己总结或调用 Reporter)。
  4. 切换执行器 (Handoff Executor): 处理 Supervisor 发出的 transfer_to_ 工具调用,并将控制权和状态传递给目标子 Agent。
  5. 子 Agent 节点 (Specialist Agent Nodes): 继承自 ReactAgentBaseAgent,执行具体的任务(研究、编码、生成报告/图像、数据分析),可能调用其自身的工具。
  6. 评估节点 (Evaluate Result Node): 接收子 Agent 的执行结果,进行确定性评估(成功/失败),更新对应任务的状态和 Plan 的整体状态。
  7. 循环与结束: 流程在 Evaluator -> Supervisor 之间循环,直到 Supervisor 判断 Plan 完成,然后路由到 ENDReporterAgent

快速开始 (Getting Started)

1. 环境设置 (Prerequisites)

  • Python 3.11+
  • 使用 pipuv 等工具管理依赖。

2. 安装依赖 (Installation)

在项目根目录运行: 建议使用 uv 管理

uv venv
source .venv/bin/activate
uv sync
# pip install -r requirements.txt 
# 或者 uv pip install -r requirements.txt

(requirements.txt 我没维护,请确保 requirements.txt 文件包含了所有必要的库,如 langchain, langgraph, langchain-openai, e2b (如果使用 E2B), replicate (如果使用 Replicate), tavily-python, exa-py, python-dotenv, anyio, tiktoken 等)。

3. 配置环境 (Configuration)

  • 复制 .env.example 文件为 .env
  • .env 文件中填入您所需的 API Keys/Tokens:
    • OPENAI_API_KEY (如果使用 OpenAI 模型)
    • DEEPSEEK_API_KEY (如果使用 DeepSeek 模型)
    • XAI_API_KEY (如果使用 XAI Grok,并确认 Base URL)
    • REPLICATE_API_TOKEN (如果使用 Replicate 工具)
    • E2B_API_KEY (如果使用 E2B Code Interpreter,推荐!)
    • TAVILY_API_KEY (如果使用 Tavily 搜索,推荐!)
    • EXA_API_KEY (如果使用 Exa 搜索)
    • LANGCHAIN_TRACING_V2="true" (强烈推荐,用于 LangSmith 调试)
    • LANGCHAIN_API_KEY="ls_..." (您的 LangSmith Key)
    • LANGCHAIN_PROJECT="Your_Project_Name" (您在 LangSmith 上的项目名)
  • LLM 配置:
    • 如果您使用了 LLMManager(如示例所示),请检查并配置其读取的模型配置文件(例如 config/models.yaml,路径可能不同)。
    • 如果您在 tools.py 中直接根据环境变量初始化 LLM,请确保设置了对应的环境变量,如 LLM_PROVIDER, LLM_MODEL_NAME, LLM_BASE_URL (用于兼容 API)。
  • 工具配置: 确保 core/tools/__init__.pyregistry.py 中的工具预注册逻辑能够正确找到并初始化您需要的工具。

4. 运行示例 (Running Examples)

项目包含示例脚本以演示框架的使用:

# 从项目根目录 (mentis/) 运行
python examples/state_based_supervisor_examples/03_multi_agents.py 

脚本会提示您输入初始请求。您可以进行简单尝试:

  • "What is the capital of France?" (简单测试)
  • "Write a short, four-line poem about spring." (测试 Reporter)
  • "Generate an image of a cat wearing a top hat, oil painting style." (测试 Designer)
  • "Write a Python function to calculate factorial and run it for 5." (测试 Coder)

项目结构 (Project Structure)

mentis/
├── api/             # (可选) API 服务相关代码
├── core/            # 核心框架代码
│   ├── a2a/         # A2A 协议的客户端和服务器实现
│   ├── agents/      # Agent 定义 (base, react, supervisor, sub-agents)
│   │   ├── base/
│   │   ├── state_based_supervisor/ # Supervisor 相关 (graph, node, planner, evaluator)
│   │   ├── sub_agents/             # 具体子 Agent 实现 (research, coder, etc.)
│   │   └── sb_supervisor_agent.py  # SupervisorAgent 类定义
│   ├── llm/         # (可选) LLM 管理或配置
│   ├── tools/       # 工具定义和注册表 (registry, e2b, replicate, etc.)
│   └── utils/       # 通用辅助函数
├── examples/        # 示例和测试脚本
│   └── state_based_supervisor_examples/
│       └── 03_multi_agents.py # 我们使用的测试脚本
├── super_agents/    # 独立功能型 Agent 实现
│   └── deep_research/ # DeepResearch Agent 实现
│       └── a2a_adapter/ # DeepResearch 的 A2A 协议适配器
├── web/             # (可选) Web 客户端代码
├── web_for_a2a/     # 基于 A2A 协议的 Web 界面
├── .env.example     # 环境变量示例
├── requirements.txt # Python 依赖
└── README.md        # 本文件

Super Agents (独立功能型 Agent)

除了由 Supervisor 协调的、专注于单一技能的 Specialist Agents (如 Coder, Researcher) 之外,本框架也支持构建和集成更复杂的 "Super Agents"

Super Agent 可以理解为一个独立的、具有端到端能力、能够完成一个相对完整且复杂任务的 Agent 图。它可以包含自己的规划、执行、甚至内部协调逻辑。

这些 Super Agents 既可以独立运行以完成特定的大型任务,也可以被更高层的协调者(例如我们的 Supervisor Agent)**视为一种强大的“能力”或“工具”**来调用,以处理其复杂计划中的某个步骤。

DeepResearch Agent (第一个实例)

deepresearch.mov

DeepResearch Agent 是我们在此框架理念下实现的第一个 Super Agent 实例(其早期版本是我们开发此 Multi-Agent 框架的基础)。

  • 核心功能: 旨在针对用户给定的任意主题,自动化地执行一个深度研究流程。
  • 内部工作流: 它包含自己的一套完整的内部步骤,大致如下:
    1. 研究规划 (Plan Research): 分析主题,生成初步的搜索查询和分析点。
    2. 多源搜索 (Multi-Source Search): 调用网页搜索 (Tavily)、学术搜索 (Exa) 等工具获取信息。
    3. (可选) 分析执行 (Perform Analysis): 对搜索结果进行初步分析(如情感、SWOT 等)。
    4. 差距分析 (Gap Analysis): 评估已有信息,识别知识空白和局限性。
    5. (可选) 补充搜索 (Gap Filling): 针对知识空白进行额外的、更具针对性的搜索。
    6. 最终综合 (Final Synthesis): 整合所有信息,提炼关键发现和不确定性。
    7. 报告生成 (Report Generation): 将综合结果和上下文信息,撰写成一份详细的、带引用的 Markdown 研究报告。
  • 当前状态: 该 Agent 的核心逻辑和节点已基本实现,并且现在支持 A2A 协议和专用 Web 界面。

A2A 协议支持

我们为 DeepResearch Agent 实现了完整的 A2A 协议适配器,使其能够:

  • 作为标准的 A2A 服务被发现和调用
  • 通过 tasks/sendtasks/sendSubscribe 端点接收研究任务
  • 提供实时的流式研究进度更新
  • 返回结构化的研究结果
  • 支持推送通知机制

这使得 DeepResearch Agent 可以轻松地与其他支持 A2A 协议的系统(如 Google Assistant)集成,或者被自定义的前端应用调用。

专用 Web 界面

4.15.mov

我们还开发了一个基于 Next.js 的现代 Web 界面,专门用于与 DeepResearch A2A 服务交互:

  • 提供直观的用户界面,用于输入研究主题和启动研究任务
  • 实时显示研究进度和中间更新(通过 Server-Sent Events)
  • 美观地展示最终生成的研究报告
  • 演示了如何在前端应用中使用浏览器原生 API 处理 A2A 流式响应

如何体验 DeepResearch Agent:

  1. 独立运行模式:

    • 确保环境配置: 确认您的 .env 文件中包含了所需的所有 API Keys(例如 OPENAI_API_KEY/DEEPSEEK_API_KEY, TAVILY_API_KEY, EXA_API_KEY)。
    • 运行脚本: 在项目根目录执行:
      python super_agents/deep_research/main.py
    • 输入主题并查看结果: 生成的报告通常会保存在 output/ 文件夹中。
  2. A2A 服务模式:

    • 启动 A2A 服务器:
      cd super_agents/deep_research/a2a_adapter
      python run_server.py
    • 服务器将在默认端口(通常是 8000)启动,并提供符合 A2A 规范的 API 端点。
  3. Web 界面模式:

    • 确保 A2A 服务器正在运行
    • 启动 Web 界面:
      cd web_for_a2a
      npm install
      npm run dev
    • 在浏览器中访问 http://localhost:3000/deepresearch 使用图形界面与 DeepResearch Agent 交互。

未来工作 (Future Work / Contributing)

  • 完善子 Agent 的工具集和 Prompt。
  • 增强 Evaluator Node 的评估逻辑。
  • 添加更复杂的任务依赖处理。
  • 优化长对话历史的管理。
  • 集成持久化 Checkpointer (如 SQLite, Redis)。
  • 欢迎提出 Issue 或 Pull Request!
  • 有问题也可以添加我的微信 brown🩷cony999

许可证 (License)

This project is licensed under the MIT License - see the LICENSE file for details.

About

Mentis: A powerful multi-agent orchestration framework built on LangGraph.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0