原创 张汉东 2025-04-05 00:32 美国
提示词工程就像把你的大脑外化给一个受过教育但不了解特定主题的人。这需要你分析自己的想法,直到你完全理解它们,然后以任何有理性的人都能理解的方式表达出来。
“视频内容概要:Anthropic 的一些提示工程专家——Amanda Askell(对齐微调)、Alex Albert(开发者关系)、David Hershey(应用人工智能)和 Zack Witten(提示工程师),反思了提示工程是如何发展的,提供了实用建议,并对随着人工智能能力的增长,提示可能会如何变化进行了思考。
什么是提示工程
也许你也有共同疑问:只是和大模型交流而已,为什么称其为工程?
“视频中四人也互相调侃,大家都可以和大模型沟通,但为什么只有 Zack Witten 是专职的「提示工程师」,而其他三人则不是。
对于「提示词」而言,工程体现在哪些方面?
对此,Zack 给出一个解释:**"工程"一词体现在其试错和迭代的本质上**。提示词工程的核心是"尝试让模型完成任务"和"最大限度地发挥模型的潜能"。
总的来说,这是一门关于清晰沟通的艺术。
虽然提示词可能看起来像是自然语言代码,但大家认为,试图用过于抽象的方式来构建提示词可能会适得其反。最好的方法通常是提供明确的任务描述,而不是尝试构建复杂的抽象。
David 补充道:"如果你将提示词视为编程模型的方式,你需要考虑数据来源、可用资源以及延迟和数据量之间的权衡。构建模型周围的系统需要足够的系统思维。"
什么造就了优秀的提示词工程师?
Amanda 说道,“成为优秀的提示词工程师和成为优秀的作家相比,其实没有太大的区别。因为你必须要能够清楚地陈述事物,清楚地理解任务,思考并更好地阐述概念”。
但提示工程和写作的最大区别在于:提示工程你可以和大模型反复地迭代,并能得到及时的反馈,你能及时观察到你的提示词里哪部分内容被误解了。而写作就不同了,书写完就写完了,你写作的内容没有清晰传递给读者的话,你也无法及时得到反馈。
“我很赞同这个类比。
总结下来,优秀的提示词工程师需要具备几个关键特质:
"一个很明显的区别是,有些人只会写下他们自己知道的内容,而不会系统地分析完成任务所需的全部信息,"David 解释道。
所有人都强调了仔细阅读模型输出的重要性,这相当于机器学习中常说的"看你的数据"。正如 Zack 所说:"如果你不阅读模型输出,你甚至可能不会注意到它犯了错误。"
如何改进提示词
讨论者们分享了一个有效的技巧:当模型输出不如预期时,直接询问模型哪里出了问题。
"如果你告诉它'你答错了,你能思考一下为什么吗?你能编辑我的指令使你不再犯这个错误吗?'很多时候,模型会给出正确的解答。" Amanda 解释道。
另一个重要的提示词优化方法是"给模型一条出路"。如果你预期会有边缘情况,告诉模型当遇到不确定情况时应该如何反应(比如输出一个特定标签)。这不仅能避免模型给出错误的回答,还能帮助你识别数据集中的问题样本。
何时该信任模型
主持人向 Amanda 提出了一个很好的问题:何时该信任模型?
Amanda 说,“她默认永远不会信任模型”。
但是在有一套精心构建的包含了几百条提示词的情况下,模型的数百次输出都具备一致性的「信号」,她才会信任模型。
关于诚实、角色扮演和隐喻
小组成员就是否应该对模型"诚实"产生了一些分歧。
传统的提示词技巧之一是让模型扮演某个角色或欺骗PUA 大模型(如"你是一位高中教师" 或 “我会给你 500 美元”等),但 Amanda 提出了不同看法:
"随着模型变得更加强大并理解更多关于世界的知识,我不认为有必要对它们撒谎。如果你在构建语言模型评估,为什么要假装你是在为学生准备测验?模型知道什么是语言模型评估。"
“Amanda 会告诉大模型,她是谁,她正在做什么,非常诚实地向大模型坦白一切。
David 指出,人们经常使用角色扮演作为捷径,但这可能导致模型没有做你真正想要的任务。相反,明确描述模型所处的实际环境(比如"你是嵌入在这个产品中的聊天窗口")通常更有效。
Zack 提出了一个微妙的区别,他认为虽然不应该让模型扮演角色,但使用隐喻来帮助模型理解任务有时很有用。比如,让模型像评分高中作业一样评价图表的质量。
模型推理的真实性
关于链式思考(chain-of-thought)和模型推理的讨论特别有趣。当被问及模型的推理步骤是否"真实",还是仅仅是计算的占位符时,小组提出了一些有趣的观点。
David 指出:"这是一个哲学问题,但我知道的是,它确实有效。如果你结构化模型的推理过程并帮助它进行推理,模型表现会更好。"
Zack 提到一个测试方法:"如果你删除模型用来得到正确答案的推理,并用看似合理但导向错误答案的推理代替,看看模型是否会得出错误结论。"
有趣的是,参与者尝试过让模型在回答前重复一些无意义的词汇(如"嗯"和"啊"),但这对提高答案质量没有帮助,这表明结构化推理确实在起作用,而不仅仅是为了给模型提供更多的计算空间。
提示词需要被正确格式化吗
讨论中也提到一个问题:提示词的语法和格式是否对大模型的准确输出存在影响?
Zack 说到,“我通常会这么做,但我认为这不是必须的。重要的是你需要对细节更加关注,就像 Amanda 说的,你应该对提示词投入像代码一样的爱。这有点像讨论哪门编程语言更好。”
Amanda 说,“别人看我的提示词,通常会说,这里面有错别字和语法问题,但是我说,大模型知道我的意思。我认为大模型不会在意这些细节,只要我描述清楚我的意思就好了。”
大家认为提示和预训练模型是不一样的。Amanda 给大模型包含错别字的提示词,但是大模型不会给 Amanda 包含错别字的回复。
“提示词有很多风格,但不管什么风格,重要的是能和大模型清晰地沟通。 This is the way !
企业、研究和一般聊天中的提示词差异
提示词工程在不同环境中有着不同的侧重点:
Amanda 解释了她在研究环境中的方法:"我给出的例子通常是说明性的,而不是与模型将要处理的数据完全一致。如果例子太相似,模型可能会给出过于僵化的回答。"
David 补充道:"企业提示词必须考虑将被使用数百万次的情况,必须测试各种可能的使用方式和输入数据。"
提高提示词技能的建议
小组成员分享了几条提高提示词技能的建议:
“所以,分享提示词并查看其他人的反馈,也是提高提示词技能的一种方式。
模型"越狱"背后的原理
关于如何"越狱"(jailbreak,即绕过模型安全限制)的讨论揭示了一些有趣的见解。虽然具体机制不完全清楚,但 Amanda 推测:"有些越狱技术是让模型完全脱离于其训练数据的分布外的情况,比如使用大量 token 或不寻常的文本。"
David 将越狱比作黑客行为:"了解系统如何工作并尝试各种方法。有些越狱是基于对模型如何预测文本的了解,有些是基于模型如何处理推理,还有些利用了多语言训练数据的差异。"
提示词工程的演变
随着模型从预训练向RLHF(基于人类反馈的强化学习)发展,提示词工程也在变化:
Zack 指出:"每当我们发现一个很好的提示词技巧或窍门,下一步就是如何将其训练到模型中。因此,最好的技巧往往是短暂的。"
例如,以前需要明确告诉模型对数学问题进行逐步思考,但现在模型已经自然地学会了这一点。
David 提到了他对模型能力的信任增加:"我越来越倾向于信任模型处理更多信息和上下文,相信它能够将这些融合到任务中。以前我会担心给模型太多信息会让它感到困惑。"
Amanda 分享了一个有趣的做法:"当我想让模型学习一种提示技术时,我直接给它相关论文。人们往往没有这种直觉,但模型完全能够理解论文并应用其中的技术。"
Amanda 同时提到一个「元提示」的概念,经验丰富的提示词工程师经常大量使用元提示词。她指出,她花费大量时间"寻找能让模型生成她想要的各种输出或查询的提示词"。她向模型提供关于提示词技术的学术论文,然后要求它实现这些技术——本质上是使用元提示词将研究转化为实际应用。
“元提示词,本质上是"关于提示词的提示",利用 AI 来帮助创建更好的提示词。就像元编程,是让代码生成代码。比如,普通提示词"写一个关于龙的故事",而元提示词则是"生成一个能够产生引人入胜的龙的奇幻故事的提示词"。
提示词工程的未来
关于提示词工程的未来,小组提出了一些有趣的展望:
Amanda 用设计师类比解释了这一转变:"这可能从'临时工'关系转变为'设计师'关系。设计师会对客户说'让我为你制作一个海报,要醒目'的要求提出澄清问题,因为这对他们来说可能意味着7000种不同的东西。"
David 分享了他已经开始让 Claude "采访"他的经历:"我发现最难的部分是从我的大脑中提取正确的信息集。所以我特别要求 Claude 采访我,然后将其转化为提示词。"
总结
Amanda 对提示词工程提供了一个精辟的总结,被 Alex 称为"他听过的最好的提示词工程描述":
"提示词工程就像把你的大脑外化给一个受过教育但不了解特定主题的人。这需要你分析自己的想法,直到你完全理解它们,然后以任何有理性的人都能理解的方式表达出来。"
提示词工程正在从一门关于技巧和窍门的艺术,转变为一门关于清晰沟通和明确目标的学科。随着模型变得越来越强大,重点已经从"欺骗"模型做特定事情,转向有效地传达我们真正的意图并让模型帮助我们阐明自己的想法。
无论未来如何发展,清晰的思考、有效的沟通以及理解模型的能力和局限性,将继续是成功提示词工程的基础。
感谢阅读。视频的讨论过程也很精彩,推荐大家去看原视频。