如何写出更好的提示词工程?
重要的提示原则
清晰而具体的表达
明确身份,以何种语气,何种方式去回答问题,回答哪个方面的问题。
使用分隔符去合理地断句,方便大模型理解。
让大模型确认需要完成任务的假设存在,如果条件不满足,则不进行任务。
给出少量成功的例子,供大模型参考。
给LLM时间去思考
分步思考,清晰地拆解回答思路。
先让大模型自己思考一遍,再去核对问题的想法。
让大模型根据实际的资料,溯源去回答问题,减少“幻觉”。
迭代开发提示词
与机器学习方法类似,模型提示迭代也要经历一系列过程。如图,为机器学习开发迭代的主要过程。
提出一个想法
编码实现,得到数据
训练模型,得到实验结果
查看输出,误差分析,找出不工作的地方
进而改变思路方法,改变实现
进行新的尝试,反复迭代,直到得到理想结果
提示词迭代
1. 尝试编写一个清晰、具体、合理的提示词,让系统有足够的时间去思考。
2. 运行查看结果,如果不理想,分析哪里说明不够清晰,或者算法不足以让系统充足思考。
3. 改进提示,反复迭代,直到得到合适应用程序的提示。
技巧:
1. 控制输出内容的长度(字数,段落)
2. 确定应用程序面向的用户对象,进而决定内容的侧重点(特征)。
3. 使用多个测试用例进行评估。
模型的主要能力:总结,推理,转换,拓展。
总结
对一段内容进行提取/总结。
推理
让大模型进行情感分析,信息提取,主题识别,还可以转换成其他类型的值进行输出。
通过单一API实现多自然语言任务处理,减少模型训练与部署成本。
可以使用特定符号对输出进行分隔。
优化提示词以便获得结构化输出,输出为JSON格式,或者其他。
转换
将一种语言转换输出为另一种语言,纠正拼写和语法。
转换格式,把HTML输出为JSON(代替正则)。
根据正式和非正式语言进行区分,指定格式。
拓展
将短文本(一组说明或者一个主题列表)转换成更长的文本(电子邮件或关于一个主题的文章)。
参数:温度(temperature),决定响应多样性(随机性)。
例子:根据已有的输入内容,以及情感提取的结果,制定输出内容。假如预测回答三个结果A,B,C的概率分别为50%,30%,5%。温度为0时将始终输出结果A,温度为0.3时,可能高概率输出A,低概率输出B。温度为0.7时,输出的结果将不确定是A,B,C。
聊天
聊天模型以ChatGPT为例,角色消息结构:
message =
[
...(上下文context)
{"role": "system", "content":"You are ..."},
{"role":"user", "content":"tell me a joke."},
{"role":"assistant", "content":"why did the chicken..."},
...
]系统提示词为大模型做提示,引导回复方式,大模型再根据用户输入内容,思考进行特定的输出。
每次对话的信息都是独立的,如果大模型要从前文中提取消息/记住消息,就需要提供上下文。