前言
想要GPT模型回答的更好,更好的应用在业务场景中,需要考虑Prompt的写法规则、模型参数、渲染方式(流式响应)等
下面主要结合开源文档梳理一些写Prompt的一些技巧。
https://learningprompt.wiki/zh-Hans/docs/chatgpt-learning-path
https://www.promptingguide.ai/zh
目录
- PE基础知识
- PE高级
- 结合业务实践
1、PE基础知识
基本原则
- 使用新模型
- Prompt最好包含完整信息
- Prompt简洁易懂并减少歧义
- Prompt使用正确的语法、标点符号。
使用技巧
- 优先告诉要干什么,然后才是不要干什么
- 增加示例
- 增加场景以及人物角色
2、PE高级
2.1、提示词元素框架
1、Basic Prompt Framework应该包含4个部分
- Instruction(必须): 指令,即你希望模型执行的具体任务。
- Context(选填): 背景信息,或者说是上下文信息,这可以引导模型做出更好的反应。
- Input Data(选填): 输入数据,告知模型需要处理的数据。
- Output Indicator(选填): 输出指示器,告知模型我们要输出的类型或格式。
在写Prompt的时候,并不一定要包含所有4个元素,可以根据情景进行元素排列组合
- 推理:Instruction + Context + Input Data
- 信息提取:Instruction + Context + Input Data + Output Indicator
2、CRISPE Prompt Framework应该包含6个部分,完备性更高
- CR: Capacity and Role(能力与角色)。你希望 ChatGPT 扮演怎样的角色。
- I: Insight(洞察力),背景信息和上下文(坦率说来我觉得用 Context 更好)。
- S: Statement(指令),你希望 ChatGPT 做什么。
- P: Personality(个性),你希望 ChatGPT 以什么风格或方式回答你。
- E: Experiment(尝试),要求 ChatGPT 为你提供多个答案。
举例
Capacity and Role | Act as an expert on software development on the topic of machine learning frameworks, and an expert blog writer.把你想象成机器学习框架主题的软件开发专家,以及专业博客作者。 |
Insight | The audience for this blog is technical professionals who are interested in learning about the latest advancements in machine learning.这个博客的读者主要是有兴趣了解机器学习最新进展技术的专业人士。 |
Statement | 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.提供最流行的机器学习框架的全面概述,包括它们的优点和缺点。包括现实生活中的例子,和研究案例,以说明这些框架如何在各个行业中成功地被使用。 |
Personality | When responding, use a mix of the writing styles of Andrej Karpathy, Francois Chollet, Jeremy Howard, and Yann LeCun.在回应时,混合使用 Andrej Karpathy、Francois Chollet、Jeremy Howard 和 Yann LeCun 的写作风格。 |
Experiment | Give me multiple different examples.给我多个不同的例子。 |
2.2、模型的Zero-shot特性技巧
Zero-Shot Chain of Thought意思是模型的输出结果是一步步链式形成的,这个技巧使用起来非常简单,只需要在问题的结尾里放一句** Let's think step by step (让我们一步步地思考)**,模型输出的答案会更加准确。
这个技巧来自于 Kojima 等人 2022 年的论文 Large Language Models are Zero-Shot Reasoners。在论文里提到,当我们向模型提一个逻辑推理问题时,模型返回了一个错误的答案,但如果我们在问题最后加入 Let's think step by step 这句话之后,模型就生成了正确的答案。
2.3、其他相关参数
- Mode: 最近更新了第四种 Chat 模式,一般使用 Complete 就好,当然你可以用其他模式,其他模式能通过 GUI 的方式辅助你撰写 prompt。
- Model: 这里可以切换模型。不同的模型会擅长不同的东西,根据场景选对模型,能让你省很多成本:
- Ada:这是最便宜,但运算速度最快的模型。官方推荐的使用场景是解析文本,简单分类,地址更正等。
- Babbage:这个模型能处理比 Ada 复杂的场景。但稍微贵一些,速度也比较快。适合分类,语义搜索等。
- Curie:这个模型官方解释是「和 Davinci 一样能力很强,且更便宜的模型」。但实际上,这个模型非常擅长文字类的任务,比如写文章、语言翻译、撰写总结等。
- Davinci:这是 GPT-3 系列模型中能力最强的模型。可以输出更高的质量、更长的回答。每次请求可处理 4000 个 token。适合有复杂意图、因果关系的场景,还有创意生成、搜索、段落总结等。
- Temperature: 这个主要是控制模型生成结果的随机性。简而言之,温度越低,结果越确定,但也会越平凡或无趣。如果你想要得到一些出人意料的回答,不妨将这个参数调高一些。但如果你的场景是基于事实的场景,比如数据提取、FAQ 场景,此参数就最好调成 0。
- Maximum length: 设置单次生成内容的最大长度。
- Stop Sequence: 该选项设置停止生成文本的特定字符串序列。如果生成文本中包含此序列,则模型将停止生成更多文本。
- Top P: 该选项是用于 nucleus 采样的一种技术,它可以控制模型生成文本的概率分布,从而影响模型生成文本的多样性和确定性。如果你想要准确的答案,可以将它设定为较低的值。如果你想要更多样化的回复,可以将其设得高一些。
- Presence Penalty: 该选项控制模型生成文本时是否避免使用特定单词或短语,它可以用于生成文本的敏感话题或特定场景。
- Best of: 这个选项允许你设置生成多少个文本后,从中选择最优秀的文本作为输出。默认为 1,表示只生成一个文本输出。
- **Injection start text: **这个选项可以让你在输入文本的开头添加自定义文本,从而影响模型的生成结果。
- **Injection restart text: **这个选项可以让你在中间某个位置添加自定义文本,从而影响模型继续生成的结果。
- **Show probabilities: **这个选项可以让你查看模型生成每个单词的概率。打开此选项后,你可以看到每个生成的文本单词后面跟着一串数字,表示模型生成该单词的概率大小。
3、实践
如提示词模板
powershell
作为 `%s` 学科的教师,你正在准备一道考试题目,你要做的是:理解并解答这到题,
将这道题的答案和解析正确的写出来,一定要保证答案正确性!
题目为:`%s`, 题型为:`%s`。
要求:
(1)回答请使用简洁的中文。
(2)答案和解析内容之间加一个分号保持格式整洁。
(3)如果是选择题请正确给出正确答案对应的选项。
结合以上规则对其进行优化
参考CRISPE Prompt Framework
Capacity and Role | 把你想象成一位 %s 学科的教师以及义教育界知识储备丰富的学者。 |
---|---|
Insight | 这个教师、学者的工作主要分析并理解在校学生提出的试题,然后给出该试题的答案与解析。 |
Statement | 根据试题场景正确解答试题 %s,让我们一步步思考,并给出解析论证答案的正确性质。 |
Personality | 在回应时,使用简洁的中文参照%s格式。 |
Experiment | 如果是试题是选择题需要给出正确的选项。 |
powershell
把你想象成一位 `%s` 学科的教师以及义教育界知识储备丰富的学者。
这个教师、学者的工作主要分析并理解在校学生提出的试题,然后给出该试题的答案与解析。
根据试题场景正确解答试题 `%s`,让我们一步步思考,并给出解析论证答案的正确性质。
在回应时,使用简洁的中文参照 `%s` 格式。
如果是试题是选择题需要给出正确的选项。