微信扫码
添加专属顾问
我要投稿
Anthropic官方揭秘:从提示词到上下文工程,3招优化Agent性能不再暴跌。核心内容: 1. 上下文工程与提示词工程的关键区别与演进逻辑 2. 智能体性能下降的核心问题:上下文腐化现象与注意力预算机制 3. 三大优化策略:信息选择机制、上下文窗口管理和架构约束突破
本文是 Anthropic 官方发布的“上下文工程(context engineering)“文章的中文翻译。
从 提示词工程 拓展到 上下文工程,再说明 上下文工程 如何构建。
提示词工程 聚焦数年后,出现新术语:上下文工程(context engineering)。使用语言模型构建应用,从"为提示词寻找合适的词语",转变为"什么样的上下文配置最可能产生期望的模型行为"。
上下文(Context):LLM使用时包含的token集合。
工程(engineering)问题:针对LLM约束优化这些token的使用,下方有说明为何要约束。
使用LLM需要在上下文中思考:考虑LLM在任何时刻可用的整体状态,及该状态可能产生的行为。
本文讲上下文工程,提供思维模型,用于构建可控、有效的智能体。
Anthropic将上下文工程视为提示词工程的演进。
智能体在循环运行中生成越来越多可能相关的数据,这些信息必须循环精炼。
上下文工程的核心:从不断演化的可能信息中选择什么进入有限上下文窗口。
提示词工程:离散任务(写一次提示词)
上下文工程:迭代过程(每次推理都要决定传递什么给模型)
LLM像人类一样,在某个点会失去焦点或困惑。
"大海捞针"式基准测试研究揭示上下文腐化(context rot):
这一特性出现在所有模型中。
上下文是边际收益递减的有限资源。
像人类拥有有限工作记忆容量,LLM解析大量上下文时动用"注意力预算":
这种注意力稀缺源于LLM架构约束。
LLM基于transformer架构:
上下文长度增加 → 模型捕获成对关系的能力被拉伸稀薄 → 上下文大小和注意力焦点间产生张力
模型训练时:
结果:
类比:就像学生主要练习短跑,偶尔跑一次马拉松,那他马拉松成绩自然不如短跑。
有人可能会想:直接扩大上下文窗口不就行了?
确实有技术可以让模型处理更长的上下文(位置编码插值技术),但有代价:
效果:
具体表现:
类比:就像人的注意力——你可以同时看10个屏幕,但记忆准确度会比看1个屏幕低很多。
这些现实意味着上下文工程对构建智能体重要。
即使技术进步允许更长上下文,仍需要精心选择放入什么信息。
受限于有限注意力预算,好的上下文工程意味着找到最小的有效token集合,最大化期望结果的可能性。
下面概述这一原则在上下文不同组成部分中的实际意义。
系统提示词应清晰、简单、直接,保持适度的抽象程度。
适度的抽象程度意味着在两种失败模式间找平衡:
❌ 极端1:过度硬编码
❌ 极端2:过于模糊
✅ 平衡点:适度抽象
将提示词组织成不同部分:
<background_information>
背景信息<instructions>
指令## Tool guidance
工具指导## Output description
输出描述使用XML标签或Markdown标题划分这些部分。
💡 随着模型变强,提示词格式可能变得不那么重要
追求完全符合预期行为的最小信息集。
注意:
工具允许智能体与环境交互,在工作时引入新的额外上下文。
工具定义智能体与其信息/行动空间间的契约。
工具促进效率的两个方面:
类似设计良好的代码库的函数,工具应满足:
1. 自包含
search_file(keyword)
- 直接搜索并返回结果prepare_search()
+ execute_search()
+ get_results()
- 需要三步配合2. 鲁棒(对错误友好)
{"error": "文件未找到", "path": "xxx"}
3. 清晰(一看就懂)
get_user_profile(user_id)
- 明确获取用户资料process(id)
- 不知道处理什么4. 功能重叠最小
search_user(query_type, value)
search_by_name()
、search_by_id()
、search_by_email()
输入参数设计:
❌ 臃肿的工具集
关键原则:
如果人类工程师无法明确说明在给定情况下应使用哪个工具,不能期望AI智能体做得更好。
✅ 最小可行工具集
选择最小可行工具集的好处:
提供示例(few-shot提示)是众所周知的最佳实践,强烈建议使用。
❌ 塞满边缘情况
✅ 选择典型示例
建议选择一组:
💡 对LLM来说,示例是值千言万语的"图片"。
总体指导原则
对上下文不同组成部分(系统提示词、工具、示例、消息历史等):
保持上下文信息丰富但紧凑
我们强调了基于LLM的工作流和智能体的区别。
简单定义:智能体 = LLM在循环中自主使用工具
与客户合作,我们看到领域正收敛到这个简单范式:
工程师在为智能体设计上下文时的思维转变:
传统方法:预推理时间检索
新趋势:"即时(Just in Time)"上下文策略
采用"即时"方法构建的智能体:
不会:
而是:
Anthropic的智能体编码解决方案Claude Code使用这种方法对大型数据库执行复杂数据分析:
head
和tail
等Bash命令分析大量数据这种方法反映人类认知:
人类不会:
人类会:
除了节省存储空间,元数据(文件路径、文件名、时间戳等)本身就能帮助智能体做决策。
元数据 = 关于数据的数据
类比:就像你看书架上的书:
1. 文件路径暗示用途
智能体看到文件路径,就能判断文件用途:
示例1:
tests/test_utils.py
tests/
文件夹示例2:
src/core_logic.py
src/
文件夹2. 文件名暗示内容
示例:
config.json
→ 配置文件utils.py
→ 工具函数main.py
→ 程序入口README.md
→ 项目说明3. 时间戳暗示相关性
示例:
last_modified: 2天前
→ 可能是最近修改的,相关性高last_modified: 2年前
→ 可能是旧代码,相关性低智能体通过元数据组合判断:
场景:修复最近的bug
bugfix.py
而非 config.json
效果:
让智能体自主导航和检索数据也实现渐进式披露——允许智能体通过探索逐步发现相关上下文。
智能体通过探索获得信息:
智能体的工作方式:
效果:
缺点:
风险:没有适当指导,智能体可能:
某些情况下,最有效的智能体可能采用混合策略:
"正确"自主水平的决策边界取决于任务。
案例:Claude Code的混合模型
Claude Code采用混合模型:
CLAUDE.md
文件被预先放入上下文glob
和grep
等原语允许导航环境并即时检索文件适用场景
混合策略更适合动态内容较少的上下文,例如:法律或金融工作
未来趋势
随着模型能力提高:
💡 "做最简单有效的事情"可能仍将是对在Claude之上构建智能体的团队的最佳建议。
长期任务的挑战:
看似显而易见的策略:等待更大上下文窗口
现实:在可预见的未来,所有大小的上下文窗口都会受影响:
为使智能体在扩展时间范围内有效工作,我们开发了三种技术:
当对话接近上下文窗口限制时:
核心目标:
Claude Code的做法:
用户体验:获得连续性,无需担心上下文窗口限制
核心挑战:选择保留什么和丢弃什么
风险:过于激进的压缩 → 丢失微妙但关键的上下文 → 后续才发现重要性
对实施压缩系统的工程师:
步骤1:最大化召回率
步骤2:提高精度
低垂果实示例:清除工具调用和结果
最安全的压缩形式:工具结果清除
也叫:智能体记忆
机制:
以最小开销提供持久记忆
例子:
NOTES.md
文件效果:
展示:记忆如何在非编码领域转变智能体能力
智能体的记忆能力:
关键价值:这种跨总结步骤的连贯性实现长期策略,仅靠LLM上下文窗口无法实现。
作为Sonnet 4.5发布的一部分,Claude开发者平台推出:
记忆工具(公开beta)
允许智能体:
不是:
而是:
主智能体:
子智能体:
清晰的关注点分离:
这种模式在**《我们如何构建多智能体研究系统》**中讨论过:
在复杂研究任务上显示对单智能体系统的显著改进
这些方法间的选择取决于任务特征:
压缩 | ||
笔记 | ||
多智能体架构 |
核心洞察:
即使模型继续改进,在扩展交互中维持连贯性的挑战仍将是构建更有效智能体的核心。
上下文工程代表我们如何使用LLM构建的根本转变。
过去:
现在:
无论:
指导原则不变:
💡 找到最大化期望结果可能性的最小高信号token集合
技术演化:我们概述的技术将随模型改进继续演化
模型能力提升:
核心不变:即使能力扩展,将上下文视为有限资源仍将是构建可靠、有效智能体的核心。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-05
未来三年,最稀缺的AI人才:前线部署工程师
2025-10-05
对 Agent-First 数据库的畅想
2025-10-05
从99.9%到99.99%:Dify高可用部署的5大实战方案
2025-10-05
GPT-5 Instant能修补模型情商漏洞了
2025-10-05
Agentic AI落地企业初见倪端 - 沃尔玛AI应用拆解
2025-10-04
Qwen3 Omni 的“全模态”,到底和多模态有啥不一样?
2025-10-04
小红书数据架构的演进——基于通用增量计算构建全增量实验数仓生产新范式
2025-10-04
用Claude Code经验告诉你:别只盯着 Prompt,上下文才是生死线!
2025-08-21
2025-08-21
2025-08-19
2025-09-16
2025-07-29
2025-09-08
2025-08-19
2025-09-17
2025-09-29
2025-08-20
2025-10-04
2025-09-30
2025-09-29
2025-09-28
2025-09-27
2025-09-27
2025-09-25
2025-09-23