工作流与智能体选择
工作流与智能体选择 · 阅读后完成下方实验与检查题,再用「标记完成」记录进度。
学习目标
读完本课你能回答一个架构问题:这个任务该写成固定步骤的工作流,还是交给模型自主决策的智能体?并且能给出可检验的理由,而不是「智能体更智能」这种空话。
问题场景
两个需求摆在你面前:
- 需求一:每天把导入的资料做一次「解析 → 切分 → 索引 → 出报告」,步骤固定,错了要能查。
- 需求二:用户随口问「帮我整理这份文档的要点,顺便查查和站里哪门课相关」——下一步做什么,事先列不全。
第一个用智能体是浪费:每步都让模型「想」一遍,又贵又不稳定。第二个用死流程是灾难:路径因问题而变,写死哪条都会漏。选择的标准不是哪个更先进,而是任务的结构化程度。
核心解释
两者定义:
- 工作流(workflow):步骤预先定义,代码控制流转,模型只负责每个步骤内部的生成任务。输入确定、路径确定、输出形态确定。
- 智能体(agent):给模型一组工具和一个目标,由模型决定下一步调用什么、循环到何时(A17 的工具循环就是最小智能体)。路径在运行时才确定。
选择看三个标准:
| 标准 | 偏向工作流 | 偏向智能体 |
|---|---|---|
| 步骤能否预先列出 | 能 | 不能,因问题而变 |
| 单步错误的代价 | 高(写库、发钱) | 低(只读、可重来) |
| 可解释性要求 | 高(每步要能审计) | 中(结果导向) |
// 工作流:路径写死在代码里,模型只是步骤内部的函数
async function importPipeline(file: File) {
const text = await extractText(file); // 步骤 1:解析
const chunks = chunkText(text); // 步骤 2:切分
await indexChunks(chunks); // 步骤 3:索引
return { chunks: chunks.length }; // 每步成败可单独审计
}
// 智能体:路径由模型运行时决定(A17 的循环 + 白名单 + 上限)
while (!done && rounds < MAX_ROUNDS) {
const res = await chatWithTools(messages, ASSISTANT_TOOLS); // 模型自主选择工具
if (res.finish_reason === "tool_calls") messages.push(...runTools(res));
else done = true;
}
本站的选择是「受限智能体」:学习助手需要处理千奇百怪的问题(路径不可预列,选智能体形态),但把自主性收进三个笼子——工具白名单(只有三个只读检索工具,模型提名了名单外的直接拒绝)、轮次上限(A17,超限强制基于已有信息作答)、只读约束(再怎么「自主」也写不了库)。自主性负责覆盖问题的多样性,约束负责兜住错误的下限。
如何验证选型:把任务的「预期路径」写出来。写得出来且覆盖 90% 以上场景 → 工作流;写出来发现分支爆炸 → 智能体。选完再问一句:它出错时我能不能不看代码就说出「错在第几步」?
示例拆解
同一个「整理资料」需求,两种实现的对比:
// 工作流版:路径固定,适合「每次都要做完所有事」
const report = [
summarizeAll(await getAllChunks()), // 1. 汇总全部片段
matchCourses(report), // 2. 匹配站内课程
];
// 智能体版:按问题需要挑工具,适合「问什么做什么」
// 用户问「这份文档和哪门课相关」→ 模型只调 search_courses,不碰 summarize
关键点:
- 混合形态是常态:本站资料导入是纯工作流(A24 走过的链路),学习助手是受限智能体,两者共存于同一应用。不必全站二选一。
- 可解释性的差异是本质的:工作流出错看日志就能定位到步骤;智能体出错要回放模型的决策序列(为什么调这个工具)——这就是 A26 要做的执行轨迹。
- 「智能体更强」是错觉:路径可预列的任务,工作流的每次输出都一样、每步都能测,稳定性碾压智能体。模型只有在「你不知道路」时才比流程图有用。
动手任务
- 把 A24 的导入流程列成步骤表,逐条标注「这步模型做了什么决策」——验证它其实一步都没有,是纯工作流。
- 观察站内助手:问两个不同类型的问题(一个查课程、一个查资料库),从服务端日志记录它分别调了哪些工具——验证「路径因问题而变」。
- 判断任务:给「自动给练习打分并写入库」选形态,用三个标准说明理由(提示:写库 = 错误代价高,路径可预列 = 工作流,模型只负责其中「判断对错」一步)。
常见错误
- 什么都上智能体:能写成三行流程的事交给模型「自主规划」,成本翻倍、结果不可复现、出错没法审计。
- 什么都写成流程:用户问题的多样性超出流程分支,最后 if-else 树比智能体还难维护。
- 给智能体挂上写操作:自主决策 + 直接写库 = 错误直接落库。写操作必须先过 A29 的人工确认。
- 受限形同虚设:白名单不校验、轮次没上限,「受限」只剩注释。约束要在代码里,不在文档里。
检查与复盘
自查清单:
- 能用三个标准(步骤可预列、错误代价、可解释性)为任意新需求选形态并说理由
- 能指出本站助手的三个「笼子」分别限制什么
- 能说出混合形态为什么是常态
参考资料
- Anthropic:Building effective agents —— 工作流与智能体的边界与选型标准(业界口径的主要出处)
- OpenAI 文档:Function calling —— 智能体形态的底层机制
- 下一课 A26 讲智能体跑起来之后怎么看清它:状态与执行轨迹。
读完这一课了?
标记完成后,工作台会安排接下来的学习。