- 课程地址: https://learn.deeplearning.ai/chatgpt-prompt-eng
- b站搬运: https://www.bilibili.com/video/BV1No4y1t7Zn
教学人员:Lsa Fulford, Andrew NG
LLM的两种样式
- Base LLM:基于文本训练数据预测下一个词的概率,依赖于之前的文本,容易产生有毒输出
- Instruction Tuned LLM:基于指令性的,在指令上进行微调,并基于RLHF反馈机制得到更有用,更真实的,更无害的输出
目标一般建议使用Instruction Tuned LLM。
在使用LLM的时候可以将其当作一个很全能,但不知道做什么的助手,如果LLM效果不好,可能是由于指令不够清楚。
- 明确问题,喂给相关内容
- 给LLM时间思考
Prompt的原则和策略
- 编写明确和具体的指令
- 给模型足够的时间来思考
原则和策略的实践
安装
- install:
pip install openai
然后申请相关API的访问账户及密钥
按照原则进行讲解
原则1: 编写明确和具体的指令
策略1: 可以有一些分隔符等,明确不意味着短。
在提示中,说将用三个单引号分隔的文本总结为一句话,然后得到总结之后的意思:
分隔符是比较清楚的将特定的文本部分和提示的其他部分隔开,不同的分隔符都可以。
另外就是避免提示词冲突:
策略2: 可以请求结构化的输出,比如json,html等。
下面的提示词让其以json格式输出三个书本id,书名,作者以及类别等信息
策略3: 要求模型检查是否满足条件
如果不满足条件,则返回自己限定的条件。
策略4: 要求执行模型任务之前,提供成功执行任务的示例
原则2: 给模型时间思考
策略1: 如果急于模型出结果,可能出错,尝试重新构建查询请求相关推理的链或序列
策略2: 指示模型在匆忙作出结论之前思考解决方案,推理过程,实际思考过程
首先模型以学生思维是对的,然后再与自己思考比较
上述示例说明要求模型进行计算并将任务分解成对应的思考步骤,以便给模型更多的思考时间来思考。
模型的局限性
- 部分内容是编造虚构的内容,不够真实。
- 减少产生额外的虚构内容,可以要求模型首先从文本中找到任何相关的引用,然后让模型基于这些引用回答内容,这样就可以回溯文档以减少这些幻觉。
迭代提示开发过程
没有通用的prompt,只有适合自己的。
以一个椅子说明书来说:
上述生成的内容很好,但是有点长。进一步的优化prompt:
上述的内容是针对消费者的,如果想生成面向分销商的话,需要更精细一点特性介绍:
更进一步的想输出每个产品的ID
精确的prompt都是通过不断优化得到的。下面写一些更复杂的prompt:
不要想着一开始就写出完美的prmpt,是通过不断的尝试进行的分析生成的结果并不断的优化得到的较优的结果。
摘要:使用chatGPT完成文章总结
如果构建一个电商网站,且有很多的评论留言,下面是文章总结的提示词,创建摘要等。
专注于价格等:
多个评论时候,可以用for循环调用:
缩短的评价内容有助于帮助顾客和自己了解实际情况,快速了解内容,可以根据内容进一步的深入了解。后续也可以将其用于积极消极情感识别。
推理
文本情感标签识别,文本提取等,一般做法是准备数据,设计算法,训练算法,云端部署。整套流程非常长,现在有了chatGPT后,只需要编写提示词即可立刻开始生成结果,大大加快应用程序开发速度,而无需弄清楚如何训练和部署许多不同的模型。
也可以用于提取更丰富的信息:
这种算法称为零样本学习,因为之前都没有标签进行学习。
同样的,如果想对某类新闻感兴趣,可以按照下面的方式进行提醒:
上述过程在以其对于算法工程师来说需要较长的一段时间进行开发,现在对于新手和工程师来说都能轻而易举的做到。
转换
大模型非常擅长将其输入转换为不同的格式。比如将一段文本从一种语言转换或翻译成另一种语言,或者帮助拼写和语法纠正,甚至可以转换格式,比如输入HTML,让其输出为JSON。这些以前是需要非常长的正则方式去提取转换,现在可以基于大模型基于几个简单的提示就能轻松的实现了。
翻译
假设现在需要一个通用翻译器,可以使用for循环,指定输出类型即可:
语气转换
json转html
进行展示:
拼写检查和语法检查
进一步的优化:
校准评论:
查看优化前后的不同:
扩展
从一个短句扩展成一个长的句子,email或者essay。但要注意使用方式,有的人使用它生成大量的垃圾邮件,废话文学等。
模型中的温度参数,允许我们改变模型响应的多样性,可以将温度视为模型的探索程度或随机性。
温度越高随机性越强,温度越低模型余越稳定。如果需要模型稳定,建议将温度设为0,每次执行的结果相同,如果需要创造性的输出,可以使用更高的温度。
构建聊天机器人
可以使用大模型构建一个自己的聊天机器人,比如AI客服代理,或者餐厅的AI点餐机。
这里定义了两个函数,一个是从prompt,一个是从message列表作为输入。
消息队列引导chatGTP根据具体设置回答,
自动化收集用户提示和信息。
这样模型有了上下文。使用UI进行展示
输出结果json结构化:
总结
基于一个项目的经验开始构建第二个项目,第三个项目等等。