阅读约 2 分钟
Anthropic 认为智能体应该这样构建
了解智能体与工作流的区别,以及为什么 AI 项目应该从 LLM API 而不是框架开始。
Matt Pocock
本页目录
2024 年 12 月,Anthropic 发布了一篇关于 构建高效智能体的文章,帮助我厘清了几个概念。下面是我的总结:
智能体与工作流
文章把 智能体 定义为不同于 工作流.
工作流使用“预定义代码路径”,而智能体会“动态引导自己的过程”。二者的区别在于自主程度:智能体更自主,工作流则沿预定义轨道运行。
在我看来,这仍然是一条连续光谱;不过用“自主程度”作为衡量尺度,是我以前很少见到的视角。
想继续深入: 加入“面向真正工程师的 AI 编码”候补名单
不要默认使用框架
文章反复警告,不要一开始就使用框架。框架“经常引入额外抽象层,掩盖底层提示词和响应”。
文中提到了 LangGraph, Amazon Bedrock Agents, Rivet and Vellum。这些框架“会诱使你在简单方案已经足够时继续增加复杂度”。
他们建议先直接使用 LLM API,只有在“理解底层代码”之后才使用框架。
我认为这很合理:构建优秀 AI 工作流的基本原语并不难管理,过早把它们塞进框架反而奇怪。需要说明的是,我不认为 Vercel 的 AI SDK 属于框架,它只是一个兼容性库。
多种工作流模式,一种智能体模式
文章最精彩的部分,是它对不同工作流的描述。与其说它在讲如何构建高效智能体,不如说它真正讲的是如何构建高效工作流,包括:
- 提示词链:每次 LLM 调用都处理上一次调用的输出
- 路由:由 LLM 路由器对输入分类,并将其导向专门的后续任务
- 并行化:并行运行多个 LLM 调用。
- 编排器—工作器:中央 LLM 动态拆分任务,并把它们委派给工作器 LLM。
- 评估器—优化器:在循环中,一个 LLM 调用生成响应,另一个负责评估。
最后,文章定义了一种真正属于智能体的模式。智能体会:
- “独立规划和行动,并可能返回向人类获取更多信息或判断”
- “在每一步从环境中获取真实依据”,例如使用 工具调用 结果或代码执行
- 在任务完成时终止,或使用“停止条件(例如最大迭代次数)”终止
总而言之,智能体“通常只是 LLM 在循环中根据环境反馈使用工具”。
我非常喜欢这个定义,它很好地消除了智能体的神秘感。