🥰个人主页:会编程的土豆(欢迎来访)
💎作者简介:后端学习者
❄️个人专栏:数据结构与算法数据库leetcode
那些你一个人走过的夜路,终将化作照亮未来的光

适合对象:几乎零基础、想搞懂 Agent 是什么、顺便准备面试的同学
本文不堆框架源码,先把「能讲清楚」这件事做扎实


写在前面

很多人一上来就打开 LangChain、Eino 之类的仓库,结果越看越懵。其实 Agent 本身并不神秘,复杂的是工程实现。

先记住一句就够入门:

Agent = 会围绕目标,自己决定要不要用工具,并动手完成工作的 AI 助手。

  • 普通聊天机器人:主要「动嘴」——你问一句,它回一句。
  • Agent:不但会说话,还会「动手」——需要时去查天气、算数、搜文档、调 API,再根据真实结果回答你。

本文会按这个顺序讲:

  1. Agent 到底是什么(生活类比)
  2. LLM、工作流、Agent 的区别
  3. Agent 由哪些部分构成
  4. ReAct 推理模式是什么、怎么实现
  5. Message / Tool 这些基础零件
  6. Prompt 五要素框架(怎么把话跟模型说清楚)
  7. 面试高频题与口述模板
  8. 零基础学习路线建议

一、用生活例子理解 Agent

1.1 查天气

你问:「外面冷不冷?」

类型 做法
普通机器人 凭印象猜:「大概挺冷吧。」
Agent 打开天气 App(工具)一看:现在 8℃,再说「挺冷,建议穿外套。」

手机上的天气 App,在 Agent 里就叫 Tool(工具)

1.2 算数题

你问:「3×7 等于多少?」

Agent 的典型过程:

  1. :这是计算题,用计算器更靠谱。
  2. :调用计算器工具,参数 3*7
  3. :工具返回 21
  4. :告诉你「等于 21」。

这就是 Agent 最核心的行为模式:想 → 做 → 看 → 再想/再答

1.3 一句话定义(建议背下来)

Agent 能够 围绕目标,自主完成工作
「自主」不是完全没人管,而是:步骤不必你每一步手把手指定,它可以自己选择行动。


二、LLM、工作流、Agent:三者别混

这是面试和入门最容易混淆的地方。

2.1 只用大模型(LLM)

输入 → LLM → 输出

例子:你说「给我一个会议纪要模板」,模型直接写出模板。

特点:

  • 擅长生成文字、总结、改写
  • 不会真正去操作你的邮箱、日历、数据库(除非另外接工具)
  • 本质是「会写字的大脑」

2.2 工作流(Workflow)

输入 → 步骤1 → 步骤2 → 步骤3 → 输出

例子:发会议纪要的流水线(步骤由人写死):

  1. 获取会议记录
  2. 调用 LLM 做总结
  3. 打开邮箱
  4. 发送邮件

特点:

  • 路径固定,可控、可预期
  • 适合流程明确、合规要求高的业务
  • 模型通常只负责其中某几步,不会自己改路线

2.3 Agent(智能体)

输入 →(Agent 自己决定执行步骤)→ 输出

例子:你说「帮我把上次会议纪要发给参会人」。

Agent 可能自己决定:

  1. 上次会议是什么时候?
  2. 先连日历试试
  3. 或去腾讯会议找记录
  4. 再让大模型总结
  5. 邮箱不清楚就先问你

特点:

  • 目标导向,步骤动态选择
  • 更灵活,也更难控、成本可能更高

2.4 对比小结

维度 LLM 工作流 Agent
核心能力 生成文本 按固定流程执行 围绕目标自主决策并行动
步骤谁定 基本无多步业务流 人预先写死 模型动态决定
会不会用工具 默认不会 可以,但按编排调用 会,且常自己判断何时调用
典型比喻 会写字 按菜谱做菜 你说「弄顿饭」,它自己买菜炒菜尝咸淡

三、Agent 的构成:像招了一个「数字员工」

可以把 Agent 理解成公司里的实习生 / 数字员工:你给目标,他尽量自己干完。

中间是 LLM 大脑,周围通常还有:

3.1 Prompt(岗位说明书)

规定:

  • 你是谁(角色)
  • 负责什么(任务)
  • 什么能做/不能做(约束)
  • 怎么说话、输出什么格式

没有说明书,员工就容易自由发挥;Agent 也一样。

3.2 Memory(记忆)

记得你们之前聊过什么、任务做到哪一步。
短期可以是当前对话的消息列表;长期可以是存进数据库的历史。

3.3 Tools(工具)

真正「干活的手」:

  • 查天气 API
  • 计算器
  • 搜索
  • 读写文件 / 查数据库
  • 发邮件

关键认知:

模型通常只「提议」要调哪个工具、带什么参数;
真正执行工具的是你的程序,不是模型自己神秘连上了数据库。

3.4 外部知识(可选)

公司文档、知识库、RAG 检索结果等,让回答有据可依,而不是只靠模型「背」。

3.5 构成公式

Agent ≈ LLM(大脑)
      + Prompt(说明书)
      + Tools(手)
      + Memory / 知识(记得住、查得到)
      + 循环控制(想→做→看,直到完成)

四、Agent 推理模式与 ReAct

4.1 常见推理模式有哪些?

「推理模式」指 Agent 如何组织思考与行动。常见包括:

模式 一句话理解 适用直觉
ReAct 边想边做:推理 ↔ 行动交替 最基础、最常考
Plan-and-Execute 先做计划,再逐步执行(可再规划) 步骤多、需要先拆解
Reflexion / 带反思 做完再反省,错了改进 强调自我纠错
Function Calling 用结构化方式提出工具调用 现代 Agent 的常见底盘
Multi-Agent 多角色分工协作 复杂任务加分项

入门优先掌握:ReAct

4.2 ReAct 是什么?

ReAct = Reasoning(推理)+ Acting(行动)

不是「一次想完再一口气做完」,而是循环:

思考(Reason)
  → 行动(Act,例如调用工具)
  → 观察(Observe,看工具返回)
  → 再思考
  → ……
  → 给出最终答案

也可以记成笔记里的三字循环:

思考 → 行动 → 检查(不够就再思考)

黄字级别的记忆点:

会推理,会行动。

4.3 用「竞品分析」理解循环

任务:帮我做竞品分析。

可能循环:

  1. 理解要分析什么
  2. 整理/搜集数据(可能调搜索工具)
  3. 做图表或结构化总结
  4. 检查够不够;不够再回去补充

直到目标基本完成,才对用户给最终结果。

4.4 ReAct 具体怎么实现?(面试高频)

不必背某个框架源码,讲清通用实现即可。

(1)需要的零件
  • 消息历史 history(对话上下文)
  • 工具列表(名字、描述、参数说明、执行函数)
  • 最大步数 maxSteps(防止死循环)
  • 一个能对话、最好支持工具调用的 LLM
(2)伪代码
history = [系统提示词, 用户问题]

循环 最多 N 次:
    回复 = 调用 LLM(history, 可用工具)

    如果 回复是最终答案(没有工具调用):
        返回给用户
        结束

    如果 回复里包含 tool_call:
        结果 = 执行对应工具(参数)
        把工具结果追加进 history
        继续下一轮循环
(3)三个关键点
  1. 模型如何表达「要调工具」

    • 现代常见:Function Calling / Tool Calling(结构化 JSON)
    • 早期论文风格:文本里写 Thought / Action / Action Input
  2. 谁执行工具

    • 你的后端 / Agent 运行时执行
    • 模型负责决策,程序负责落地
  3. 观察如何回到模型

    • 把工具返回写成一条「工具消息」写回历史
    • 下一轮 LLM 就能看到结果并继续推理
(4)工程上还要有什么
  • 最大迭代次数
  • 超时、重试
  • 工具白名单与参数校验
  • 日志 / Trace(每一步想了什么、调了什么)
  • 高风险操作的人工确认(可选)

4.5 和小例子对齐(建议写进笔记)

用户:3×7 等于多少?

  1. Reason:需要计算,调用 calculator
  2. Act:calculator("3*7")
  3. Observe:21
  4. Reason:可以回答了
  5. Output:等于 21

这就是最小可用的 ReAct。


五、基础零件:Message 与 Tool

即使暂时不写代码,也建议建立这两个概念——它们是几乎所有 Agent 框架的通用语言。

5.1 Message(聊天气泡)

Agent 处理的不是「单独一句话」,而是 一串消息历史

常见角色:

角色 含义
system 系统设定:人设、规则、说明书
user 用户说的话
assistant 模型说的话;也可能在这里提出工具调用
tool 工具执行后的返回结果
普通聊天
system → user → assistant
Agent 调工具时(典型顺序)
system
→ user(提问)
→ assistant(决定调用某某工具)
→ tool(工具结果)
→ assistant(基于结果给出最终回答)

记住:

对话上下文 = []Message
工具结果也要进历史,模型下一轮才能「看见」真实数据。

5.2 Tool(工具)

工具至少包含:

  • 名字:如 calculatorget_weather
  • 描述:什么时候该用它(给模型看的说明书)
  • 参数 schema:需要哪些字段
  • 执行逻辑:真正跑起来的函数 / API

模型侧看到的是「有哪些工具可用」;
运行时侧负责「真的执行并返回字符串或结构化结果」。

5.3 和框架的对应关系(仅作地图,不必深挖)

以 Go 生态的 Eino 为例(知道分层即可):

概念 常见对应
Message schema.Message
模型接口 ChatModel / Generate、Stream
工具 Tool / InvokableTool
Agent 循环 ADK 中的 ChatModelAgent 等
启动入口 Runner.Query

学习建议: 会用示例、能讲清概念即可;不要一上来通读 internal/ 或超长实现文件。


六、Prompt 五要素框架(输入-处理-输出闭环)

Prompt(提示词)解决的是:怎么把话跟大模型说清楚
对 Agent 来说,System Prompt 往往就是「岗位说明书」。

6.1 为什么 Prompt 重要

模型不会读心。你写得越清楚,它越按意图做事;写得模糊,就容易:

  • 跑偏
  • 幻觉编造
  • 格式混乱
  • 乱调工具或不调工具

6.2 五要素总览

完整 Prompt 常包含:

  1. 角色(Role)
  2. 任务(Task)
  3. 约束(Constraint)
  4. 输入(Input)
  5. 输出(Output)

口诀:

你是谁 → 干什么 → 有啥规矩 → 材料是啥 → 答成啥样

它们共同形成 输入 → 处理 → 输出 的闭环。


6.3 ① 角色(Role)

定义: 模型扮演谁。

粒度:

  • 粗:你是一个助手
  • 细:你是电商售后客服,只处理退换货,语气礼貌,不承诺无法兑现的时效

角色越具体,视角和语气越稳定。


6.4 ② 任务(Task)

定义: 这次要完成什么。

写法建议:

  • 用清晰动词:判断、总结、提取、生成、调用工具后回答
  • 复杂任务要 拆解:先…再…最后…

示例:

任务:根据用户问题处理退货咨询。
拆解:
1)识别用户意图
2)必要时查询订单状态
3)用三条要点给出处理建议

6.5 ③ 约束(Constraint)

定义: 边界与禁止项。

常见类型:

  • 内容约束:不编造;不确定就说不确定
  • 长度/风格:不超过 100 字;必须中文
  • 行为约束:最多调用工具 3 次;高风险先确认
  • 安全约束:不泄露隐私;拒绝危险指令

示例:

不要编造订单号与物流信息;
金额必须以工具返回为准;
信息不足时只追问一个关键问题。

面试可说:约束用于降低幻觉、控制风险、稳定行为。


6.6 ④ 输入(Input)

定义: 给模型的原材料(用户问题、文档、工具结果等)。

组织输入时的关键技巧:

技巧 说明
分块组织 用户问题一块、参考资料一块,避免糊成一团
使用分隔符 用 ###---""" 等隔开「指令」与「数据」
输入顺序 通常先规则/任务,再贴材料
边界控制 标明输入从哪开始到哪结束
可信度说明 说明哪份输入更优先(如:以工具结果为准)

示例:

### 用户问题
我想退货,订单号 123

### 工具结果(可信,优先采信)
订单状态:已发货;签收前可退

为什么分隔符重要?
因为如果不隔开,模型可能把「用户粘贴的内容」误当成「系统指令」,造成注入或混乱。


6.7 ⑤ 输出(Output)

定义: 结果应该长什么样。

常规定:

  • 输出结构:先结论后理由;分点列出
  • 格式要求:Markdown / JSON / 表格
  • 引用规则:是否标注来源
  • 异常处理:做不到时追问、拒绝或说明原因,而不是瞎编

示例:

请用 JSON 输出:
{
  "can_refund": true,
  "reason": "...",
  "next_step": "..."
}
若信息不足:can_refund 为 null,并给出需要用户补充的字段。

对 Agent 而言:结构化输出也是 Tool Calling 能稳定工作的基础。


6.8 五要素关系

角色 + 任务  → 定方向(以什么身份处理什么事)
约束        → 控过程(别越界、别胡来)
输入        → 供材料(闭环的输入)
输出        → 收结果(闭环的输出)

缺一块,模型更容易自由发挥;五块齐全,行为更稳。


6.9 五要素完整示例(可直接改着用)

【角色】你是电商售后助手。

【任务】回答用户关于退货的问题;需要订单状态时使用查询工具。

【约束】
- 不编造物流与金额
- 不确定就明确说明
- 回复简洁,避免官话套话

【输入】
### 用户问题
(用户原文)

### 工具结果(优先采信)
(工具返回)

【输出】
- 先给出「可否退货」的结论
- 再列 2~3 条依据
- 若信息不足,只问一个澄清问题

6.10 Prompt 与 Agent 的关系(别混)

概念 是什么
Prompt 你怎么「吩咐」模型(说明书)
Tool 模型可调用的外部能力(手)
Agent 按说明书 + 自己判断,循环用工具完成目标

一句话:

Prompt 是说明书,Tool 是手,ReAct 循环是干活方式。


七、面试要点整理(可直接口述)

7.1 什么是 AI Agent?

Agent 是在大模型之上,结合工具、记忆与决策循环,能够围绕目标自主选择行动并完成任务的系统。它不只生成文本,还能在需要时调用外部能力,并根据观察结果继续推理。

7.2 Agent 和普通 Chatbot、工作流有什么区别?

Chatbot 侧重多轮问答与文本生成;工作流是人类预定义的固定步骤;Agent 则在目标约束下动态决定下一步,既可以调用工具,也可能询问用户,路径不事先完全写死。

7.3 ReAct 是什么?怎么实现?

ReAct 是 Reasoning + Acting 的交替循环:模型先推理,必要时发起行动(工具调用),系统执行后把观察写回上下文,再继续推理,直到给出最终答案。实现上通常维护消息历史、注册工具、循环调用 LLM,解析 tool_call 并执行,设置最大步数防止死循环。

7.4 好的 Prompt 应包含什么?

常见五要素:角色、任务、约束、输入、输出,形成输入-处理-输出闭环。角色任务定方向,约束控风险,输入要分块与分隔并标明可信度,输出要规定结构、格式与异常处理。

7.5 如何避免 Agent 乱调工具或死循环?

设置最大迭代次数;工具白名单与参数校验;在 Prompt 中明确何时用工具、禁止编造;对关键路径用工作流写死;高风险操作增加人工确认;做好日志与评测。

7.6 什么时候用 Agent,什么时候用 Workflow?

流程清晰、强可控、强合规 → 优先 Workflow/Graph;任务开放、需要动态决策与多工具协作 → 更适合 Agent。也可以混合:Agent 负责决策,关键子流程用工作流封装成工具。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐