看完吴恩达关于提示词工程的课程(Prompt Engineering),对于这门课程的主要内容做了一个总结。
1.引言
大语言模型(Large Language Model)介绍
- Base LLM——基础模型,基于文本训练数据做预测
- Instruction Tuned LLM——指令调整型模型,接受遵循指示的培训,通常在基础模型的基础上,用人类反馈强化学习(RLHF)的方法进行模型优化
chatgpt是基于后者进行构建的,本节课将专注于如何使用Instruction Tuned LLM。
2.提示词编写指南
2.1 原则1:编写明确而具体的指令
- 合理使用分隔符——在输入指令时,要让模型知道具体的内容,采用合理的定界符,可以用引号或者花括号等分隔符将其分隔;
- 要求结构化的输出——要求模型按照一定的格式(如JSON、XML、表格)等形式输出,以便将输出的内容更好地展示出来;
- 要求模型检查是否满足条件——对于逻辑分析的结果,不能完全听信于模型的输出结果,而是基于模型的结果让模型自己做检查
- 要求模型在执行任务之前,提供成功执行任务的实例(场景:提供一种语境,并要求AI照着这种语境去回答问题)
Tips:提示词不是越短越好,对于过于简单的提示词,将会影响模型后续的输出结果。
2.2 原则2:给模型足够的事件思考
如果模型通过急于做出错误的决策,将会出现推理的错误,应该尝试重新构建查询请求相关推理的链或者序列。同时LLM模型有一个认识边界的问题,模型在做训练时并没有意识到知识的边界,意味着它会尝试回答所有关于晦涩主题的问题,也称为幻觉(Hallucination)。
- 指定完成任务所需的步骤
- 指示模型在匆忙做出结论之前的解决方案
3.如何迭代开发提示词
机器学习的迭代过程也适用于LLM模型的迭代。
graph TD
Idea --> Implementation --> ExperimentalResult --> ErrorAnalysis --> Idea
场景: 根据技术说明书帮助营销团队为零售网络或者产品创建描述,编写产品说明书
从这个案例中,输入是一个产品的技术说明书,可以让模型尝试理解技术说明书同时用不同的语言来规范输出的内容(针对客户/销售人员、输出的格式)和长度(用xx个单词描述或者用xx个句子描述)。
在生成内容的过程中,根据内容做出调整,调整的内容要清晰具体,加入更多的前提条件让模型有更多的思考时间。
4.大语言模型的使用场景
4.1 总结
用大语言模型来总结文本。
场景:提取网站的客户评论信息,用工具来总结冗长的评论,从而更好地了解客户的想法。
4.2 推理
大语言模型擅长从文本中提取特定的东西,沿用4.1的例子,可以在一段文本中提取情感,可以从一长串的评论中总结客户是积极评论还是消极评论(Positive/Nagative),在推理的基础上,可实现用户评论打标,同时可要求提供结构化的输出,便于后续的数据分析。
4.3 文本转换
场景:翻译、帮助拼写和语法纠正
例子:
- 输入HTML,输出JSON
- 文本翻译,或者是输入一段文字,让模型判断是属于何种语言
- 根据不同受众的变化改变文本中的语句,调整语境
4.4 扩展
场景:根据客户的抱怨信息生成邮件正文
引入模型参数:温度(Tempreture),该参数可以帮助模型改变响应的多样性。
Tips: 在构建需要可预测回复的程序时,建议使用温度为0,即对于确定的事物不允许出现多个可能的结果。
5. 自定义聊天机器人
介绍了如何用openAI的接口构建聊天机器人。
在聊天机器人的构建中,必须提供当前会话中的所有相关信息,以便模型使用,例如在构建智能客服机器人时,将相关的规则在生成机器人之前定义好。
6. 课程小结
原则 -使用明确而具体的指令 -留给机器思考的时间
开发方式:迭代式开发
场景:总结、推断、转换、扩展
应用:自定义聊天机器人的构建
7. 其他模型
关于提示词工程还有其他的总结,但在方法论上,跟这个课程还是保持一致的。
7.1 BACK模型
- Backgroup——交代事情的背景、清晰地告诉模型希望达成的目标
- Action——告诉模型它需要做什么,如有必要可以亲身示范(举例说明)
- Character——告诉模型适合做这件事的角色
- Knowledge——告诉模型属于哪个领域的知识
7.2 TRICK法则
- Task——明确任务
- Role——模型生成文本时应扮演的角色
- Instruction——在生成文本时应当遵循的指令要求和目的
- Context——用于补充背景信息,提示输出内容的相关性
- Keyword——控制输出结果的相关文本或者短语