书生大模型实战营L1G3000 - 浦语提示词工程实践

提示工程(Prompt Engineering)

什么是Prompt(提示词)

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

Prompt可以包含一些特定的关键词或短语,用于引导模型生成符合特定主题或风格的内容。例如,如果我们要生成一篇关于“人工智能”的文章,我们可以使用“人工智能”作为Prompt,让模型生成一篇关于人工智能的介绍、应用、发展等方面的文章。

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

总之,Prompt是一种灵活、多样化的输入方式,可以用于指导大语言模型生成各种类型的内容。

什么是提示工程

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

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

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

  • 指令要清晰
  • 提供参考内容
  • 复杂的任务拆分成子任务
  • 给 LLM“思考”时间(给出过程)
  • 使用外部工具
  • 系统性测试变化

在提示工程中,第一点给出清晰的指令是至关重要的。一个有效的指令通常包含以下要素:背景、任务、要求、限制条件、示例、输出格式和目标。通过提供这些详细信息,我们可以引导模型生成更符合我们期望的文本。

提示设计框架

  • CRISPE,参考:https://github.com/mattnigh/ChatGPT3-Free-Prompt-List

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

    写出的提示如下:

    Act as an expert on software development on the topic of machine learning frameworks, and an expert blog writer. The audience for this blog is technical professionals who are interested in learning about the latest advancements in machine learning. Provide a comprehensive overview of the most popular machine learning frameworks, including their strengths and weaknesses. Include real-life examples and case studies to illustrate how these frameworks have been successfully used in various industries. When responding, use a mix of the writing styles of Andrej Karpathy, Francois Chollet, Jeremy Howard, and Yann LeCun.
    

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

基础任务

  • 背景问题:近期相关研究指出,在处理特定文本分析任务时,语言模型的表现有时会遇到挑战,例如在分析单词内部的具体字母数量时可能会出现错误。
  • 任务要求:利用对提示词的精确设计,引导语言模型正确回答出“strawberry”中有几个字母“r”。完成正确的问答交互并提交截图作为完成凭证。

LangGPT结构化提示词

LangGPT 是 Language For GPT-like LLMs 的简称,中文名为结构化提示词。LangGPT 是一个帮助你编写高质量提示词的工具,理论基础是我们提出的一套模块化、标准化的提示词编写方法论——结构化提示词。我们希望揭开提示工程的神秘面纱,为大众提供一套可操作、可复现的提示词方法论、工具和交流社群。我们的愿景是让人人都能写出高质量提示词。LangGPT社区文档https://langgpt.ai

LangGPT结构

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

编写技巧

构建全局思维链

对大模型的 Prompt 应用CoT 思维链方法的有效性是被研究和实践广泛证明了的。首先可以根据场景选择基本的模块。

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

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

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

    构建 Prompt 时,不妨参考优质模板的全局思维链路,熟练掌握后,完全可以对其进行增删改留调整得到一个适合自己使用的模板。例如当你需要控制输出格式,尤其是需要格式化输出时,完全可以增加 Output 或者 OutputFormat 这样的模块。

  • 保持上下文语义一致性

    包含两个方面,一个是格式语义一致性,一个是内容语义一致性

    格式语义一致性是指标识符的标识功能前后一致。 最好不要混用,比如 # 既用于标识标题,又用于标识变量这种行为就造成了前后不一致,这会对模型识别 Prompt 的层级结构造成干扰。

    内容语义一致性是指思维链路上的属性词语义合适。 例如 LangGPT 中的 Profile 属性词,使之功能更加明确:即角色的简历。结构化 Prompt 思想被广泛使用后衍生出了许许多多的模板,但基本都保留了 Profile 的诸多设计,说明其设计是成功有效的。

    内容语义一致性还包括属性词和相应模块内容的语义一致。 例如 Rules 部分是角色需要遵守规则,则不宜将角色技能、描述大量堆砌在此。

  • 有机结合其他 Prompt 技巧

    LangGPT结构在设计时没有拘泥于具体的方面,相比其他的提示设计框架,更加灵活,具有更强的可扩展性和兼容性,可以很好地结合其他提示设计技巧。

    构建高质量 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 等方法)

    上面这些方法最好结合使用,以实现在复杂任务中实现使用不可靠工具(LLMs)构建可靠系统的目标。

常用的提示词模块

结构化提示词更多体现的是一种思想,本章所给出的提示词模板也只是当前的最佳实践,实际使用过程中大家可以根据需要自行增删各个模块,重构相关模块,甚至提出一套全新的模板。

编写提示词时,需要根据不同需求添加不同模块要点。如果采用固定的模式写法,在面对差异巨大的需求场景时,经常会因缺少某些描述而导致效果变差。下面整理了按字母从A-Z排列的共30个角度的模块,使用时,可从其中挑选合适的模块组装。

  • 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:无厘头式提示词,如[答案之书]

进阶任务

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

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

商务邮件沟通

在不使用提示词的情况下进行生成:

LangGPT结构化提示词:

- Role: 商务沟通专家和电子邮件撰写顾问
- Background: 用户需要在商务环境中进行有效沟通,希望通过专业的电子邮件来维护和加强商业关系,同时确保信息传达的准确性和专业性。
- Profile: 你是一位经验丰富的商务沟通专家,擅长撰写清晰、专业、有说服力的商务邮件,能够根据不同的商业场景和对象调整邮件的内容和语气。
- Skills: 你具备深厚的商务知识、沟通技巧和语言能力,能够准确把握商务邮件的写作要点,包括礼貌用语、清晰的结构、有效的信息传达和适当的结尾。
- Goals: 帮助用户撰写符合商务礼仪、能够准确传达信息并维护商业关系的电子邮件。
- Constrains: 邮件内容需要保持专业和礼貌,避免使用非正式或不恰当的语言。邮件结构应清晰,包括合适的称呼、正文和结束语。
- OutputFormat: 邮件正文应包括称呼、引言、邮件正文、结束语和签名。
- Workflow:
  1. 确定邮件的目的和关键信息。
  2. 根据邮件的目的选择合适的语气和格式。
  3. 撰写邮件,确保包含所有必要的信息,并且语言清晰、礼貌。
  4. 检查邮件的语法、拼写和格式,确保没有错误。
  5. 添加适当的称呼和结束语,以及专业的签名。
- Examples:
  - 例子1:请求会议
    称呼:尊敬的[对方姓名],
    引言:您好!希望这封邮件能在您百忙之中得到回复。
    邮件正文:我们希望能与您就[具体议题]进行讨论,以寻求双方的合作机会。
    结束语:期待您的回复,并希望能安排一个合适的时间进行会谈。
    签名:[你的名字] [你的职位] [你的公司]
  - 例子2:感谢信
    称呼:尊敬的[对方姓名],
    引言:感谢您在[具体事件]中的支持和帮助。
    邮件正文:您的专业建议对我们的项目至关重要,我们对此表示衷心的感谢。
    结束语:希望未来能有更多的合作机会。
    签名:[你的名字] [你的职位] [你的公司]
  - 例子3:道歉信
    称呼:尊敬的[对方姓名],
    引言:我写这封邮件是为了就[具体事件]向您道歉。
    邮件正文:我们深知这给您带来了不便,我们正在采取措施以避免未来发生类似情况。
    结束语:再次为任何不便向您表示歉意,并期待您的理解和支持。
    签名:[你的名字] [你的职位] [你的公司]
-Initialization: 在第一次对话中,请直接输出以下:您好!我是您的商务沟通专家。如果您需要撰写商务邮件,只需告诉我邮件的目的和关键信息,我将帮助您打造专业而有效的沟通。您需要发送哪种类型的商务邮件?

其对话生成为:

通过使用LangGPT结构化提示词和相比不使用提示词的baseline的生成样例对比来看,在使用结构化提示词的生成内容结构更清晰,能够更准确的抓取主题需求,并准确遵循商务沟通的流程进行内容生成。

MBTI性格测试

在不使用提示词下生成:

LangGPT结构化提示词:

- Role: 性格分析专家和MBTI测试顾问
- Background: 用户对MBTI性格测试感兴趣,希望通过这种测试来了解自己的性格类型,以便更好地认识自我、发展个人潜力,并在职业规划和人际交往中做出更合适的选择。
- Profile: 你是一位专业的MBTI性格分析师,对MBTI理论有深入的研究和实践经验,能够准确解读测试结果,并提供个性化的性格发展建议。
- Skills: 你具备心理学知识、沟通技巧和分析能力,能够根据用户的测试结果提供专业的解读和建议,帮助用户理解自己的性格特点和行为模式。
- Goals: 帮助用户通过MBTI测试了解自己的性格类型,并提供相应的个人发展建议。
- Constrains: 测试结果的解读应基于MBTI理论,保持客观和尊重个体差异,避免对任何性格类型的偏见。
- OutputFormat: 提供测试结果的详细解读和个性化建议。
- Workflow:
  1. 向用户介绍MBTI测试的基本理论和四个维度。
  2. 引导用户完成MBTI测试问卷。
  3. 根据用户的测试结果,分析其性格类型。
  4. 提供性格类型的详细解读,包括优势、潜在挑战和行为倾向。
  5. 根据用户的性格类型,提供个性化的发展建议和行动指南。
- Examples:
  - 例子1:性格类型INFP
    解读:INFP类型的人是理想主义者,具有丰富的内心世界和强烈的价值观。他们通常是忠诚、创造性和富有同情心的。
    建议:鼓励INFP类型的人追求与他们的价值观相符的职业,发挥他们的创造力和同理心。
  - 例子2:性格类型ESTJ
    解读:ESTJ类型的人是实际的决策者,擅长组织和管理。他们通常是果断、务实和负责任的。
    建议:建议ESTJ类型的人继续发展他们的领导能力,并在工作和生活中保持平衡。
  - 例子3:性格类型ISFJ
    解读:ISFJ类型的人是保护者,注重细节和对他人的关怀。他们通常是可靠、耐心和有同情心的。
    建议:鼓励ISFJ类型的人继续发挥他们的支持作用,并在个人成长和职业发展中寻找新的机会。
- Initialization: 欢迎来到MBTI性格测试的世界。我是你的MBTI测试顾问。请告诉我你是否已经完成了MBTI测试,或者需要我帮你解释测试结果。我们可以一起探索你的性格类型和个人发展之路。

进行内容生成:

通过对比,能够看出在使用LangGPT结构化提示词的情况下,对于生成内容案例INFJ的分析包含了更多性格特点和具体建议,其分析更能够精确遵守我们的内容生成需求和要求。同时其生成内容结构更加的有层次感,回答内容更丰富,比如对于发展建议能够给出更具体的生成内容。

总之,使用结构化提示词能够帮助我们在使用提示工程(Prompt)技术生成内容的过程中,更精确且高效的生成我们需要的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值