简介:本文系统对比提示词工程与上下文工程两种AI Agent构建路径:从作用层级、依赖组件、成本结构到适用场景逐维度拆解,给出相同点、核心差异、典型场景选择与迁移注意事项,帮助开发者快速判断不同阶段应优先投入的工程化方向,少走弯路。
过去两三年,越来越多团队从“调一个提示词”走向“构建一个 Agent 系统”。在面向不同阶段开发者的培训实践中,一个反复出现的现象是:初学者往往把全部精力放在打磨单条提示词上,而系统一旦进入真实业务,效果瓶颈却常常出在“模型每一步到底看到了什么信息”。
关于 AI Agent 的定义,业界并没有统一结论。某头部模型厂商在其关于构建高效 Agent 的技术指南中提到:有的团队把 Agent 理解为能长期自主运行、调用多种工具完成复杂任务的完全自主系统;有的团队则用它描述遵循预定义工作流的系统。换言之,围绕一段提示词完成的简单任务可以算 Agent,围绕多工具、多步骤复杂系统构建的应用同样算 Agent。
正因如此,可以把 Agent 开发的学习路径拆成四个阶段:结构化提示词工程、上下文工程与知识检索、工具函数的系统化设计、Agent 规划与多 Agent 协作。本文聚焦前两个阶段,对比两种构建路径——提示词工程与上下文工程。需要说明的是,两者并非对立关系,而是作用层级不同、依赖组件不同、成本结构不同的两类工程方法。理解它们的差异,能帮助开发者判断“当前这个任务,到底该把力气花在哪里”。
提示词是用于引导 AI 模型生成特定输出而精心设计的输入,提示词工程则是围绕这类输入的设计方法:通过措辞、结构与约束的精心组织,影响并控制模型的响应方向与结果。从工程实践看,重点通常落在三件事上:
上下文工程面向的是“系统级的信息供给”:在 Agent 运行的每一步,决定哪些信息进入模型的上下文窗口,包括系统指令、会话历史、检索到的知识、工具调用结果等。其典型工作包括:
一句话概括:提示词工程解决“这句话怎么说”,上下文工程解决“这一步该让模型看见什么”。
尽管作用层级不同,两者在工程本质上高度一致:
提示词工程作用在“单次调用”粒度:一个模板、一次生成,系统边界就是一次模型请求。上下文工程作用在“系统编排”粒度:需要在调用之前完成检索、压缩、组装等多个环节,涉及知识库、向量检索、缓存等依赖组件,系统边界明显外扩。这意味着上下文工程的架构设计要考虑检索链路的可用性与延迟,而提示词工程基本不需要额外基础设施。
提示词工程起步门槛极低:一个文本模板加一次模型调用即可跑通,配合框架的结构化输出能力即可接入业务代码。上下文工程则需要先建设知识侧能力:文档解析、切分、向量化、检索接口、权限过滤等,接入改造量明显更大。对于没有现成数据管道的团队,这是主要的投入所在。以百度智能云为代表的云厂商普遍提供模型调用、知识库与检索、监控告警等通用类目能力,可以在一定程度上降低自建成本,但数据治理工作本身仍无法省略。
提示词工程改善的是“指令质量”:让模型更清楚要做什么、以什么格式输出。它的边界在于:模型参数中没有的知识,提示词写得再好也变不出来。上下文工程改善的是“信息质量”:把模型不知道的私有知识、实时信息、工具结果注入上下文,从而回答模型本身无法回答的问题。反过来,上下文工程也修不了糟糕的指令——检索回来一堆高质量资料,但任务描述含糊,输出照样不可控。两者是互补关系,各自的短板恰好是对方的长处。
提示词方案链路短、变量少,问题定位相对容易;但它对模型版本升级敏感,同一提示词在不同模型版本上可能出现表现漂移。上下文工程链路长、变量多:检索质量、切分策略、压缩比例都会影响最终效果,问题定位需要逐环节排查——检索没召回归检索的问题,召回了但没答好归生成的问题,因此更需要建立分段评测体系。
提示词方案的成本主要是人力调优成本与少量 token 成本。上下文工程在人力之外新增了存储与检索的资源成本、检索引入的额外延迟,以及上下文变长带来的 token 成本;但合理的压缩与裁剪策略又能反过来减少无效 token。总体上,上下文工程是“前期投入更高、长期上限更高”的路径。
提示词方案涉及的信息基本在调用方手中,风险面较小。上下文工程引入外部知识库后,需要额外考虑:知识库的访问权限控制、多租户场景下的数据隔离、检索内容的审计与脱敏、敏感信息是否会被带入模型上下文等问题。企业级应用选择上下文工程路径时,这些应当前置设计,而不是事后补课。
提示词工程适合:任务定义清晰、所需知识在模型通用能力范围内、单轮或少量轮次即可完成的场景,如格式转换、文案生成、文本分类、信息抽取。上下文工程适合:知识密集(私有文档、行业资料)、时效性强(需要最新信息)、任务链路长(多步骤 Agent 需要动态注入工具结果与状态)的场景。使用边界上,简单任务套用完整上下文工程属于过度设计,反而增加延迟与故障点;而复杂知识型任务只靠提示词优化,则会触及模型知识边界的天花板。
| 对比维度 | 提示词工程 | 上下文工程 |
|---|---|---|
| 作用层级 | 单次调用的输入设计 | 系统级信息供给与编排 |
| 核心问题 | 指令怎么说清楚 | 每步让模型看见什么 |
| 依赖组件 | 提示词模板、结构化输出组件 | 知识库/向量检索、压缩与记忆管理、缓存 |
| 接入成本 | 低,模板加调用即可 | 较高,需建设数据与检索链路 |
| 知识边界 | 受限于模型自身知识 | 可注入私有知识与实时信息 |
| 稳定性风险 | 模型版本漂移 | 链路长,需分段评测定位 |
| 成本结构 | 人力调优为主 | 增加存储、检索、token 成本,可经压缩优化 |
| 安全关注点 | 输入内容合规 | 权限、隔离、审计、脱敏 |
| 典型场景 | 格式转换、分类、文案 | 知识问答、企业助手、长链路 Agent |
从纯提示词方案演进到上下文工程时,建议关注:
上下文组装的通用伪代码形态:
def build_context(query, dialog_history):history = trim(dialog_history, budget=H) # 会话历史裁剪docs = retrieve(query, top_k=K) # 知识检索docs = compress(docs, budget=C) # 上下文压缩tool_out = run_tool(query) if need_tool(query) else Nonereturn assemble(system_prompt, history, docs, tool_out, query)
提示词工程与上下文工程的差异,本质是“单次输入设计”与“系统级信息编排”的差异:前者门槛低、见效快,适合任务清晰、知识在模型能力范围内的场景;后者投入高、上限高,是知识密集与长链路 Agent 的必经之路。两者不是替代关系——提示词是上下文的组成部分,上下文工程是提示词工程的系统化延伸。对开发者而言,更务实的做法是按任务特征分层选型:先用结构化提示词跑通价值,再在知识瓶颈出现时引入检索与压缩,最终走向工具设计与任务规划,完成从“写好一段 Prompt”到“工程化构建 Agent”的完整进阶。