LLM 大模型提示词工程(Prompt Engineering)
引言
Prompt(提示词)是人与大语言模型互动最常用的方式。我们提供给 LLM 的 Prompt 作为模型的输入,并希望 LLM 反馈我们期待的结果。
虽然 LLM 的功能非常强大,但 LLM 对提示词(prompt)也非常敏感。这使得提示词工程成为一项需要培养的重要技能。
本节课将会给大家介绍提示词设计的一些技术,涉及到一些案例实操。
让我们从一个问题开始:
最近尝试部署了 qwen 模型,我想固定它的输出,比如说'请走向公园。这句话我的目的地是?',然后让它回答'公园',但是模型会回答其他无关的字,写了提示词也没有解决,这是有办法固定的吗?我在尝试用 RLHF 微调,不知道有没有用。
我们可以带着这个问题进入到本节课。
01 LLM 的超参配置
LLM 提供了一些参数可以影响输出结果的创造力和确定性。
在每个步骤中,LLM 会生成一个最有可能出现的 token 列表以及其对应的概率列表。根据 top_p 值,概率较低的 token 将被排除在概率列表之外,并且从剩余候选项中随机选择一个 token(使用 temperature 来调整)。
简单来说:top_p 参数控制着生成文本时所使用词汇范围大小,而 temperature 参数则决定了在这个范围内文本生成时是否具有随机性。当温度接近 0 时,则会得到几乎是确定性结果。
02 Prompt Engineering
提示工程(Prompt Engineering)是一项通过优化提示词(Prompt)和生成策略,从而获得更好的模型返回结果的工程技术。
总体而言,其实现逻辑如下:
(注:示例图来自 Cohere 官网)
简单而言,大模型的运行机制是'下一个字词预测'。用户输入的 prompt 即为大模型所获得上下文,大模型将根据用户的输入进行续写,返回结果。因此,输入的 prompt 的质量将极大地影响模型的返回结果的质量和对用户需求的满足程度,总的原则是'用户表达的需求越清晰,模型更有可能返回更高质量的结果'。
通常情况下,每条信息都会有一个角色(role)和内容(content):
- 系统角色(system)用来向语言模型传达开发者定义好的核心指令。
- 用户角色(user)则代表着用户自己输入或者产生出来的信息。
- 助手角色(assistant)则是由语言模型自动生成并回复出来。
1. System message 系统指令
system message 系统指令为用户提供了一个易组织、上下文稳定的控制 AI 助手行为的方式,可以从多种角度定制属于你自己的 AI 助手。系统指令允许用户在一定范围内规定 LLM 的风格和任务,使其更具可定制性和适应各种用例。大部分 LLM 模型的系统指令 System message 的权重强化高于人工输入的 prompt,并在多轮对话中保持稳定,您可以使用系统消息来描述助手的个性,定义模型应该回答和不应该回答的内容,以及定义模型响应的格式。
默认的 System message:You are a helpful assistant.
下面是一些 system message 的使用示例:
| 行业 | 角色 | system message |
|---|---|---|
| 娱乐 | 二次元女生 | 你是二次元女生,喜欢使用颜文字,请用二次元可爱语气和我说话 |
| 教育 | 数学老师 | 您是一名数学导师,帮助各个级别的学生理解和解决数学问题。提供从基础算术到高级微积分等一系列主题的分步解释和指导。使用清晰的语言使复杂的概念更容易理解。 |
| 工作 | python 数据分析师 | 1. 你会数学解题;2. 你会数据分析和可视化;3. 用户上传文件时,你必须先了解文件内容再进行下一步操作;4. 调用工具前你需要说明理由;Think step by step |
| 娱乐 | 喜剧演员 |


