RAG生成(二):提示词工程
提示词概述
提示词工程(Prompt Engineering),旨在通过开发和优化提示来有效利用语言模型的潜力。
提示词工程是为生成式 AI 模型设计输入以获取最佳输出的实践。 这些输入被称为提示词(Prompt) 。
提示词工程核心理念是,通过提供更优质的输入,可以让生成式 AI 模型(如大型语言模型)生成更符合需求的结果,也就是让模型能够更好地执行各种任务 ,包括生成创作,生成代码,聊天互动等。
一个通用的提示词通常包含以下几个元素:
1. 指令(Instruction):指明模型要执行的特定任务或操作。
2. 上下文(Context):为模型提供额外信息或背景,可以帮助引导模型生成更准确的响应。
3. 输入数据(Input Data): 我们希望模型回答的问题或感兴趣的输入内容。
4. 输出指示符(Output Indicator):指定模型的输出类型或格式,例如格式、是否要求生成代码、总结文本或回答具体问题。
提示词工程不仅仅是设计提示,而是通过深刻理解模型的功能和局限性,创造能够与模型输入产生最佳互动的提示,这其中包含了一系列的技巧。
RAG中提示词工程的技巧
这些技巧就是解决RAG中的问题,如缺失内容,格式错误,缺乏细节,回答不全面等采取的具体措施, 也是对评测指标答案及时性、信息整合能力、拒答能力、检错和纠错能力所做的针对设计。
1. 具体指令法 (优化指令)
指定回答预期,防止内容缺失,回答不全面:
清晰的指令可以让模型输出:更明确的任务目标和更符合预期的内容。
1 | 请根据上传的银行业报告,简洁总结当前的市场趋势,重点分析政策变化对行业的影响,输出为以下Markdown格式: |
2 . 解释理由法 (优化指令, 强调指令的原因)
提升模型对任务特定规则或背景的理解能力:
在编写提示时,向模型解释为什么某些任务需要特定的处理方式。这样可以帮助模型更好地理解任务背景,从而提高输出的质量和相关性。
1 | 请生成一份简明扼要的银行业报告摘要,不要逐字重复段落内容。原因:读者可以访问完整文档,如果需要可以详细阅读全文。 |
3. 任务角色设定 (优化上下文,指定模型身份、立场和责任)
提升模型专业领域回答能力:
通过为模型设定特定的角色身份,可以帮助模型更好地理解任务要求和角色责任,从而输出更加一致、专业的内容。
1 | 你的角色: 知识库专家 |
4. 文档基础说明 (优化上下文,对输入数据提供背景和来源信息)
奠定模型任务推理的基调:
为模型提供文档的背景信息和文本来源可以帮助奠定任务基础,让模型更好地进行任务推理和回答。
1 | 以下是关于银行业政策变化的相关规则,它们将用于回答有关政策对银行业影响的问题。 |
5. 示例学习 (优化输出指示符)
优化回答细节以及格式:
通过给模型提供多个参考示例,模型可以基于这些示例进行模式识别,进而模仿、思考并生成类似的答案。
1 | 以下是两个关于银行业的分析示例,请按照这种格式对新的报告进行分析: |
6. 默认回复策略 (放在指令,上下文或者输出指示符部分都可以,旨在强调基于文档回答)
提升模型的拒答能力:
当模型无法从文档中获取足够信息时,通过设定默认回复策略,避免模型产生“幻觉”,即生成虚假的答案。这可以确保模型仅基于文档中的事实进行回答。
1 | 如果文档中没有足够的事实回答问题,请返回{无法从文档中获得相关内容},而不是进行推测。 |
通过以上提示工程技巧,RAG 任务的输出质量可以高效、低成本地提升,解决常见生成问题。
写在最后:
在提示工程中,过于具体的指令可能会限制模型的创造性,过于宽泛的提示则可能导致生成偏差。
如何在提示设计中找到合适的权衡点,既能够引导模型生成高质量结果,又不过度限制模型的灵活性,需要大家在实际场景中探索。
进阶: 深入理解模型提示词的原理
突破路径:
提示词参考阅读: