目录
[user prompt和system prompt](#user prompt和system prompt)
大模型的能力是固定的,prompt决定能调度它多少。写好prompt是用好大模型的前提,是agent开发的基本功。
同样的大模型,不同的人用,得到的答案可能天差地别,有的回答精准可靠,有的回答可能一塌糊涂,这是为什么呢?
这就要考虑到提问的方式
给大模型的文字,包括指令,问题,背景,格式要求等等,这些统称为prompt
prompt是发给大模型的所有输入内容,不是一个简单的问题,是放入message消息列表的所有文字,说的越清楚,回答就越准确
为什么prompt很重要?
因为大模型本质上是一个next-token预测机器,根据上下文预测下一个可能出现的词,那么prompt越准确,预测的范围就会越小,输出就会越稳定
在agent里面,大模型的每次输出都要被程序解析和使用,输出稳定才能可靠解析,可靠解析才能触发下一步正确的操作。
user prompt和system prompt
user prompt(用户给模型说的话)
需要目标明确(做什么?),背景充足(有什么?),输出要求(要怎么样?)
system prompt(给模型的规则手册)
需要身份设定(具体角色),行为规则(能做什么,不能做什么),输出格式要求(按固定格式输出)
system prompt比user prompt更稳定,user prompt每次都会变化,但是system prompt一直都一样,是agent行为可预测的保障
如何写好Prompt
-
给模型角色,让模型知道该往哪走
-
告诉模型"要做什么"比"不要做什么"更好
-
给足够的背景知识,信息越充分,答案越靠谱
-
指定输出格式
-
Few-shot,给几个例子
-
让模型"先思考再回答"(思维链Chain of Thought)
Prompt的迭代与调试
prompt不太可能一次就写好,写完之后必须测试
多准备一些典型输入(正常情况,边界情况,担心出错的情况),每次修改后都跑一遍,看输出是否稳定
1.输出格式乱,就要在system prompt里面加更加严格的约束
2.答非所问,就要检查角色设定是否清晰,行为规则是否有遗漏,背景知识是否充分
- 时好时坏,输出不稳定,就要优化prompt,不一定是模型的问题
重要原则:每次改一个遍历,测多个case,观察稳定性。