PraisonAI — 总览与阅读地图
30 秒导读: PraisonAI 是一个 Python 优先的多智能体框架——目标是让你用几行代码就组建起一支能自己研究、规划、执行任务的「AI 团队」。本章是这组文档的入口:先讲清它是什么,再给一张五层全景图,把
team.start()从任务图到输出走一遍,最后列出 01-06 章的阅读顺序。具体机制不在本章展开,交给后续各章。
1. 这是什么(零基础也能懂)
一句话定义: PraisonAI 是一个用来「搭建并运行 AI 智能体」的 Python 库——从单个智能体,到一整支互相分工的智能体团队,核心卖点是 README 里那句 "deployed in 5 lines of code"(README.md:26)。
解决谁的什么问题: 假设你想让 AI 帮你做一件多步骤的活——先上网查资料、再整理、再写成文章。你不想自己手写「调模型 → 解析工具调用 → 把上一步结果喂给下一步」这些胶水代码。PraisonAI 把这套胶水打包好了:你只描述每个智能体是谁、要干什么,它负责把它们串起来跑。
最小示例长什么样: 三段真实的 README 代码,从单体到团队递进:
# 单个 Agent —— 给它一个目标,它自己干
from praisonaiagents import Agent
agent = Agent(instructions="You are a senior data analyst.")
agent.start("Analyze the top 3 tech trends of 2026 and format as a markdown table.")
# 多个 Agent 组队 —— 默认按顺序接力
from praisonaiagents import Agent, Agents
research_agent = Agent(instructions="Research about AI")
summarise_agent = Agent(instructions="Summarise research agent's findings")
agents = Agents(agents=[research_agent, summarise_agent])
agents.start()
# 确定性流水线 AgentFlow —— 步骤写死,一步接一步
from praisonaiagents import AgentFlow, Agent
flow = AgentFlow(steps=[Agent(instructions="Write content"),
Agent(instructions="Edit content")])
result = flow.run("Write about AI")
上面三段分别对应本框架的三种用法,依据:README.md:99-105、README.md:250-257、workflows/workflows.py:561-568 的类 docstring。
一句话直觉: 把 Agent 想成一名员工,Task 是派给他的一张工单,AgentTeam 是把几名员工编成一个组、按流程叫号干活的组长。你写的是「组织架构」,框架负责「叫号执行」。
⚠ 一处必须先破的误解:仓库根目录的
ARCHITECTURE.md大量是「愿景/规划」,不是现状。 它开篇自称「Strategic architecture document」并覆盖「2-quarter road map」(ARCHITECTURE.md:5-7),第 8 节整张 Implementation Roadmap 把 Doctor Auto-Fix、Golden-Path CLI、Graph Studio 等一律标为 Planned(ARCHITECTURE.md:379-397),还提到 TypeScript / Rust SDK 等本克隆里并不完整的东西。本组文档一律以src/praisonai-agents/praisonaiagents下的真实 Python 代码为准,不采信 ARCHITECTURE.md 的前瞻描述。凡与真源码冲突,以源码为准。
2. 顶层全景(它大概怎么转)
2.1 五大层怎么读这张图
从上到下是依赖方向:上层调用下层,下层不知道上层。最上面两条(编排器)是并行的两种范式,不是上下级——你要么用团队,要么用流水线。
怎么读:从上往下是「谁调用谁」;顶部两个盒子是二选一的两条编排路线。
┌─────────────────────────┐ ┌─────────────────────────┐
│ 编排器范式 A:AgentTeam │ │ 编排器范式 B:AgentFlow │
│ + Process(叫号执行) │ │ (步骤写死的确定性流水线) │
│ team.start() │ │ flow.run() │
└───────────┬─────────────┘ └───────────┬─────────────┘
│ 都落到 │
▼ ▼
┌───────────────────────────────────────────┐
│ Task —— 工作单元(一张工单:描述+归属Agent) │
└───────────────────┬───────────────────────┘
▼
┌───────────────────────────────────────────┐
│ Agent —— 单体(chat 主循环:指令+工具+记忆) │
└──────────┬──────────────────┬─────────────┘
▼ ▼
┌────────────────┐ ┌────────────────────────┐
│ Tools / MCP │ │ LLM 层(双路径调模型) │
│ (模型的手脚) │ │ 原生OpenAI | LiteLLM │
└────────────────┘ └────────────────────────┘
▲ ▲
┌──────────┴──────────────────┴─────────────┐
│ 外围子系统:Memory / Knowledge(RAG) / │
│ Guardrails / Session / Telemetry … │
└────────────────────────────────────────────┘
2.2 各层一句话职责
| 层 | 干什么 | 在哪(相对 praisonaiagents/) | 本组对应章 |
|---|---|---|---|
| Agent 单体 | 一个智能体的 chat 主循环:拼提示 → 调 LLM → 解析工具调用 → 回结果 | agent/agent.py(Agent 类,行 219) | 01 |
| Task 工作单元 | 一张「工单」:任务描述 + 归属哪个 Agent + 上下文/下一步 | task/task.py(Task 类,行 21) | 04 |
| 编排器 A:AgentTeam + Process | 把多个 Agent/Task 按 sequential / hierarchical / workflow 叫号跑 | agents/agents.py(AgentTeam,行 554)、process/process.py(Process,行 20) | 04 |
| 编排器 B:AgentFlow | 步骤写死的确定性流水线,配 route/parallel/loop/repeat 条件 | workflows/workflows.py(AgentFlow,行 555) | 05 |
| 工具 / MCP | 给模型「手脚」:本地 @tool 函数、或经 MCP 挂外部工具 | tools/、mcp/mcp.py | 02 |
| LLM 层 | 真正调模型,双路径 + 多 provider 容错 | llm/ | 03 |
| 外围子系统 | 记忆、知识、护栏、会话、遥测等可选能力 | memory/、knowledge/、guardrails/ … | 06 |