优雅训服大模型:深入理解与实战 Prompt 技巧
ChatGPT 以降,彻底引爆了 AI 领域,大语言模型(Large Language Model, LLM)进入了公众视野。虽然大模型可以达到「类人」的水平,但仍需要以「大模型角度」去思考和对话才能最大限度地利用其威力。这便是 Prompt Engineer(提示词工程师)需要做的事情。本文将总结一些核心的 Prompt 技巧,帮助你优雅地训服大模型。
本质是提问的技巧
大模型第一次达到了「类人」水平,用户可以用自然语言与计算机进行交流。为了达到事半功倍的效果,我们需要精进提问的技巧,这便是 Prompt Engineering。核心在于把大模型视为精通某一领域的专业顾问,以与专业顾问(如导游、咨询师)对话的角度来看待问题。
例如,五一假期想去上海玩,如果只问『五一假期去上海玩,推荐一些行程』,大模型通常会给出一个中规中矩的万能日程,参考价值有限。这并非大模型的错,如果你如此问一个导游,负责的导游会直接反问你一大堆细节问题,因为这是行程所必须的。
为了达到最好的沟通效果,避免「Garbage In, Garbage Out」(垃圾进,垃圾出),需要遵循以下原则:
- 角色设定:视为在与专业人士对话,明确大模型的角色。
- 专注主题:一次对话尽可能专注于一个问题或一个主题。
- 要素清晰:把问题描述清楚,列出关键要素,如时间、地点、人物、关键事件等。
- 限定范围:补充问题细节,限定回答的范围,例如可以做什么、不可以做什么、时间节点要求等。
- 恰当分隔:多多使用标点符号对提问进行分隔,帮助大模型抓住重点。
优化后的提示词示例:『五一假期,从南京出发,坐高铁,目的地上海,亲子 3 日游,不去迪士尼,不去动物园,安排详细行程』。这回得到的回答肯定具有更大的参考价值。
及时补充上下文
大语言模型较以往 AI 的最大进步在于超长的上下文记忆能力,这是它能达到「类人」水平的最主要原因。在与大模型对话时,要及时补充上下文信息。
一方面,你不可能一次性把提问信息全写对,一旦想到新的提示,就要及时给到大模型;另一方面,大模型有时会胡编乱造(这与其温度参数 temperature 控制的行为有关),一旦发现跑偏,需要提供新的提示进行纠正。
此外,如果感觉问题不好理解或对输出有特殊要求,可以提供输出示例(Few-Shot Prompting)。大模型能够很好地捕获这一模式,这对让大模型输出优质回答非常有帮助。
不用担心输入字数过多导致溢出,现代大模型的上下文能力至少在 4096 个 Token 以上,对于大部分常规问题来说足够了。
掌握常见的命令和特殊标记
大模型的输入是自然语言,但计算机毕竟是程序化的机器,因此存在一些特殊的命令和标记来代表常用功能。这些标记的作用在于简化输入,提升效率,特别是在复杂的专业领域问题中,标准化的标记能加强共识程度。
- 命令:简洁、清晰且无歧义的动词,如描述、拟定、写出、规划等。
- 特殊标记:像方括号
[]、三个引号"""、三个###等,用于界定内容块或强调特定部分。
理解专业领域知识
前面的几点是通用的提示优化小技巧,适用于常规的通用问题。如果是专业领域的问题,光有技巧是不够的,还需要领域知识。对领域要有深刻理解,熟悉专业术语,将抽象泛化的需求转化为具体的提示词。
Code Prompts
要想让大模型写出更好的代码,必须尽可能详细地给出代码要素:
- 编程语言:必须指明(如 Python, Java)。
- 参数与格式:输出参数的类型、返回值格式必须指明。
- 限制条件:说明不能用什么库,或者时间/空间复杂度的限制。
- 需求明确:实现什么功能的代码。
# 错误示范
写一个排序函数。
# 正确示范
请用 Python 编写一个快速排序算法函数,要求时间复杂度为 O(n log n),并包含详细的注释和测试用例。
def ():


