Agent 框架选型
先说结论性观点:Agent 的核心循环(LLM + 工具调用 + 状态注入)简单到不值得恐惧,也简单到不必急着上框架。框架的价值在工程外围(状态持久化、恢复、流式、观测),而不在"让模型更聪明"。
自研:百行循环的底气
回顾什么是 Agent 中的骨架:一个 while 循环、工具分发、上下文拼装,核心逻辑不足百行。适合自研的情形:
- 工具数量少(个位数)、流程相对固定;
- 对延迟、成本、日志格式有强定制要求;
- 团队希望彻底掌控行为细节(排障不需要穿透框架抽象)。
自研的真实成本不在循环本身,而在外围:流式输出、断点恢复、并行工具、轨迹存储、重试语义——这些框架已经打磨过的东西。评估时按这些清单估工作量,而不是按"循环很简单"低估整体。
主流框架画像
LangGraph:图状态机
把 Agent 建模为节点(步骤)+ 边(转移)+ 共享 State 的图。每个节点可以是一个 LLM 调用、工具执行或纯代码;State 显式定义并全程流转。
- 优点:流程结构显式可见、天然支持条件分支与循环、状态可持久化(checkpoint)与恢复(time travel 调试)、人工介入点(human-in-the-loop)是一等公民;
- 代价:学习曲线偏陡,State 设计需要前期投入;
- 适合:需要精细流程控制的生产级 Agent,多 Agent 协作的复杂拓扑。
LlamaIndex Agents:RAG 生态原生
Agent 能力与其数据框架深度整合,工具可以直接是检索器、查询引擎。
- 优点:做 Agentic RAG 路径最短(见 Agentic RAG),与索引、检索器复用同一套抽象;
- 适合:以知识问答/检索为核心场景的 Agent。
AutoGen(AG2):多 Agent 对话
以"Agent 间消息对话"为基本原语,擅长多角色协作与人在回路。
- 优点:多角色讨论、代码执行环境(Docker 沙箱)内置;
- 代价:对话式编排的流程透明度不如图式,成本随对话轮数快速增长;
- 适合:研究型任务、需要多视角协作的场景。
CrewAI:角色分工
以"团队 + 角色 + 任务"为心智模型,声明式定义每个成员的职责、目标与工具。
- 优点:上手快,多角色协作的语义直观;
- 适合:角色清晰、流程模式化的内容与研究工作流。
OpenAI Agents SDK(及各家原生 SDK)
官方轻量实现:agent 循环、工具定义、交接(handoff)、护栏(guardrail)。
- 优点:抽象极薄、与模型能力(函数调用、结构化输出)贴合紧密、迁移成本低;
- 适合:深度绑定单一模型生态、追求最小抽象层。
对比速查
| 框架 | 心智模型 | 优势场景 | 学习成本 | 生产成熟度 |
|---|---|---|---|---|
| 自研 | while 循环 | 简单可控、强定制 | 低(外围高) | 取决于投入 |
| LangGraph | 图状态机 | 复杂流程、断点恢复 | 高 | 高 |
| LlamaIndex | 数据/检索中心 | Agentic RAG | 中 | 高(RAG 侧) |
| AutoGen / AG2 | 多方对话 | 多视角协作研究 | 中 | 中 |
| CrewAI | 角色团队 | 模式化多角色流 | 低 | 中 |
| 官方 SDK | 薄抽象循环 | 单生态轻量场景 | 低 | 生态相关 |
选型建议
- 按场景主轴选:知识检索为核心选 LlamaIndex;复杂可控流程选 LangGraph;多角色协作为先试 CrewAI/AutoGen;简单场景先自研或官方 SDK。
- 按团队工程水位选:框架的抽象需要团队有能力穿透——出问题时能打印框架内部状态、能绕过框架直连模型 API 排障,否则调试黑盒会抵消框架收益。
- 警惕框架锁定:工具层(MCP 化)、提示词、评测集是真正的资产,尽量与框架解耦;框架只是运行容器,资产可迁移,选择才可逆。
- 对营销保持校准:框架宣传的"autonomous agents"能力上限,始终等于所配模型的能力上限乘以工程护栏的质量——框架不改变设计原则中的任何一条。
无论选什么,这几样自建
- 评测集与回归流水线:框架不提供属于你业务的成功标准;
- 轨迹日志与观测:按自己的排障习惯落盘,不依赖框架默认格式;
- 护栏语义:步数、预算、高危确认的最终解释权应在自己的代码里。
框架决定你写多少胶水代码,而 Agent 好不好用,仍由模型选择、工具质量、评测闭环决定——这是整个 Agents 分类的落点。