记录一次正常的prompt工程开发,学习prompt的开发、测试过程
1.业务需求
根据任务的详细信息通过LLM来生成一个或者多个提问
2.需求分析
通过某个具体的任务描述来生成一个相关的提问,LLM可以处理的不错。但是在分析的时候发现,对应不同的任务用同一个简单的prompt生成的结果,并不是让人很满意,需要一个任务对一个专门的prompt,才会有比较好的效果。但是业务中任务非常多,而且还在按月进行递增,所以无法使用一个简单的prompt去完成该需求,需要设计一个通用的prompt来处理该问题。需要设计一个能很好的平衡的prompt来处理
2.prompt开发
2.1简单的prompt
prompt=f"```{taskinof}```请根据上面的任务定义和任务名称抽取出一个问题",这个简单的prompt是可以生成一个提问question
输入
taskinfo='任务名称:2024公司安全违规问题数 \n 任务定义:公司内部检查发现的重大风险,外部检查的问题、或被上级单位通报数'
输出
question=2024年公司安全违规问题数是否得到有效控制?
这个结果并不是我们想要的,这里从任务的信息分析,主要是想得到"2024公司安全违规问题数有多少"这类的question
2.2更新prompt
分析2.1中的问题,该任务明显是一个统计数量类的问题,应该回复"有多少"、"统计xxx的数量"等,但是返回回答是给出了一个是否类的判断问题。
根据上面的分析,修改prompt增加一个逻辑分支,如果任务是数值相关的则去提问数值相关问题,如果是非是否相关的则去提问是否判断类问题
prompt=f'```{taskinof}```请根据上面的任务定义和任务名称抽取出一个问题,如果任务是数值相关的则去提问数值相关问题,如果是非数值否相关的则去提问是否判断类问题'
question=
"问题1:2024年公司内部检查发现了多少项重大安全违规问题?",
"问题2:2024年公司收到外部检查的安全问题通报共有多少个?",
"问题3:2024年公司被上级单位通报的安全违规问题次数是多少?"
这次能正常回答问题,但是任务被拆分成了3个问题,这点又不太符合我们的一个问题的要求。
2.3通用prompt
为了解决2.2出现的问题,我们在prompt中增加一个限制,如果有多个提问,请将他们总结、归纳到一个提问里
prompt=f'```{taskinof}```请根据上面的任务定义和任务名称抽取出一个问题,如果任务是数值相关的则去提问数值相关问题,如果是非数值相关的则去提问是否判断类问题。如果有多个提问,请将他们总结、归纳到一个提问里。'
question='2024年公司安全违规问题总数是多少?'
总结
一个任务的处理,最好能分情况分步骤的去处理。
后续
总体效果只能说是可以,达不到非常完美,不知道是不是模型垃圾了。模型为gpt3.5上衍生出来的
更新
调整temperature,降低数值以稳定返回结果。建议非聊天类的有明确目标格式化输出的需求,还是要把temperature降低,以求稳定输出