目录
一、什么是提示词工程
提示是指输入到大型语言模型中用于触发响应的信息,可以理解为知道说明。其中包括:
- 任务背景
- 数据
- 对话/操作历史
- 指令
- 示例
- 或者是其他内容
二、提示词工程常用技术
2.1 基础技术
2.1.1 零样本提示
Human:请帮我将下面内容翻译成英文:“你吃饭了吗? Assistant:... |
2.1.2 单样本提示
Human:”我想从洛杉矶飞往迈阿密“ Assistant:机场代码[LAX, MIA] Human:”我想从达拉斯飞往旧金山“ Assistant:机场代码[ |
2.1.3 少样本提示
Human:”我非常讨厌手机没有点“ Assistant:情感(负面) Human:”今天很开心“ Assistant:情感(正面) Human:”这是一个文章的链接“ Assistant:情感(中性) Human:{{您的输入}} Assistant:情感( |
2.2 进阶方法
2.2.1 思维链(CoT)
- 通过中间推理步骤实现步骤实现复杂推理
- 引入示例来改进推理任务的结果
- 提供模型输入过程透明度
2.2.2 检索增强生成(RAG)
- 丰富内部知识库中提示的上下文
- 使用提示定位减少幻觉所带来的影响
- 最使用于封闭式回答和聊天机器人的用例
三、LLM与提示词指南
3.1 如何得到好的提示
在为评估测试构建测试用例时,尽量综合考虑多有的特殊用例。常见的特殊用例包括:
- 信息不总所导致的答案质量不佳
- 用户输入不当(拼写错误、有害内容、偏离主题的请求、无意义的内容等)
- 用户输入过于复杂
- 用户未输入
3.2 使用明确直接的语言
LLM对于明确直接的指令响应最佳,如果不太确定,可以使用这条用于判断指令是否明确的黄金法则:
- 向同事展示您的指示,看看他们是否能按照指令给出您想要的答案。
人类:写一首有关机器人的俳句 助手:一下时有关机器人的俳句 金属身体活动 电路计算着任务 机器模仿生命 人类:写一首有关机器人的俳句。不要导言,直接给出诗句 助手: 金属身体活动 电路计算着任务 机器模仿生命 |
3.3 使用示例
示例是帮助LLM表现出理想行为的最简单有效的工具
- 提供给LLM的示例必须包含边缘用例
- 一般情况下,更多的示例=以延时和Token数的代价换取更可靠的响应
人类:我会给你提供一些引文,请你给出该引文的作者。 以下为示例: <example> 引文: ”当理性不得不一次又一次地面对不可能的事情时,除了顺从,别无他法。”- N.K Jemisin《第五季》 作者:N.K.Jemisin </example> 引文:“一些人类认为,智慧物种在扩散到外太空之前就已经灭绝了。如果他们是对的,那么寂静的夜空就是沉寂的墓地。”- Ted Chiang《呼吸》 作者: 助手:Ted Chiang |
3.4 为LLM留出思考的时间
有助于排查LLM的逻辑错误,了解提示指令没有表述清除的地方。
人类:[提示的其他内容]回答前请使用<thinking></thinking>XML标签给出问题的思考过程。接着使用<answer></answer>XML标签给出答案。 助手:<thinking>[...思考过程]</thinking> <answer>[回答]</answer> |
3.5 分配角色(或角色提示)
LLM有时需要了解所需扮演的角色背景。分配角色可以从以下两个方面提示LLM的响应:
- 提高LLM在某些情境(如解决数据问题)下的准确性
- 使得LLM的言行举止更贴近角色
人类:解决这个复杂的逻辑问题。{{PUZZLE}} 助手:[错误响应] 人类:你是一个专业的逻辑机器人,专门用来解决复杂的逻辑问题。请解决这个复杂的逻辑问题。{{PUZZLE}} 助手:[正确响应] |
3.6 使用XML标签划分各个部分
LLM很难理解没有条理的提示。正如章节标题及其他标题可以帮助人类梳理信息,XML标签<> </>也可以帮助LLM理解提示的结构。
人类:你好,Lebron。请在早上6点到达,我定在了这个时间。修改这封电子邮件,让语气更礼貌些。 助手:亲爱的Lebron,希望你能收到这个消息... 人类:你好,Lebron。<email>请在早上6点到达,我定在了这个时间。</email>修改这封电子邮件,让语气更礼貌些。 助手:团队成员早上好,希望你们度过了一个轻松的周末... |
3.7 给出输出格式,站在LLM的角度进行回答
可以通过以下方式让LLM以预期给是进行回答:
- 明确给出你期望的输出格式
- 站在LLM的角度进行回答,给出LLM响应的开头部分(“助手:”之后的内容)
人类:写一首有关{{ANIMAL}}的俳句。使用JSON格式,键分别为"first_line"、"second_line"、"third_line"。 助手:{"first_line":"睡在太阳下","second_line":"蓬松的皮毛温暖柔和","third_line":"慵懒的小猫在做白日梦"} |
四、生成式AI应用实践
4.1 生成式AI-落地参考流程
实证方法:经常对提示进行测试和迭代!
4.2 生成式AI-用例构建与初始提示词构建
4.2.1 用例构建
- 专业标注团队:通过专门的数据标注团队,为用例构建提供保障;
4.2.2 初始提示词构建
- 业务需求指导:根据产品团队对功能的规划,编写符合产品需求的prompt。
- 工程经验辅助:结合提示词工程师的经验,对prompt进行工程化(例如:输入输出格式控制)。
4.3 生成式AI-评测标准
矢量标准是一种创新的模型评估方法,引入了不同的数据维度,并对其进行量化打分。 通过综合考虑维度的得分,矢量评测标准能够更全面地反映模型/PE的真实水平,帮助研究者发现模型/PE的优势和不足,进而有针对性地进行优化。
|
4.3.1 提示词关注
- 正向最大化
- 引导负向
- 影响最小化
4.3.2 样张数据库
- 正向样张
- 负向样张
- 梯度样张
- 模糊样张
4.3.3 大语言模型评测
- 根据梯度标准,分维度进行打分
4.4 生成式AI-前沿探索工具
4.4.1 LangChain
简化大语言模型应用开发流程的开源库
|
4.4.2 PromptFlow
协助prompt工程师管理工作流程的平台
|
4.4.3 AutoGPT
探索通用人工智能路线的开源项目
|