prompt工程样例

部署运行你感兴趣的模型镜像

        记录一次正常的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降低,以求稳定输出

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

虽然给定引用中未直接提及 Java Prompt 工程的实践案与方法,但可以从提示工程的通用知识来进行一定推测。 提示工程是构建和优化输入提示以引导大语言模型(LLMs)生成准确且富有洞察力输出的艺术和科学,Java 作为一种广泛使用的编程语言,在 Prompt 工程中也可结合使用。 在实践方法上,可利用 PromptTemplate 来构建提示,还可以运用一些 Prompt 使用技巧,如为模型提供输出、设定完成任务步骤、使用思维链(Chain of Thought,COT)引导模型“思考”等。 对于实践案,假设在 Java 开发中使用大语言模型进行文本分类任务。可以使用 Active - Prompt 技术,其主要用于解决思维链示有效性的问题。以下是一个伪代码示来展示在 Java 中可能的实现: ```java import java.util.List; public class JavaPromptEngineeringExample { // 假设这是查询模型生成答案的方法 public static List<String> queryModel(String prompt, int numAnswers) { // 这里应该是实际调用模型的逻辑 return null; } // 假设这是计算不确定度的方法 public static double calculateUncertainty(List<String> answers) { // 这里应该是实际计算不确定度的逻辑 return 0.0; } // 假设这是更新提示的方法 public static String updatePromptWithAnnotatedExample(String prompt) { // 这里应该是更新提示的逻辑 return prompt; } // 假设这是选择最一致答案的方法 public static String selectMostConsistentAnswer(List<String> answers) { // 这里应该是选择最一致答案的逻辑 return null; } public static void main(String[] args) { String prompt = "对以下文本进行分类:这是一篇科技类文章。"; List<String> answers = queryModel(prompt, 5); double uncertainty = calculateUncertainty(answers); double threshold = 0.5; String finalAnswer; if (uncertainty > threshold) { String newPrompt = updatePromptWithAnnotatedExample(prompt); finalAnswer = queryModel(newPrompt, 1).get(0); } else { finalAnswer = selectMostConsistentAnswer(answers); } System.out.println("最终答案: " + finalAnswer); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值