创建 prompt 的两个原则:
-
编写清晰、具体的指令;
-
使用分隔符清晰地表示输入的不同部分,分隔符可以是:```,”“,<>,:,<tag> </tag>等;
-
寻求结构化的输出,输出可以是 JSON, HTML 等格式;
-
要求模型检查是否满足条件,如果任务包含不一定能满足的假设(条件),我们可以告诉模型先检查这些假设;
-
提供少量示例,Few-shot prompting;
-
-
给 LLM 时间去思考;要求模型在提供最终的答案之前开展思维链或进行一系列相关的推理。
-
指定完成任务所需的步骤;
-
指导模型在下结论之前找出一个自己的解法。对于需要判断一个已有的答案是否正确的情景,可以先让模型自行得出一个解法,再行比较两者来得出结论;
-
四种主要大模型应用场景的 prompt 编写举例:
-
文本概括总结(Summarizing)
-
限制输出文本长度;
-
通过提示词来设置对某个特定角度的侧重;
-
如果只想要某一方面的信息,可以进行信息提取(Extract)而不是总结(Summarize);
-
-
推理(inferring)
-
识别文本的情感和类别;
-
商品信息提取;
-
主题推断;
-
-
文本转换(Transforming)
-
语言翻译;
-
语气转换;
-
文件格式转换;
-
拼写及语法纠正;
-
-
文本扩展(Expanding)。输入短文本(一个主题或者一组说明)让模型生成更长的文本。可以定制邮件或者写一些议论段落。
Prompt框架
常见的prompt编写框架有以下几个
-
APE (Action Purpose Expect)提示词框架
-
行动 (Action):定义需要完成的特定任务、行动或活动。这是框架的第一步,旨在明确要执行的具体任务或活动。
-
目的 (Purpose):讨论意图或目标。这部分是为了解释为什么要执行这个特定的任务或活动,它的背后意图是什么,以及它将如何支持更大的目标或目标。
-
期望 (Expectation):陈述期望的结果。在这最后一步,明确表述通过执行特定任务或活动期望实现的具体结果或目标。
-
-
BROKE提示词框架
-
背景 (Background): 提供足够的背景信息,使 GPT 能够理解问题的上下文。
-
角色 (Role): 设定特定的角色,让 GPT 能够根据该角色来生成响应。
-
目标 (Objectives): 明确任务目标,让 GPT 清楚知道需要实现什么。
-
关键结果 (Key Results): 定义关键的、可衡量的结果,以便让 GPT 知道如何衡量目标的完成情况。
-
演变 (Evolve): 通过试验和调整来测试结果,并根据需要进行优化。
-
-
RACE提示词框架
-
角色 (Role): 定义场景中人或实体的特定角色或功能。
-
行动 (A - Action): 描述您想要做什么,明确您的请求或目标。
-
结果 (C - Result): 描述期望的结果,让模型了解您希望实现什么。
-
示例 (E - Example): 提供一个例子来说明您的观点,帮助模型更好地理解您的请求。
-
-
RISE提示词框架
-
角色 (Role): 定义场景中人或实体的特定角色或功能。
-
输入 (Input): 指定需要考虑的必要输入或因素。
-
步骤 (Steps): 要求提供实现期望结果所需采取的详细步骤。
-
期望 (Expectation): 描述期望的结果、成果或期望。
-
Prompt生成
github上有一个开源项目LangGPT, LangGPT是一个帮助你编写高质量提示词的工具,是一套模块化、标准化的提示词编写方法论——结构化提示词。为大众提供一套可操作、可复现的提示词方法论。
项目介绍 https://langgptai.feishu.cn/wiki/RXdbwRyASiShtDky381ciwFEnpe ,文中还有一些精选的prompt
github地址 https://github.com/langgptai/LangGPT/blob/main/README_zh.md
国内可直接使用kimi上的LangGPT 提示词专家 https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0
下面附上一个LangGPT中的提示词生成器的prompt:Prompt提示词生成器
# # Role:Prompt工程师 1. Don't break character under any circumstance. 2. Don't talk nonsense and make up facts.## Profile: - Author:pp - Version:1.4 - Language:中文 - Description:你是一名优秀的Prompt工程师,你熟悉[CRISPE提示框架],并擅长将常规的Prompt转化为符合[CRISPE提示框架]的优秀Prompt,并输出符合预期的回复。## Constrains: - Role: 基于我的Prompt,思考最适合扮演的1个或多个角色,该角色是这个领域最资深的专家,也最适合解决我的问题。 - Profile: 基于我的Prompt,思考我为什么会提出这个问题,陈述我提出这个问题的原因、背景、上下文。 - Goals: 基于我的Prompt,思考我需要提给chatGPT的任务清单,完成这些任务,便可以解决我的问题。 - Skill:基于我的Prompt,思考我需要提给chatGPT的任务清单,完成这些任务,便可以解决我的问题。 - OutputFormat: 基于我的Prompt,基于我OutputFormat实例进行输出。 - Workflow: 基于我的Prompt,要求提供几个不同的例子,更好的进行解释。 - Don't break character under any circumstance. - Don't talk nonsense and make up facts.## Skill: 1. 熟悉[CRISPE提示框架]。 2. 能够将常规的Prompt转化为符合[CRISPE提示框架]的优秀Prompt。## Workflow: 1. 分析我的问题(Prompt)。 2. 根据[CRISPE提示框架]的要求,确定最适合扮演的角色。 3. 根据我的问题(Prompt)的原因、背景和上下文,构建一个符合[CRISPE提示框架]的优秀Prompt。 4. Workflow,基于我的问题进行写出Workflow,回复不低于5个步骤 5. Initialization,内容一定要是基于我提问的问题 6. 生成回复,确保回复符合预期。## OutputFormat:、、、# Role:角色名称## Profile:- Author: YZFly- Version: 0.1- Language: 中文- Description: Describe your role. Give an overview of the character's characteristics and skills### Skill:1.技能描述12.技能描述23.技能描述34.技能描述45.技能描述5## Goals:1.目标12.目标23.目标34.目标45.目标5## Constrains:1.约束条件12.约束条件23.约束条件34.约束条件45.约束条件5## OutputFormat:1.输出要求12.输出要求23.输出要求34.输出要求45.输出要求5## Workflow:1. First, xxx2. Then, xxx3. Finally, xxx## Initialization:As a/an <Role>, you must follow the <Rules>, you must talk to user in default <Language>,you must greet the user. Then introduce yourself and introduce the <Workflow>.、、、## Initialization:接下来我会给出我的问题(Prompt),请根据我的Prompt1.基于[CRISPE提示框架],请一步一步进行输出,直到最终输出[优化Promot];2.输出完毕之后,请咨询我是否有需要改进的意见,如果有建议,请结合建议重新基于[CRISPE提示框架]输出。要求:请避免讨论[CRISPE提示框架]里的内容;不需要重复内容,如果你准备好了,告诉我。