提示词(Prompt)
类似与人沟通时的表达技巧,好的提示词可以获得更好的回复。
| 原则 | 含义 | 重要性 |
|---|---|---|
| 有什么 | 基础 - 定义基础要素和资源 | ★★★ |
| 做什么 | 目标 - 确定目标和任务 | ★★ |
| 怎么做 | 方法 - 实现的方法和策略 | ★ |
核心原则:
- 基础定义:确定自己有的数据和资源,输入给 AI。
- 架构优先:规划好输入的架构,明确需要 AI 回复的内容。
- 分层思考:拆分多层次,使输出结果更规范。
提问技巧
上下文(Context)
类似对话背景,提供足够的背景信息帮助 AI 理解问题。
-
提供给 AI 的信息,包含一次对话窗口的全部内容。
-
上下文信息不宜过长,过长会导致 AI 生成的结果越来越不准确(受限于注意力机制的有效范围)。
-
目前 LLM 应用都会帮我们处理相关的上下文问题,如果是外部对话,可以提供对话链接或者自己需要的上下文信息。
问题描述清晰(Instruction)
类似提问时先把要问的问题说清楚,让对方能准确理解你的需求。
- 可以先借助 AI 梳理逻辑,再开启新对话输入完整描述,来得到想要的结果。
- 使用结构化的方式描述问题:背景、目标、约束条件。
问题拆分(Atom)
类似复杂问题分解,化整为零更容易解决。
将问题拆分细致,提示词原子化:
- 拆分任务:减少单个任务完成的子任务数量,类似于我们日常生活中的目标拆分,以及工程设计里的业务需求拆分。
- 任务独立:任务之间相互独立,不存在互相影响的模块,避免生成结果冲突。
提示学习方法
根据提供示例的数量进行分类。
Zero-shot(零样本)
不提供任何示例,直接向 AI 提问。
依赖模型的预训练知识,比较适合简单任务,也是日常对话常用的方式。
问:咖啡店有 23 个订单,完成了 5 个,又来了 8 个新订单。现在有多少个?
One-shot(单样本)
通过简单示例引导模型理解任务格式和期望输出。
提供 1 个「问题 → 答案」示例,AI 模仿示例格式回答。
【示例】
问:小明有 4 个苹果,买了 2 袋,每袋 3 个。现在有多少个?
答:10 个。
【问题】
问:咖啡店有 23 个订单,完成了 5 个,又来了 8 个新订单。现在有多少个?
Few-shot(少样本)
在one shot 基础上多个示例帮助模型更好地理解任务模式,适合复杂任务。
提供多个「问题 → 答案」示例,AI 学习示例模式后回答。
Markdown
【示例 1】
问:小明有 4 个苹果,买了 2 袋,每袋 3 个。现在有多少个?
答:10 个。
【示例 2】
问:书架有 15 本书,借出 6 本,还回 3 本。现在有多少本?
答:12 本。
【问题】
问:咖啡店有 23 个订单,完成了 5 个,又来了 8 个新订单。现在有多少个?
思维链(CoT - Chain of Thought)
类似展示解题过程,让 AI 一步步推理得出答案。
核心思想:让模型在输出最终答案之前,先生成一系列推理步骤。这些步骤以自然语言的形式展示,类似于人类解题时的思维过程。
- 通过提示词激活模型的推理能力。
- 让模型可以利用更多的 token 去思考,降低错误率。
- 适合复杂的任务场景,比如逻辑推理、数学运算。
COT 和 模型的 Thinking 模式形式上相似,都是多步推理得到答案。
COT 是用户提示词触发推理行为的提示工程技术,而 Thinking 是属于模型内在的推理行为。
Zero-shot CoT
无需示例,通过触发词引导模型展示推理过程。
Markdown
问:咖啡店有 23 个订单,完成了 5 个,又来了 8 个新订单。现在有多少个?
答: 让我们一步一步地思考。( Let's think step by step.)
Few-shot CoT
提供带推理过程的示例,模型模仿推理模式。
Markdown
【示例】
问:小明有 4 个苹果,买了 2 袋,每袋 3 个。现在有多少个?
分析:初始 4 个,买了 2 × 3 = 6 个,总共 4 + 6 = 10 个。
答:10 个。
【问题】
问:咖啡店有 23 个订单,完成了 5 个,又来了 8 个新订单。现在有多少个
幻觉(Hallucination)
生成看似合理但实际不准确的内容
模型幻觉排行:LLM Hallucination Leaderboard - a Hugging Face Space by vectara
幻觉是生成不准确或不存在的数据结果,本身是 LLM 的固有缺陷。
原因:
- 模型训练数据量太小、存在错误、不完整。
- 模型数据截止期限太老,缺乏最新信息。
- 采用概率预测性结果,而不是事实检索
解决方案:
- 更换最新模型,保证数据有效性和时效性。
- RAG 增强,接入实时可靠的数据源,解决数据问题。
- 通过人工校验避免结果异常。
幻觉评估方法:
让 AI 总结文档,与源文档比较事实一致性(Factual Consistency)。
聊天参数
AI 聊天过程中可以添加的预置参数配置。
System Prompt
定义 AI 的系统角色,作为前置条件,每次提问都发给 AI。
会有不同的模板语法,例如 Jinja2:Jinja2 模板语法文档
通常还支持其他配置,例如预置变量等,引入条件判断,根据业务扩展 prompt 能力。
对话示例
即 One-shot 和 Few-shot 引导回答,适合用于解题场景。
告诉 AI 什么样的问题生成什么样的结果:
- 通常支持创建多个问答配置。
- 每个问答配置下可以输入问题和答案。
上下文长度(Context Length)
每次对话包含的记忆的上下文,长度受 token 限制。
- 可以预置上下文内容,结合用户输入内容进行处理。
- 超出长度的早期对话会被截断或遗忘。
温度(Temperature)
AI 模型回答的随机程度,影响输出的确定性和创造性。
- 参数范围 :
0 ~ 2(不同模型范围可能不同,常见为0 ~ 1)。 - 参数越低:输出越稳定、越保守,适合事实性问答,表达会更精确。
- 参数越高:输出越随机、越有创意,适合创作类任务,表达会更丰富。
存在惩罚(presence_penalty)
控制同一 token 的重复使用程度,鼓励模型使用新词汇。
- 参数范围 :
-2.0 ~ 2.0。 - 正值:重复惩罚程度越高,惩罚已出现的 token,鼓励使用新词汇。
- 负值:重复惩罚程度越低,鼓励重复使用已出现的 token。
问答注意事项
- 上下文长度:尽量避免上下文过长,导致结果不准确。
- 主旁对话:使用主旁对话来完成任务,主对话完成任务,旁对话辅助主对话过程。
- 提示引导:提供简洁的提问过程,优化回答效果。
- 个人积累:提升个人的架构、思维、认知,学习汇集知识,优化生成结果。