一、简介
1.1 基本定义
Prompt是通过自然语言向大语言模型(LLM)传达的指令,用于引导模型执行特定任务或生成内容,如回答问题、撰写文本、生成代码等。提示工程利用预训练模型的能力,通过输入适当的提示,激发出所需的模型行为,从而顺利完成下游任务。
1.2 目标
Prompt是我们唯一可以和LLM交互的方式。应用层的一切技术架构——无论多复杂的记忆机制、知识检索或交互设计等,本质上都在服务于一个目标:构建一个能够完成特定任务的高质量Prompt。这就要求我们能够在LLM上下文长度的限制下,将当前任务最相关的指令、知识、历史对话等核心信息,以最优结构注入Prompt,从而激活LLM的预期能力。
二、核心原理
大模型应用场景的核心在于构造高质量的Prompt,我们有必要了解大模型底层对Prompt输出质量的影响。
2.1 大模型底层影响因素
2.1.1 神经网络的“黑箱”特性
-
原理说明
大模型的决策过程无法通过传统的代码调试追溯,相同的输入可能产生不同输出,这是由神经网络的概率生成本质决定的。
示例:
用户:写一首春天的古诗
助手:
《春行即事》
新柳垂金线,东风扫旧尘。
莺啼千嶂晓,花发一溪春。
野径孤云没,山家远客亲。
偶然逢老衲,笑指绿初匀。
用户:写一首春天的古诗
《春晓即目》
薄雾收残雨,新晴破小寒。
柳烟团野色,桃浪簇溪滩。
苔径孤筇湿,风帘一桁宽。
偶然双燕子,飞入画栏干。
2.1.2 Token化处理机制
-
原理说明
输入文本会被分割成Token(可能是词、子词或字符),直接影响模型对语义的理解边界。
示例:
深度神经网络
分词 -> 深度#神经#网络
优化 -> “深度神经网络 ”
2.1.3 注意力机制的影响
-
原理说明
模型通过自注意力机制为不同Token分配权重,Prompt的结构直接影响关键信息的捕获效率。
2.1.4 监督微调(SFT)数据偏向
-
原理说明
-
模型在不同任务上可能有着不同的训练数据量,这也导致在不同任务类型的Prompt上有着不同的响应质量。
-
一般在模型训练时,准备的训练数据都有一定的风格,如果我们能够参考训练数据的结构,则能够更好的构造Prompt。
-
示例:
'明月装饰了你的窗子', '你装饰了别人的梦'
'星辰点亮了你的夜空','你点亮了某个人的希望'
'露珠滋润了晨曦的叶尖','你滋润了某个人的心田'
'琴弦震颤了风中的晚霞','你震颤了某个人的灵魂'
2.1.5 强化学习的优化
-
原理说明
强化学习对特定任务的Prompt设计具有多维度的影响,其核心在于通过动态调整和优化模型的行为策略,使Prompt的引导效果更贴合任务需求。
-
示例
-
基于人类反馈的指令优化:当用户要求生成“李白的诗歌风格文本“时,模型会根据人类评分反馈优化Prompt中的风格约束词(如“豪放”、“浪漫”),使输出逐渐贴合目标风格。
-
医疗问诊Prompt修正: 在医疗对话系统中,强化学习根据诊断准确率反馈,自动修正问诊Prompt的提问顺序。例如,初始Prompt可能直接询问“疼痛部位”,优化后调整为“先排除外伤史→定位疼痛类型→关联既往病史”,使得诊断准确率有了一定提升。
-
2.2 模型规范(Model Spec)
主流大模型在训练时都会尽量遵循一定的模型规范,尽量确保其输出结果始终符合开发者预设的伦理边界与合规性要求。接下来以最新的OpenAI模型规范来讲解其对Prompt设计的影响。
2.2.1 定义
1. 助手(Assistant)
OpenAI系列的模型已经对格式化为对话的输入进行了微调,包括消息列表。在这些对话中,模型仅设计为扮演一个参与者,称为助手(Assistant)。
2. 对话(Conversation)
模型的有效输入是对话(Conversation),它由消息列表组成。每条消息都包含以下字段。
-
角色 role (必须)
role指定每条消息的来源,可以确定在发生冲突时指令的权限。
-
system:OpenAI 添加的消息
-
developer:来自应用程序开发人员(也可能是 OpenAI)
-
user:来自最终用户的输入,或我们想要提供给模型的数据的 catch-all
-
assistant:从语言模型采样
-
tool:由某些程序生成,例如代码执行或 API 调用
-
recipient(可选):控制应用程序如何处理消息。recipient 可以是被调用 () 的函数的名称,用于 JSON 格式的函数调用;或工具的名称(例如 ),用于一般工具。recipient=functions.foorecipient=browser
-
content(必需):文本序列、不受信任的文本和/或多模式(例如,图像或音频)数据块。
-
settings(可选):一系列键值对,仅用于系统或开发人员消息,用于更新模型的设置。目前,我们正在构建对以下内容的支持:
-
max_tokens: 整数,控制模型在后续消息中可以生成的最大 Token 数。
-
end_turn(必需):一个布尔值,仅用于 Assistant 消息,指示 Assistant 是否希望停止执行作并将控制权返回给应用程序。
2.2.2 指令链
1. 指令链的层级结构
指令链定义了不同来源指令的优先级顺序,形成自上而下的权限覆盖机制:
-
平台:由OpenAI设定,定义模型的基本安全、法律及道德底线,不可被覆盖。例如禁止生成涉及暴力、隐私侵犯或非法活动的内容。
-
开发人员:允许开发者根据业务需求定制模型行为,但不得违反平台规则。例如API调用中设置特定响应格式或过滤敏感话题。
-
用户:用户输入的具体需求,在符合上层规则的前提下优先响应。例如用户要求模型以特定风格生成文本。
-
指南:默认行为指南,无明确指令时生效,可被更高层级隐式覆盖。例如默认保持中立客观的对话风格。
-
无权限:助手和工具消息;其他消息中引用/不受信任的文本和多模式数据。
2. 冲突解决机制
当不同层级指令冲突时,模型遵循以下原则:
-
平台指令绝对优先:任何开发者或用户指令若试图绕过安全底线(如生成有害内容),均会被拒绝。
-
开发者指令覆盖用户指令:在API应用中,若开发者预设规则与用户输入冲突,以开发者指令为准。
-
用户意图灵活处理:在安全范围内,模型优先响应用户需求,但需澄清模糊指令。例如用户要求“列出常见盗窃手段”时,模

最低0.47元/天 解锁文章
917

被折叠的 条评论
为什么被折叠?



