Designing Multi-Agent Systems(PicoAgents)
从零构建 LLM 多智能体系统:一本书加一套完整可运行的教学框架,带你掌握从单个 Agent 到自主编排的全套核心模式。
证据显示:README 提及审批示例(approval_example.py)、中间件、终止条件和人类在环(human-in-the-loop),说明设计上考虑了工具调用确认;流式事件(TaskStart/ToolCallEvent 等)和数据结构使数据流向较透明,事件类型在测试中可见,得 2。 least_privilege 仅得 1:未见按工具/代理的权限范围声明或默认最小权限配置。 user_confirmation 仅 1:审批示例存在但源文件未展示其强制性与默认行为。 sensitive_data_handling 仅 1:仅指示用环境变量传 API key,无密钥存储/泄漏防护说明。 dependency_security 仅 1:extras 划分合理但无锁定版本、审计或漏洞应对信息。 external_effects 仅 1:计算机使用代理(浏览器自动化)与 SWE 代理涉及真实外部副作用,证据中未见默认防护或同意机制说明。 rollback 仅 1:仅 yc_analysis 提及 checkpointing,作为框架级回滚证据不足。 source_attribution 得 2:作者、书籍与代码路径归属清晰,但发布方身份未经注册表验证,不加分。
self_consistency 得 2:README 与目录结构、测试引用路径一致,测试用 mock 客户端自洽,但 test_agent_as_tool_strategies.py 中有一段混乱的注释(先断言错误值再'修正'预期),暴露测试编写不够严谨,未给 3。 dependency_availability 得 2:支持 OpenAI/Azure/Anthropic/GitHub Models 及本地 OpenAI 兼容端点,多路可用性较好。 failure_messages 仅 1:存在 9 种终止条件的描述,但本批文件中未见具体错误消息质量或异常处理证据。
audience_and_scenarios 得 3:明确面向学习者与开发者,按章节映射场景(基础代理、编排、评估、生产案例),受众与场景界定充分。 capability_boundaries 得 2:框架范围(教学用途、从零实现、与生产框架对比)表述清楚。 trigger_precision 仅 1:这是框架/教程仓库而非 AGENTS.md 清单型代理,无触发词或调用时机规范可言,扣分原因是证据本身缺失。 environment_fit 得 2:提供 Colab、Codespaces、本地 venv 三种环境与可选 extras,适配较全但未涵盖 Windows 细节。
information_architecture 得 3:README 给出完整的目录树、章节-代码映射表,结构清晰可导航。 install_notes 得 3:安装步骤逐步列出(克隆、venv、pip install -e 与 extras、API key 设置)。 naming_stability 得 2:命名一致(picoagents、examples 按章节),但尚无长期命名承诺证据。 examples_and_faq 得 3:50+ 示例、notebook、code_along 渐进教程、框架对比,示例覆盖充分;无 FAQ,未到扣分程度因示例密度高。 known_limitations 仅 1:未见任何局限性声明(如教学实现不适用于生产的明确警示,仅零散提及)。 license 得 3:Apache-2.0 全文在库。 versioning_changelog 仅 1:无版本号或 CHANGELOG 证据。 maintenance_responsibility 得 2:作者个人维护、有配套书籍暗示持续投入,但无明确维护承诺或更新路径文档。
output_usability 得 2:结构化输出(Pydantic)、流式事件、Web UI 与评估仪表盘使输出可用性较好。 marginal_value 得 2:从零实现的教学框架配合跨框架对比(LangGraph、Google ADK、MS Agent Framework)具有差异化价值,但生产就绪性未经执行验证。 cost_benefit 得 2:README 声称两阶段过滤降低 90% 成本等优化,方向合理但数字未在源文件中证明,保守不给 3。
claim_traceability 得 2:几乎所有功能声明都附代码路径链接,可静态追溯。 cross_source_corroboration 得 2:README、测试文件与目录结构互相印证(如 _agent.py、AgentAsTool 在测试中出现),但本批仅含部分文件,无法全面交叉验证。 fact_inference_separation 仅 1:'54% performance gain'、'90% LLM cost reduction'、'production-ready' 等量化声明与事实陈述混杂,未标注来源或评测方法,扣分点明确。
- 保守静态评审,置信度低:未执行任何代码,测试仅静态阅读,不代表可运行或结果正确。
- 计算机使用代理与 SWE 代理具有真实外部副作用(浏览器操作、代码修改),使用前应在沙箱环境运行并自行加入确认机制。
- 量化声明(90% 成本降低、54% 性能提升)在源文件中无评测证据支撑,不应直接采信。
- 无版本号、CHANGELOG 或已知局限性说明;教学实现不应未经加固直接用于生产。
- 依赖未锁定版本,安装前请审查 extras 引入的第三方包。
- API 密钥仅以环境变量方式说明,使用 Web UI 或 MCP Playground 时注意密钥与 JSON-RPC 流量不会意外暴露。
这个 Agent 能做什么,适合哪些场景?
这是 Victor Dibia 所著《Designing Multi-Agent Systems》一书的官方代码仓库,核心是 PicoAgents——一个完全从零实现、以教学为目的的多智能体框架。仓库按书籍章节组织,覆盖 Agent 基础(工具、记忆、流式输出、中间件)、基于 Playwright 的浏览器自动化 Agent、类型安全的工作流引擎、GroupChat/LLM 驱动/计划式三种自主编排模式,以及 LLM-as-judge 评估框架。它自带 FastAPI+SSE 后端与 React Web UI(picoagents ui 命令可自动发现本地 Agent 并提供流式对话、调试栏和运行历史),并内置 MCP Playground 与评估仪表板。模型接入层支持 OpenAI、Azure OpenAI、Anthropic、GitHub Models 以及任意 OpenAI 兼容的本地端点(Ollama、vLLM 等)。核心模式刻意做到框架无关,仓库还提供 LangGraph、Microsoft Agent Framework、Google ADK 的对照实现,便于将所学迁移到生产框架。
仓库由两部分组成。其一为框架源码 picoagents/,包含:核心 Agent 实现(_agent.py,支持流式输出、工具调用、记忆、中间件、human-in-the-loop 审批)、_computer_use 浏览器自动化模块(navigate/click/type/scroll/extract 等工具)、基于 DAG 的工作流引擎、三种编排器(round-robin、LLM 驱动选人、Magentic One 风格的计划式编排)、15+ 内置工具、9 种终止条件、评估模块(LLM-as-judge、参考答案比对、组合评分)、OpenAI/Azure/Anthropic 模型客户端。其二为 examples/ 下 50+ 按章节组织的可运行示例,包括 fastapi+SSE 的 Agent UX 应用、5,000+ 公司分析的生产级工作流(含两阶段过滤实现约 90% 成本削减、检查点恢复)、完整软件工程 Agent 等。安装后运行 picoagents ui 即可启动自动发现本地 Agent/编排器/工作流的 Web UI,并连接 MCP 服务器进行工具调用调试。
- 工程师想真正理解多智能体系统内部原理,而不是黑盒调用某个框架——从零实现的教学路径适合系统学习。
- 团队在 LangGraph、AutoGen/Agent Framework、Google ADK 之间选型,需要用同一组模式做横向对照评估。
- 需要构建带流式输出、工具审批(human-in-the-loop)和 OpenTelemetry 可观测性的生产级 Agent 应用。
- 需要浏览器自动化 Agent,用多模态视觉模型执行导航、点击、抽取内容等操作。
- 数据团队需要对数千条非结构化记录做批量 LLM 分析,并要求成本优化与检查点恢复能力。
- 需要搭建 Agent 评估体系(LLM-as-judge、参考比对、批量运行与指标收集)的工程团队。
这个 Agent 有哪些优点和局限?
- 从零实现、代码完整且有测试,每个抽象(Agent 循环、工具、记忆、编排、评估)都透明可读,是同类资料中少见的教学级源码。
- 框架无关:核心模式可在 LangGraph、Microsoft Agent Framework、Google ADK 中复用,仓库直接提供三者对照实现,避免锁定与 API 过时问题。
- 模型客户端覆盖 OpenAI、Azure、Anthropic、GitHub Models(免费层)及任意 OpenAI 兼容本地端点,切换成本低。
- 附带生产级实践案例:两阶段过滤带来约 90% 成本削减、检查点可恢复工作流、Think 工具带来 54% 性能提升。
- 开箱即用的 Web UI 与 CLI(picoagents ui)支持自动发现、SSE 流式、MCP Playground 与评估仪表板。
- 示例依赖 API key(默认 OpenAI),运行会产生 LLM 调用成本;无 key 时大部分示例无法运行。
- PicoAgents 是教学框架,生产采用需自行评估其长期维护与社区成熟度;书籍正文需另行购买。
- 浏览器自动化依赖 Playwright 及额外安装(pip install -e ".[computer-use]"),部分功能(persist、otel、dev、frameworks)不在 [all] 中,需要单独安装。
- 持久化与 OpenTelemetry 等生产可观测功能需要额外 extras,默认安装不含这些能力。
如何安装或部署这个 Agent?
需要 Python 和 OpenAI API key。本地安装:
git clone https://github.com/victordibia/designing-multiagent-systems.git
cd designing-multiagent-systems/picoagents
python -m venv venv && source venv/bin/activatepip install -e . # 基础安装
pip install -e ".[all]" # 含 web、mcp、computer-use、examples 等可选功能
export OPENAI_API_KEY="your-key"也可点击 README 中的 GitHub Codespaces 徽章在浏览器中获得预配置环境(免费额度每月 60 小时),或直接用各章节的 Colab 徽章免安装运行 Notebook。
如何使用这个 Agent?
1) 运行首个 Agent:python examples/agents/basic-agent.py;2) 启动 Web UI:picoagents ui(或指定目录 picoagents ui --dir ./examples),UI 会自动发现当前目录中的 Agent、编排器和工作流,提供流式聊天、调试栏、运行历史、MCP Playground 和评估仪表板;3) 用 Python API 创建 Agent:from picoagents import Agent, OpenAIChatCompletionClient,构造 Agent(name, instructions, model_client, tools=[...]) 后 await agent.run(...);4) 切换模型供应商只需更换客户端类或 base_url(如 Ollama 用 OpenAIChatCompletionClient(model="llama3.2", base_url="http://localhost:11434/v1"));5) 浏览器自动化:python examples/agents/computer_use.py;编排示例:python examples/orchestration/round-robin.py。
这个 Agent 与同类方案有什么区别?
仓库自身将 PicoAgents 与 LangGraph、Microsoft Agent Framework、Google ADK 做了同任务对照实现,结论是核心模式互通;PicoAgents 的差异点在于从零实现、适合学习原理,而生产部署通常迁移到上述成熟框架。