《与AI对话ChatGPT提示工程揭秘》读书笔记
ch03-演进之路:从语言模型到提示工程
3.5 提示工程
3.5.2 设计良好提示的常见技巧
多样化的提示方式
尝试多种不同的提示策略
例如,假设要让模型对一组句子进行情感分析,可以尝试以下多样化的提示策略
- 直接询问:这句话的情感时积极的还是消极的
- 角色扮演:作为一名情感分析专家,你认为这句话的情感是积极的还是消极的
- 使用数值:要求模型用具体的数值来表示情感极性:“请用0(完全消极)到10(完全积极)之间的一个数值得分来评估这句话的情感”
- 提供选项:给模型提供一个选项列表,并让其从中选择最符合的答案:“下列选项中哪一个最能描述这句话的情感?A.积极 B.中性 C.消极”
明确地描述问题
问题重述旨在确保模型能够明确把握任务的核心需求。关键点:
- 简化问题:尽量将问题简化为最基本的形式,以减少模型在理解问题时可能产生的困扰。可以通过删除不必要的背景信息、专业术语等方式实现。
- 明确任务:确保问题的描述能够明确地表明模型所需执行的任务。可以使用明确的指令和问句来引导模型更好地理解任务需求。
- 提供细节:在重述问题时,可以提供更多关于任务地细节,如期望地输出格式、解决问题的步骤等。这有助于模型更好地八五任务地关键点,从而生成更符合要求地输出。
- 使用示例:为模型提供一个或多个问题的示例,以帮助其理解问题的背景和期望的输出形式。这样,模型在处理问题时可以参照示例来生成符合要求的结果。
假设需要模型为一篇文章生成一个摘要
- 简化问题:将问题简化为:“请总结这篇文章的主要观点。”
- 明确任务:确保问题明确表明了模型所需执行的任务:“请阅读以下文章,并用两到三句话总结文章的核心观点。”
- 提供细节:提供更多关于任务的细节:“请阅读一下文章,然后用两到三句话总结文章的核心观点。请确保摘要简洁明了,突出文章的主题。”
- 使用示例:给出一个示例以帮助模型理解任务背景和期望的输出形式:“例如,如果文章讨论了气候变化的影响,摘要可以是:‘本文探讨了气候变化对全球生态系统的影响。作者指出,温室气体排放和海平面上升是主要的威胁因素。为了应对这些挑战,文章呼吁采取全球性的行动。’请根据这篇文章生成类似的摘要。”
提供任务的背景知识
特别是在一些专业的领域任务中,在输入中提供背景信息,可以帮助模型更好地理解问题的背景
不提供背景知识的问题示例:请描述提示工程额概念和作用。
提供背景知识的问题示例:提示工程是一种针对预训练语言模型(如ChatGPT),通过设计、实验和优化输入提示(Prompt)来引导模型生成高质量、准确和有针对性地输出的技术。请描述提示工程的概念及其在自然语言处理中的作用。
逐渐增加提示难度
梯度提示可以让模型在较低的难度级别上建立基本概念,逐渐向更高的难度级别推进,以提高模型的理解和生成能力。步骤如下
- 确定任务的难度级别:针对特定任务,将其分解为不同难度级别的子任务。例如,在文本摘要任务中,可以先从简单的关键词提取开始,逐步过渡到生成完整的摘要。
- 设计提示:为每个难度级别的子任务设计相应的提示。简单级别的提示可以帮助模型理解基本概念,高级别的提示则可以引导模型生成更复杂的输出。
- 分阶段回答:按照难度级别的顺序,让模型逐个完成对子任务的回答。在完成一个子任务后,对模型的回答进行反馈,帮助模型增进对任务及相关背景知识的理解,以实现梯度学习。
- 评估与优化:对于每个子任务,评估模型回答的水平,可以根据需要调整提示
- 整合输出:将不同伴读级别的子任务输出整合成完整的任务结果。例如,在文本摘要任务中,可以将关键词提取和完整摘要生成的结果结合,形成最终的摘要。 梯度提示引导模型逐步学习可以降低对模型无法回答的复杂问题产生幻觉回答的风险。
在提示中给出例子
- 确定任务需求:明确目标和要求
- 选择合适的示例:为模型提供具有代表性的示例,使其能过够捕捉到任务的关键特征,示例应当简洁明了,易于理解,同时要尽可能覆盖任务的不同方面的要求。
- 将示例融入输入:将示例以自然、连贯的方式融入输入文本中,让模型能够顺畅地理解和处理。可以使用列表、问答或对话的形式呈现示例,使其更具可读性。
- 验证模型效果:通过观察模型在示例上的表现,验证示例是否能够有效地引导模型理解任务需求和输出格式。如果模型的表现不佳,则可以尝试调整示例或提示方式。
- 优化示例:根据模型的反馈,对示例进行优化和调整,以增强其引导效果。可以尝试提供不同类型的示例,或调整示例的数量和顺序。
让ChatGPT扮演特定的角色
通过设置合适的角色和场景,可以激发模型的创造力
例如:作为一位专业的营养师,请给我一些建议,如何在日常饮食中保证足够的营养素摄取
多次实验并定量评估
- 选择任务:确定要解决的问题或要完成的任务,例如文本分类、情感分析、摘要生成等。
- 设计提示:针对所选任务,设计多种可能有效的提示。可以使用问题重述、角色扮演等技巧来生成不同的提示。
- 实验设置:将数据集分为训练集、验证集和测试集。
- 训练集用于训练模型
- 验证集用于在实验过程中调整提示和模型参数
- 测试集用于评估最终的模型性能
- 实施实验:使用不同的提示训练模型,并记录每个提示的性能指标。这些性能指标可以包括准确率、精确度、召回率、F1值等,具体取决于任务类型。
- 分析结果:比较不同提示在验证集上的性能,找出效果最好的提示。
- 最终评估:使用选定的最佳提示在测试集上评估模型性能。给出一个更公正、更客观的模型性能指标。