上下文工程指南

上下文工程是最近的热门话题,自从安德烈·卡帕蒂在推文中推广它后,每个人都为之疯狂。这与他之前推广“氛围编码”时的情景非常相似,一夜之间成为了互联网上的热门话题。但我觉得上下文工程有更坚实的基础。

1、什么是上下文工程?

可以这样理解:

  • 提示 是你让模型做某事。
  • 上下文工程 是你在提问前准备好模型可能需要的一切。
不是添加更多的文字,而是添加 正确的 文字。

你是在给模型一个合适的角色,一个合适的听众,以及对“好”的清晰理解。如果你不这样做,模型会猜测——而它通常会给出安全、通用的答案。

2、在现实生活中它是如何工作的

这不是一个完美的分步方法。但这是一个有效的一般流程。

2.1 明确你真正想要什么

在你向模型提问之前,明确你期望的是什么。

而不是:

“写一个食谱。”

尝试:

“写一个素食木瓜食谱,听起来像朋友在周日上午11点发来的短信。”

具体说明语气、目的和受众。这有助于模型匹配你的期望。

2.2 提供正确信息

想想模型为了做好工作需要知道什么。

  • 模型假装是谁?
  • 它在和谁说话?
  • 有任何规则吗?(字数限制、时间、语言类型?)
  • 有任何例子可以参考吗?

除非你告诉它,否则模型不会知道这些。如果你不说“保持在30分钟以内”,它可能会给你一个需要几个小时的食谱。如果你不说“像一个新手那样说”,它可能会使用复杂的词汇。

2.3 正确安排输入内容

顺序很重要。一个效果很好的简单结构:

[角色或语气]  
[事实或规则——必须包含的内容]  
[示例——语气或风格的简短样本]  
[提示——最终任务]

最重要的是放在底部——特别是任务,因为GPT更关注接近结尾的内容。

2.4 保持简洁

你没有无限的空间。有令牌限制,而且很快就会填满。

所以删除不需要的内容:

  • 不要重复解释
  • 避免一般的问候或介绍
  • 删除任何无助于模型完成工作的内容

每一行都应该帮助模型理解 说什么怎么表达

2.5 清晰且直白

大语言模型不会看穿文字。如果你想有特定的语气或细节,就明确说出来。把GPT想象成一个聪明但新来的实习生。如果你含糊不清,它会很保守。如果你清晰明了,它就能正确理解。

3、两个真实案例

让我们看看两个案例,改变设置带来了巨大差异。

3.1 🍛 木瓜食谱

目标: 使用木瓜的有趣、快速的素食食谱。

基本提示:

“给我一个木瓜食谱。”

结果: 安全、无聊。没有个性。

经过上下文工程的版本:

[角色]  
你是一个随意的素食美食博主,语气活泼。  

[细节]  
主要原料:木瓜    
时间:少于30分钟    
受众:初学者    
风格:像给朋友发短信  

[示例语气]  
“把木瓜沥干。真的,那个卤水很糟糕。像处理剩余的家庭作业一样撕碎它。把它和芥末籽、大蒜和任何辛辣的东西混合。如果它闻起来像一个多萨车,那你做得很好。”  

[提示]  
用那种语气和格式写一个完整的食谱。

输出: 更好。听起来像人类,没有跳过关键步骤,并且有幽默感。

3.2 关于AI自动化的博客

目标: 一篇针对工程师的文章,警告不要在没有监督的情况下使用AI进行部署。

默认提示:

“写一篇关于AI和自动化风险的博客。”

结果: 一般化。充满流行语。没有真正的观点。

经过上下文工程的版本:

[角色]  
你是一个中年软件工程师,为同行写一篇博客。  

[受众]  
对LLMs既好奇又谨慎的经验丰富的开发者。  

[示例语气]  
“当然,Copilot可以写测试。但仅仅因为CI通过了就让GPT合并代码?这就是计费出问题的方式。不是以崩溃的形式,而是安静的混乱。”  

[提示]  
写一篇700字的博客文章。包括一个关于机器人报税的轻松笑话。

输出: 感觉更贴近生活。不太正式。传达了信息,而不显得像讲座。

4、我是如何想出这个上下文的?

没有工具。没有模板。只是普通的思考,一些试错,然后问自己:“如果我自己写这篇文章,我首先需要知道什么?”

对于烹饪食谱

我没有一开始就想着“GPT能理解什么提示?”
我从“我实际上会喜欢读什么样的食谱?”开始。

一种友好、快速、不太精致的风格。有点像一个擅长做饭但不擅长说明的朋友发来的消息。一旦我有了这个画面,我就反向思考:

  • 语气? 随意,有点凌乱。
  • 受众? 可能是刚开始接触素食烹饪的人。
  • GPT通常哪里出错? 它忘记提到沥干木瓜。所以我提前包含了这一点。

然后我写了一行示例,捕捉到了这种氛围。这一行比完整的解释更能使模型“明白”。

对于AI博客

我想象了这篇博客的目标读者。不是高管。不是初学者。可能是一位疲惫的工程师,已经看过太多关于“AI彻底改变一切”的LinkedIn帖子。

因此,我将其设定为一位经验丰富的开发人员之间的聊天——一个有些怀疑但仍然好奇的人。

我给了模型:

  • 一个明确的角色: “一位有幽默感的中年开发者。”
  • 一个真实的语气示例: 一句话展示了应该使用什么样的讽刺。
  • 还有一个具体的笑话要求 ——不是因为我需要这个笑话,而是因为它迫使模型写得不那么正式。

再次强调,没有花哨的方法。只是思考:如果我自己来做,会是什么样子? 然后将同样的信号提供给模型,就像我需要自己冷启动写作一样。

5、所以,你怎么做的?

你可能已经做了。如果你曾经:

在提示中添加了一个例子 重写了提示以改变语气 给出了受众的简短描述 删除了额外的词以节省空间

— 那么你已经做了一些上下文工程。

要做得更好:

像你正在为一个新人写指示一样思考 不要说“让它有趣”——展示“有趣”是什么样的 总是假设模型需要明确的指导

6、结束语

当GPT给出一个出色的答案时,不只是因为它聪明。是因为你给了它正确的设置。

上下文工程只是给模型一个公平的机会去做一些好的事情。希望你也能尝试用你的提示进行上下文工程!


原文链接:How to do Context Engineering? Step by Step Guide

汇智网翻译整理,转载请标明出处