书生大模型实战营第四期基础岛-浦语提示词工程实践

66 阅读9分钟

书生大模型实战营第四期基础岛-浦语提示词工程实践

关于Prompt

什么是Prompt

Prompt是一种用于指导以大语言模型为代表的生成式人工智能的输入方式。它通常是一个简短的文本或问题,用于描述任务和要求。

Prompt 可以包含一系列特定的指令或要求,用于控制生成文本的语气、风格、长度等方面。例如,我们可以使用“请用幽默的语气描述人工智能的发展历程”作为Prompt,让模型生成一篇幽默风趣的文章。

image.png

什么是提示工程

提示工程是一种通过设计和调整Prompts输入来改善模型性能或控制其输出结果的技术。

在模型回复的过程中,首先获取用户输入的文本,然后处理文本特征并根据输入文本特征预测之后的文本,原理为next token prediction,类似我们日常使用的输入法。

提示工程是模型性能优化的基石,有以下六大基本原则:

  1. 指令清晰
  2. 提供参考内容
  3. 复杂的任务拆分成子任务
  4. 给LLM“思考”时间
  5. 使用外部工具
  6. 系统性测试变化

参考资料:

提示设计框架

CRISPE,参考:github.com/mattnigh/Ch…

  • Capacity and Role (能力与角色):希望 ChatGPT 扮演怎样的角色。​
  • Insight (洞察力):背景信息和上下文(坦率说来我觉得用 Context 更好)​
  • Statement (指令):希望 ChatGPT 做什么。​
  • Personality (个性):希望 ChatGPT 以什么风格或方式回答你。​
  • Experiment (尝试):要求 ChatGPT 提供多个答案。

CO-STAR,参考:aiadvisoryboards.wordpress.com/2024/01/30/…

  • Context (背景): 提供任务背景信息​
  • Objective (目标): 定义需要LLM执行的任务​
  • Style (风格): 指定希望LLM具备的写作风格​
  • Tone (语气): 设定LLM回复的情感基调​
  • Audience (观众): 表明回复的对象​
  • Response (回复): 提供回复格式

LangGPT结构化提示词

什么是LangGPT

LangGPT是Language For GPT-like LLMs的简称,中文名为结构化提示词。它是个工具,帮助我们写出高质量提示词的工具。LangGPT社区文档langgpt.ai

LangGPT结构

LangGPT框架参考了面向对象程序设计的思想,设计为基于角色的双层结构,一个完整的提示词包含模块-内部元素两级,模块表示要求或提示LLM的方面,例如:背景信息,建议和约束等。内部元素为模块的组成部分,是归属于某一方面的具体要求或辅助信息,分为赋值型和方法型。

编写技巧

构建全局思维链

一个好的结构化Prompt模板,某种意义上是构建了一个良好的全局思维链,如LangGPT中展示的模板设计时就考虑了如下思维链:

💡 Role (角色) -> Profile(角色简介)—> Profile 下的 skill (角色技能) -> Rules (角色要遵守的规则) -> Workflow (满足上述条件的角色的工作流程) -> Initialization (进行正式开始工作的初始化准备) -> 开始实际使用

一个好的Prompt,内容结构上也是逻辑清晰连贯的。结构化Prompt方法将逻辑思维链条融入到了结构当中,大大降低了思维链路的构建难度。

保持上下文语义一致性

包含两方面:1. 格式语义一致性 2. 内容语义一致性

格式语义一致性:是指标识符的识别功能前后一致,不要混用。比如定义一个 # 标识为标题,然后下文又标识为内容,这会对模型识别Prompt的层级结构造成干扰。

内容语义一致性:指思维链路上的属性词语义合适,比如LangGPT中的profile属性即角色的简历。同时也包括属性词和对应模块内容的语义一致,例如Rules部分是角色需要遵守的规则,则不宜将角色技能、描述大量堆砌在此。

有机结合其他Prompt技巧

构建高质量Prompt时,将这些方法结合使用,结构化方式能够更便于各个技巧间的协同组织,例如将CoT方法融合到结构化Prompt中编写提示词。汇总现有的一些方法:

  1. 细节法:给出更清晰的指令,包含更多具体的细节
  2. 分解法:将复杂的任务分解为更简单的子任务 (Let's think step by step, CoT,LangChain等思想)
  3. 记忆法:构建指令使模型时刻记住任务,确保不偏离任务解决路径(system 级 prompt)
  4. 解释法:让模型在回答之前进行解释,说明理由 (CoT 等方法)
  5. 投票法:让模型给出多个结果,然后使用模型选择最佳结果 (ToT 等方法)
  6. 示例法:提供一个或多个具体例子,提供输入输出示例 (one-shot, few-shot 等方法)

常用的提示词模块

  • Attention:需重点强调的要点
  • Background:提示词的需求背景
  • Constraints:限制条件
  • Command:用于定义大模型指令
  • Definition:名词定义
  • Example:提示词中的示例few-shots
  • Fail:处理失败时对应的兜底逻辑
  • Goal:提示词要实现的目标
  • Hack:防止被攻击的防护词
  • In-depth:一步步思考,持续深入
  • Job:需求任务描述
  • Knowledge:知识库文件
  • Lawful:合法合规,安全行驶的限制
  • Memory:记忆关键信息,缓解模型遗忘问题
  • Merge:是否使用多角色,最终合并投票输出结果
  • Neglect:明确忽略哪些内容
  • Odd:偶尔 (俏皮,愤怒,严肃) 一下
  • OutputFormat:模型输出格式
  • Pardon:当用户回复信息不详细时,持续追问
  • Quote:引用知识库信息时,给出原文引用链接
  • Role:大模型的角色设定
  • RAG:外挂知识库
  • Skills:擅长的技能项
  • Tone:回复使用的语气风格
  • Unsure:引入评判者视角,当判定低于阈值时,回复安全词
  • Vaule:Prompt模仿人格的价值观
  • Workflow:工作流程
  • X-factor:用户使用本提示词最为重要的内核要素
  • Yeow:提示词开场白设计
  • Zig:无厘头式提示词

闯关任务

基础任务

背景问题:近期相关研究指出,在处理特定文本分析任务时,语言模型的表现有时会遇到挑战,例如在分析单词内部的具体字母数量时可能会出现错误。

任务要求:利用对提示词的精确设计,引导语言模型正确回答出“strawberry”中有几个字母“r”。完成正确的问答交互并提交截图作为完成凭证。

提示词编写

你是字符计数专家,能够准确回答给定文本特定字符数量的问题。

-- 技能:

-- 📊 计算字符串中特定字符数量

-- 🚀 快速得到答案

-- ✍ 遵守提示工程的行业最佳实践并生成提示词

** 💬 输出要求:

-- 结构话输出答案,正确给出特定字符在文本中的数量。

-- 为答案提供准确相似的解释。

** 🔧 工作流程:

-- 分析用户提供文本以及明确所指定的字符。

-- 认真计算特定字符的数量。

-- 给出答案和解释。

** 🌳 初始化:

欢迎用户,以一种客气友好的语气引导用户。

‘’‘

欢迎使用字符计数专家!我可以准确回答文本中特定字符的数量。请您提供一个文本和要计数的字符,我会告诉您该字符在文本中的数量以及详细的解析。

’‘’

截图

image.png

image.png

进阶任务

任选下面其中1个任务基于LangGPT格式编写提示词 (优秀学员最少编写两组),使用书生·浦语大模型进行对话评测。

  • 公文写作助手
  • 商务邮件沟通
  • 温柔女友/男友
  • MBTI 性格测试
  • 剧本创作助手
  • 科幻小说生成

基于LangGPT格式编写提示词,使用书生浦语大模型进行对话评测:

温柔女友

你是温柔女友,能够在男朋友学习工作不顺心或者焦躁的时候,提供满足男友情绪价值的回答!

-- 技能:

-- 📊 面对男友的负面情绪输出,说出安慰他的甜言蜜语

-- 🚀根据男友的吐糟,说出安慰他的话

-- ✍ 遵守提示工程的行业最佳实践并生成提示词

** 💬 输出要求:

-- 结构话输出答案。

-- 尽可能高地提高情绪价值。

-- 严格遵守初始化。

** 🔧 工作流程:

-- 根据初始化对男友发出疑问

-- 分析男友的回复

-- 基于回复,快速想出安慰他的话。

** 🌳 初始化:

''' 宝宝最近过得怎么样啊?你有什么要倾诉嘛 '''

image.png

MBTI性格测试

你是MBTI性格分析专家,能够为用户提供深入准确的MBTI性格解读和建议。

-- 技能:

-- 📊 分析用户行为和特点,确定MBTI类型。

-- 写作相似的性格描述和发展建议。

-- 🚀自动执行性格分析任务,快速给出初步判断

** 💬 输出要求:

-- 结构话输出分析结果,包括MBTI类型、主要特征、优势劣势等。

-- 为性格分析提供详细、准确、深入的解释。

-- 结合实际情况给出个性化的发展建议。

** 🔧 工作流程:

-- 仔细深入地思考和分析用户提供的信息和行为表现。

-- 逐步对比MBTI各类型特征,确定最可能的类型。

-- 提供全面的性格分析和发展建议

** 🌳 初始化:

''' 欢迎使用MBTI性格分析专家助手!我可以为您提供专业的MBTI性格分析服务。请告诉我一些关于您的行为习惯、思考方式等方面的信息,我会准确找到您的MBTI类型。 '''

image.png