Prompt Engineering
从本质上讲,Prompt 就是对概率分布的“条件约束”。由于 LLM 包含了海量的人类知识,如果不加限制,它预测的下一个词是发散的。
prompt 的作用就是画一个圈,把 LLM 的注意力限制在特定的语境、角色或任务中,从而提高期望输出的概率。
发展演进
-
阶段一:Zero-shot(零样本)
- 做法:直接问“北京的首都是呢?”
- 痛点:模型完全靠直觉(预训练权重)回答,遇到复杂问题容易胡说八道
-
阶段二:Few-shot(少量样本/上下文学习)
- 做法:在问题前加上几个例子(Q:1+1, A:2; Q:2+2, A:?)
- 演进原因:人们发现 LLM 有强大的模式模仿能力,给它看例子,它能瞬间学会当前需要的输出格式和逻辑
-
阶段三:Chain of Thought(CoT,思维链)
- 做法:在 prompt 中加入魔法咒语:“请一步一步地思考”
- 演进原因:LLM 倾向于直接给出答案(复杂任务往往是错误的),CoT 的本质是 LLM 把生成的中间过程(思考步骤)作为自己的“外部草稿纸”,前一个生成的思考步骤,变成了预测下一个词的上下文。极大解锁了 LLM 的逻辑推理能力
局限
无论 Prompt 多精妙,裸 LLM 依然是一个“缸中之脑”。它不知道今天是几号,不能联网,不能点外卖,知识永远停留在训练截止的那一天。
Agent
核心特征:循环
最有价值的地方:可以调用外部工具
ReAct 架构
ReAct 是一个合成词(Reasoning + Acting)。该架构的核心是将思考和行动交织在一起,形成一个循环:Thought -> Action -> Observation -> Thought -> ...
while not done:
think()
act()
observe()- 推理:帮助模型制定、监控和修正行动策略
- 行动:帮助模型从外部获取信息来锚定推理
- 两者形成闭环反馈,模型不再是黑箱里自说自话,也不再盲目调用工具——它在有意识地思考、有目的地行动、有依据地调整
大部分 Agent 都采用了“思考-行动-观察”的循环范式。
风险
Agent 的风险也很明显:
- 循环失控:一直调用工具,不停尝试
- 错误累积:即使每个步骤 99% 可靠,10 步流程的整体可靠性只有 90%,20 步就掉到 82%(
0.99^20) - 成本不可控:多轮工具调用导致 token 暴涨
- 难复现:同一任务多次运行路径不同
Context Engineering
Context 是模型运行时看到的全部信息:
Context = system prompt (系统指令)
+ user prompt (用户提示)
+ 短期记忆 (对话历史)
+ 长期记忆 (跨会话知识)
+ RAG (检索信息)
+ Tools (工具定义)
+ output schema (输出格式规范)Context Engineering 是构建动态系统,在正确时间、以正确格式,向模型提供正确的信息和工具,让 AI 应用能够完成任务:
- Prompt Engineering 关注“这一轮怎么问”
- Context Engineering 关注“整个运行时该给模型看什么、不该给模型看什么、什么时候给、以什么粒度给”
为什么需要上下文管理
当 AI 应用从一次性问答进化到多轮对话后,上下文腐烂(Context Rot)问题随之而来:
- 错误信息进入上下文后被反复引用
- 信息过多导致注意力分散
- 不相关内容干扰推理
- 矛盾信息导致混乱
多轮对话中的上下文管理
大模型本身是无状态的,每一次发新消息,都需要将之前的聊天记录全部打包,重新发给大模型。随着聊天变长,Token 会爆炸,API 成本剧增:
- 滑动窗口:只保留最近 5 轮对话,扔掉更早的
- 检索式记忆:把历史对话切片存储,需要时按相关性召回
- 滚动总结:当对话超过一定长度,让大模型把之前的对话总结成摘要,作为新上下文
Agent 循环中的上下文管理
在 Agent 的循环过程中,上下文极其容易“爆炸”/“被污染”:
- 工具爆炸输出:“网页搜索”工具返回一个 50 万字符的 HTML 代码,不能直接塞进上下文
- 长程记忆管理:Agent 要执行一个长达几小时的复杂任务,它需要区分短期记忆(正在做哪一步)和长期记忆(过去总结的经验)
- 去除冗余的中间轨迹:循环 N 轮次后,优秀的上下文管理需要动态把之前“已尝试但无效的方案”剔除,只保留有用的主干
Workflow
理想与现实碰撞:纯 Agent 走不通
纯 Agent 在实际工程中走不通:
- 概率累积误差:若 LLM 每步决策准确率 90%,连续 10 步复杂决策后,成功率降到 34%(
0.9^10) - 工具选择的“维度灾难”:若给 LLM 提供 50 个工具,它在每次循环中,都要阅读 50 个工具的介绍,并在海量选项中做选择,极易选错工具,或进入死循环
在复杂/批量任务场景中,完全的自主 = 完全的不可控,不能把核心业务交给一个“聪明但随时可能发散思维”的黑盒。
Agentic Workflow
传统 Workflow 像一条死板的流水线,规则是确定性的:如果A, 则走路径B; 否则走路径C,传统工具例如 Airflow、n8n 等。
Agentic Workflow 则是将 Agent 与 Workflow 进行结合,常见如下三种模式:
1. 宏观 Workflow 控制,微观 Agent 自主
在宏观的业务流程上,用 Workflow(SOP 图纸)定死;在某个具体的节点上,用 Agent 去发挥自主性。
- Workflow 规定:任务必须遵循 信息收集 → 数据计算 → 报告撰写 这个流水线
- Agent 执行:在信息收集这个节点里,放一个“搜集 Agent”。这个 Agent 只被赋予了 3 个工具(Google 搜索、维基百科、知乎搜索)
- 融合点:在这个节点内,Agent 依然是自主选择工具的(它可以自己决定先搜 Google 还是先搜知乎,搜几次停止),但它绝不可能突然去调用“计算器”或“发邮件”工具,因为它没有这个权限
2. 给 Agent 配备 SOP(SKILL)
纯 Agent 像一个个人能力极强但没有经验的实习生,遇到问题全靠自己 ReAct。我们可以把 Workflow 作为说明书写进 Prompt 中,交给 Agent:
- 做法:告诉 Agent:当你要退货时,请严格按照以下步骤调用工具:1. 查订单 → 2. 查退货政策 → 3. 调用退款接口
- 融合点:Agent 依然掌控全局,但它的“思考(Thought)”过程被 Workflow 的规则强约束了
3. Workflow 作为多 Agent 的管理者
- 在 Workflow 节点上,不再是单纯的代码,而是不同的 Agent
- 例如一个软件开发 Workflow:
- 产品经理 Agent(负责写需求)
- 程序员 Agent(负责写代码)
- 测试 Agent(负责调用运行工具测试)