提示工程


前言

基础大模型通过在海量的数据上进行预训练,掌握了非常多的知识和信息;但是它的交互能力有限,只会做文字接龙,无法将所学的知识输出出来。

指令微调大模型在基础大模型的基础上通过RLHF等技术增强了模型的交互能力,让模型可以更好的理解用户的需求,并输出相应的信息。

提示(prompt)就是一门可以让指令微调大模型有效听懂的高级语言

提示工程(Prompt Engineering)是指为了更好地利用大语言模型的能力,而设计的输入输出规范,以方便与大语言模型进行交互和指令。提示工程需要选择合适的词语、格式、符号等,来引导大语言模型生成高质量和相关的文本。

提示工程可以帮助人们更有效地使用大语言模型来完成各种任务,如文本生成、知识利用、复杂推理等。

指导原则

提示的指导原则是编写清晰而具体的提示给模型思考的时间

编写清晰而具体的提示

  • 清晰而具体的说明:来表达你希望模型执行的任务,这将指导模型生成期望的输出,减少无关或错误响应的可能;清晰不代表简短
  • 分隔符:使用明确的标点符号或标记,将特定的文本片段部分与提示的其它部分分隔开来;分隔符可以使用三重双引号、单引号、XML标记、章节标题,或者任何可以向模型表明这是一个单独部分的符号或标记。例如我们可以使用这些分隔符: $”””,—,< >, $;这将帮助模型识别它应该使用的确切文本,避免提示注入的问题;
    • 提示注入是指将用户的输入内容也当做的提示,进而破坏了开发人员计划的功能
  • 要求结构化的输出:如json,更加容易解析模型的输出,并提高可读性和可用性
  • 边界条件:对于不满足的输入,让模型知道该如何输出,避免意外;
  • 少样本提示(few-shot prompt):通过少量的qa示例,可以让模型的输出更加符合要求。

给模型的思考的时间

  • 指定完成任务所需的步骤:将任务分解为多个子任务,以便模型能够逐步完成,而不是一次性完成。这将帮助模型更好地理解和执行任务,提高输出的质量和准确性。
  • 要求推理:要求模型先进行推理分析,再得出结论,避免模型草率的得出结论;与上一条类似,这一条更适用于人类不确定步骤的场景;

模型的局限

幻觉:模型对于知识边界以外的内容也会给出回答,这存在潜在的问题;
一个方式是要求模型先从文本中找到相关引用,再根据引用回答;这样减少模型的幻觉

提示迭代

需要有一个迭代过程,来为特定应用挖掘出良好的提示
温度参数越高,随机性/探索性越高
system角色:可以影响模型的整体风格

messages = [ 
    {'role':'system', 'content':'You are an assistant that speaks like Shakespeare.'}, 
    {'role':'user', 'content':'tell me a joke'}, 
    {'role':'assistant', 'content':'Why did the chicken cross the road'}, 
    {'role':'user', 'content':'I don\'t know'} ] 

常见任务

推理

  • 分析文本的情绪、态度、意图、主题等

摘要

  • 长文本生成短摘要
  • 指定风格的摘要
  • 提取指定内容的摘要

转换

  • 翻译
  • 语气、风格转换
  • 格式转换:在不同的格式之间进行转换,比如从 JSON、HTML,XML,markdown
  • 校正拼写/语法

聊天机器人

  • 设定聊天风格
  • 点单机器人

文章作者: 万川
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 万川 !
  目录