什么是 Agent?和 workflow、和「调用一次大模型」的本质区别?
谁在问:一面必问;简历写了 Agent 的候选人开场第一题,也是大厂/AI 创业公司通用的真伪探针
口语化问法
- 你简历里写了 Agent。先跟我说说,你理解的 Agent 和一个 workflow,本质区别在哪?
- 我写段代码,调一次大模型让它返回 JSON,再按 JSON 去查库——这算 Agent 吗?
- 现在什么都叫 Agent。如果只让你说一条判据,你会说哪一条?
考察意图
参考答案
60 分答案(及格线)
三种形态的差别不在用了什么框架,在下一步由谁决定:
- 单次调用大模型:输入→输出一次映射,没有循环,也不碰外部世界。模型只是个函数。
- Workflow(工作流):路径是我写死的。某个节点里也可能调模型(比如让它做意图分类),但所有可能走的路我都能提前画在一张图上,模型只是图里的一个算子。
- Agent(智能体):模型在循环里自己决定下一步——调哪个工具、要不要再来一轮、什么时候停。路径是运行时长出来的,我提前画不出来。
配套三个差别:环境反馈会不会回灌进下一轮上下文;终止条件由谁判断;执行步数是恒定的还是不定的。
一句话收口:Workflow 是我编排模型,Agent 是模型编排我给它的工具。
90 分答案(有生产经验的回答)
在 60 分基础上补四层。
1. 给一张能当场画出来的判据表
| 判据 | 单次调用 | Workflow | Agent |
|---|---|---|---|
| 下一步谁决定 | 无下一步 | 代码 / DAG | 模型 |
| 可能路径 | 1 条 | 有限、可枚举 | 运行时生成、不可枚举 |
| 环境反馈 | 无 | 流向人定的下一节点 | 回灌上下文,影响下一次决策 |
| 终止 | 生成结束 | 走到终点节点 | 模型自判 + 代码兜底(步数/预算/超时) |
| 成本与耗时 | 恒定 | 恒定或小方差 | 长尾分布,只能报 P50/P95 |
| 失败定位 | 看这次输出 | 看哪个节点挂了 | 看整条轨迹的哪一步决策错了 |
2. 反向检验,这是分水岭。 我判断一个系统是不是真 Agent,只问一句:同样的输入跑两次,轨迹会不会不一样? 永远一样就是 workflow,哪怕它是用 Agent 框架写的。生产里这种「用 AgentExecutor 包一条固定三步管线」的东西很多——白白付了不确定性的代价,没拿到不确定性的收益。
3. 自治是连续谱,不是二分。 真落地我一般写成「workflow 骨架 + 局部 agentic 节点」:外层固定流程守住 SLA 和可审计,只在真正需要探索的那一步(比如「这个问题该查哪几个数据源、查几轮」)放开让模型决定,并且配工具白名单和 max_steps。这样成本方差可控,出问题也能定位到具体那一格。
4. Agent = Model + Harness。 截至 2026-08,业内比较统一的说法是 Agent 的能力一半在模型、一半在 harness(LangChain 2026-03 那句「If you're not the model, you're the harness」)。同一个模型换一套 harness——工具集与 schema、上下文组装与压缩、错误反馈格式、重试与终止、权限与人工确认——任务成功率能差一个数量级。这也是「Agent 不就是套壳」这个说法不成立的原因:难的工程量全在 harness 里。模型变强确实会让 harness 变薄(早期要手写的 planner、self-critique 现在很多可以删),但不会消失——权限、预算、可观测、可回滚这些约束不属于模型。
(如果被追问「那你项目算哪一格」,老实答,并说清为什么选那一格。见 Q3-02。)
追问链
链里有个 if-else 分支,条件是让 LLM 判断的,这算 Agent 吗?
期望不算。LLM 参与判断 ≠ 模型持有控制权 —— 分支候选是人预先闭合的,模型只是个分类器;分辨点在能否产生你没预设过的动作序列、能否自决「再来一轮」。这类 LLM 路由的 workflow 常常就是生产最优解:可测、可复现、成本恒定,别为名分改造它信号落到「候选集合是否闭合」「能否自决再来一轮」→ 自己想过;拿框架名当判据(用了AgentExecutor就是)→ 只读过教程Agent 的循环靠什么终止?只靠模型说「我答完了」够吗?
期望正常出口是不带工具调用的答案,但代码侧必须兜底:max_steps、时间与费用预算、重复动作检测(连续 N 次同工具同参数即断)、工具连续失败熔断。死循环形态是换措辞反复调同一工具、两工具互等。超限后要区分中断与降级 —— 回落固定管线、转人工、返回「已得信息 + 未完成项」信号说得出三种以上兜底并区分中断与降级 → 做过线上;只答max_iterations、追问「超限之后呢」答「就报错」→ 停在 demoharness 里到底装了什么?挑两样你调过的说说
期望组成:schema描述、上下文组装压缩、结果回灌格式、错误消息、终止重试、trace与评测。挑两样讲量化差别:报错从堆栈改成「参数date需YYYY-MM-DD」后自愈率变化、工具 20 个收到 8 个后准确率变化。harness 越厚越贴当前模型,换代要拆信号举得出具体改动 + 观察到的指标变化(哪怕只是几十条粗糙对比)→ 真调过;把 harness 说成「就是提示词」→ 看过文章业务方问「这功能多久出结果、一次多少钱」,你怎么答?
期望步数是长尾分布,不能报平均值 —— 报P50/P95和上限,因为有max_steps和预算熔断,上限是可以承诺的。成本非线性:每轮重发完整上下文,工具结果一进上下文就在后续每轮复利计费,「多两步」不等于多两步的钱。把不确定性转成有上界的承诺:预算上限 + 超限降级路径信号主动给上界并解释上下文累计计费 → 算过账;报个平均值交差、或答「这个说不准」→ 没做过成本治理跑得挺稳的 workflow,产品经理要求改造成 Agent「对外讲更先进」,你怎么办?
期望先归因,别站队:badcase 是「路径没覆盖到」(Agent 化有收益)还是「某一步答得差」(改提示词就够)→ 前者占比个位数,收益就抵不过成本方差与评测成本 → 折中:外层 workflow 守 SLA,badcase 那一步做成受限 agentic(白名单 +max_steps=3+ 超时回落),先小流量 A/B。拒的不是需求,是没评测就全量替换信号先归因 badcase 再给方案、路径可回滚、照顾到业务方真实诉求 → 有协作经验;顶回去说「伪需求」或答应全量改造却说不出怎么证明更好 → 都扣分
评分要点
- 抓住唯一硬判据:下一步由谁决定(控制权归属)
- 讲清三层递进:单次调用 / workflow / Agent
- 提到环境反馈回灌与终止条件的归属
- 能反向检验假 Agent(同输入是否同轨迹、路径能否枚举)
- 知道自治是连续谱,生产常见「骨架 + 局部 agentic」混合形态
- 说得出 Agent 化的工程后果(成本长尾、不可复现、按轨迹调试)
- 加分:知道 Agent = Model + Harness,能列 harness 组成
- 加分:主动说明自己项目落在哪一格并给出理由