Agent 面试题:如何区分 chatbot / workflow / agent / multi-agent

  • 结论一句话:下一步做什么,由谁决定——代码决定 = workflow,模型决定 = agent,没有”下一步” = chatbot,多个模型各管一段 = multi-agent。

一、小白版:请人办事的四种方式

类比他做的事
Chatbot问路人你说一句他答一句,答完结束,他不动手
Workflow去银行办业务柜员按固定流程走:取号→验证→填表→签字。顺序事先定死,AI 只是”填表”那一环
Agent请了个助理你说”帮我订下周去上海最便宜的机票”,下一步干什么他自己判断;没票了自己改方案
Multi-agent请了个团队一个查资料、一个写稿、一个审稿,各干各的、各有各的记忆,最后汇总

类比的失效边界(重要)

  • 助理类比会让人以为 agent 有常识和长期记忆。实际它只有「当前上下文 + 一份工具清单」,上下文一长就忘或跑偏,也不会主动找你确认——除非你专门设计了这个动作。
  • 团队类比会让人以为多 agent 一定更强。实际”各干各的”既是优点(互不污染)也是代价:信息必须显式传递,token 成本翻倍,一个环节错会被后面放大。

二、专业版:三条判定线

判定线 1:有没有「行动能力」→ 区分 chatbot

只会生成文本、不能调外部函数 = chatbot。能让模型去执行一个函数(tool call,工具调用)= 迈进了自动化门槛。

判定线 2:控制流归谁 → 区分 workflow / agent

这是唯一真正的分界线,不是”用没用 LLM”,也不是”复杂不复杂”。

下一步由谁定有循环吗
Workflow开发者写在代码里的 if/else、图、DAG有边,但边是代码画的
Agent模型在运行时输出「我要调哪个工具」有,观察→决策→行动→再观察

一个 agent 至少需要三件套:工具 + 循环 + 基于观察修正。缺任何一个,它就是个 workflow 节点。

工程上的经典建议:能 workflow 就别 agent。workflow 可预测、可测试、便宜、能定位 bug;agent 的路径是运行时才生成的,测不了全路径,成本不可控。

边界提醒:单次 tool call 是临界情况。如果模型调完工具、看到结果后又自己决定”再查一次”,那就跨进 agent 了。所以分界线不是”有没有调工具”,而是调完之后谁决定下一步。

判定线 3:上下文是否隔离 → 区分 agent / multi-agent

关键在”独立上下文”,不在”多个 prompt”。 同一个对话历史里让模型扮演三个角色轮流发言,那是单 agent 的角色扮演(role prompting),不是 multi-agent。

真正的 multi-agent:每个 agent 有自己的消息历史,靠显式的消息传递或共享状态通信。

判据只有两条:独立上下文 + 独立决策。
「角色不同」是最常见的应用形态,不是定义——三个完全相同的 agent 各自独立上下文并行审查同一份代码,也是 multi-agent。

两种常见形态(都不是必需的):

  • 有中心:一个 orchestrator(编排者)分活、汇总
  • 无中心:agent 之间直接互相发消息

隔离带来两个真实收益:① 长任务里各自的上下文不被无关信息污染;② 可以并行。代价是通信开销和错误传播。

一张总表

下一步谁定工具循环独立上下文数
Chatbot没有”下一步”无无1
Workflow代码可有(在固定节点内)图的边,非模型定1 或 N(靠代码传值)
Agent模型有有1
Multi-agent多个模型各自定有各自可有≥2

三、术语对照表

小白说法专业术语
会聊天的 AIchatbot
把流程写死、AI 只填空workflow / pipeline / DAG 编排
AI 自己决定下一步agent / 自主循环(agentic loop)
AI 去执行一个函数tool call / function calling
干完一步看看结果再决定ReAct 循环(推理-行动-观察)
让 AI 扮演几个角色说话role prompting(不是 multi-agent)
几个 AI 各自有记忆、互相传话multi-agent / 多智能体
几个 AI 共用一个状态共享状态编排(shared state orchestration)

四、最容易理解错的三个地方

  1. “多写几个 prompt 就是 multi-agent”——类比成”多写几个函数就是微服务”。判据是上下文是否隔离,不是 prompt 数量。
  2. “Agent 就是 workflow 加几个 LLM 节点”——反了。加了 LLM 节点但流程仍由代码画,那是 workflow 的增强版。分界线是边的归属:if/else 是代码写的还是模型输出的。
  3. 拿前端状态管理类比 agent 状态:相似处是”单一事实源、集中管理”;失效处是前端 store 的结构你完全掌控,而 agent state 里会混进模型自由生成的字段——所以 schema 校验必须放在边界上做,不能假设模型老实(对应前端”错误边界”,但这里要校验的是数据形状,不只是异常)。

五、自测题与作答(2026-09-21)

题 1:固定流程 + LLM 选了一次工具,是 workflow 还是 agent?

我的作答:这是一个 workflow,这里的 agent 或者 prompt 的调用,本质上是 workflow 中的一个节点,因为这里面没有循环加基于观测观察的修正。

判定:✅ 正确。 判据抓准了——循环 + 基于观察的修正。

补一层边界:单次 tool call 是临界情况。如果模型调完工具、看到结果后又自己决定”再查一次”,那就跨进 agent 了。分界线不是”有没有调工具”,是调完之后谁决定下一步。

题 2:同一模型扮演三角色、共用一份对话历史,是 multi-agent 吗?

我的作答:这是单个 agent,不是 multiple agent。真正的 multiple agent 是要基于不同的角色,然后指定一个 agent,agent 之间用显示的消息进行共享。

判定:⚠️ 方向对,但有一处概念漏洞。

  • 「这是单个 agent,不是 multi-agent」——对。
  • 「真正的 multi-agent 是要基于不同的角色」——错。角色不同不是必要条件,是常见形态。判据只有两条:独立上下文 + 独立决策。
  • 「指定一个 agent」——如果指”有个总协调者”,那也不是必需的;有中心(orchestrator)和无中心(agent 互发消息)两种形态都存在。
  • 「显示的消息」→ 应为「显式的消息」:explicit(明明白白写在代码里的传递)≠ display(画出来给人看)。

最小改动(改成真 multi-agent):把三个角色从”共用一份 messages”改成”各自一份 messages“,PM 的输出显式作为 input 传给工程师(传字符串,不共享历史)。就这一步。

题 3:举两个你会故意选 workflow 而不选 agent 的理由

我的作答:一个理由是,固定流程的场景下,我们会选用 workflow。其他的想不到了。

判定:✅ 一个对,但只是同一理由的正面说法。 换个角度就能多出好几条:

  1. 可测试:路径固定 → 能写单测、能重放、能定位 bug。agent 的路径运行时才生成,测不全。
  2. 成本可预估:token 数和调用次数算得出来。agent 可能绕远路,甚至死循环烧钱。
  3. 可审计:每一步”为什么这么走”是代码写的,能对客户/监管解释。金融、医疗这类场景绕不开。
  4. 破坏面可控:agent 自主决策可能做出不可逆操作(删数据、发邮件)。workflow 能做的坏事是有限的。

再加一条最实用的:这俩不是二选一。工业界常见形态是「workflow 骨架 + 关键节点里塞一个 agent」——流程你来定,只在”真的需要判断”的那一步把决定权交给模型。(Anthropic, Building Effective Agents 的核心建议)


六、本次结论

容易把常见形态当成定义。 以后遇到任何概念题,先问一句:”这是定义,还是典型案例?”

  • 本次踩坑点:把 multi-agent 的”角色不同”当成了必要条件(实际是充分条件/常见形态)。
  • 待复习:下次重考「multi-agent 的判据是什么」+「workflow vs agent 的分界线在哪」。

发表回复