课程来源: ChatGPT Prompt Engineering for Developers(DeepLearning.AI)
一、如何编写一则prompt
法则1:给出清晰、具体的指令
1、使用分隔符号
例如 ```, “”", < >, , :
2、结果输出结构化
指定以JSON、HTML等结构化格式输出相关元素
任务举例:“把回复用JSON格式输出,包括字段:response,search_intent”
3、让模型检查所给指令是否能完成
如果不能做到,指定如何处理异常
任务举例:xx如果没有xx,则提示用户xxx
4、发出指令时给几个案例
任务举例:“把距离单位转换成千米(例如:158967.7693是15.90千米)”
法则2:给模型一点时间去思考
1、分步骤去描述任务,指定输出结果的格式
Step1、step2…
例:输出结果用以下格式:
源文本:
Step1拿到的结果:
Step2拿到的结果:
…
2、让模型自己先思考一遍问题,再执行任务
例:prompt任务是判断学生做算术题是否正确
先让模型自己做一遍,再去检查学生的答案
3、模型的局限:以假乱真,给出看着很真但其实是错误的信息
一个小技巧(针对文本处理的任务):让模型去找到待引用的文本,尽量用源文本去给回复,这样能让模型去回溯原文,减少瞎编的情况。
二、Prompt编写迭代思路
把任务转化成清晰具体的prompt指令 > 执行\测试 > 错误分析 > 优化prompt指令 > 继续分析+优化+更多的测试
三、prompt的应用场景
1、总结篇章
2、推断信息(情感分析、舆情监测等)
3、文本转换(语言翻译、角色转换、格式转换、语法检查等)
4、扩写(客服回复邮件、写广告等)Temperature 值给越大,回复会越丰富
四、机器人开发
角色:system/assistant/user
在helper函数中使用messages 字段,在多轮对话中,每次请求要把system内容(任务背景信息)、前几轮的对话都输入给模型
举例:messages = [
{‘role’:‘system’, ‘content’:‘You are an assistant that speaks like Shakespeare.’},
{‘role’:‘user’, ‘content’:‘tell me a joke’},
{‘role’:‘assistant’, ‘content’:‘Why did the chicken cross the road’},
{‘role’:‘user’, ‘content’:‘I don’t know’} ]