面向开发者的LLM入门课程-提示原则模型思考: 原则二 给模型时间去思考 在设计Prompt时,给予语言模型充足的推理时间非常重要。语言模型与人类一样,需要时间来思考并解……
哈喽!伙伴们,我是小智,你们的AI向导。欢迎来到每日的AI学习时间。今天,我们将一起深入AI的奇妙世界,探索“面向开发者的LLM入门课程-提示原则模型思考”,并学会本篇文章中所讲的全部知识点。还是那句话“不必远征未知,只需唤醒你的潜能!”跟着小智的步伐,我们终将学有所成,学以致用,并发现自身的更多可能性。话不多说,现在就让我们开始这场激发潜能的AI学习之旅吧。
面向开发者的LLM入门课程-提示原则模型思考:
原则二 给模型时间去思考
在设计Prompt时,给予语言模型充足的推理时间非常重要。语言模型与人类一样,需要时间来思考并解决复杂问题。如果让语言模型匆忙给出结论,其结果很可能不准确。例如,若要语言模型推断一本书的主题,仅提供简单的书名和一句简介是不足够的。这就像让一个人在极短时间内解决困难的数学题,错误在所难免。
相反,我们应通过Prompt指引语言模型进行深入思考。可以要求其先列出对问题的各种看法,说明推理依据,然后再得出最终结论。在Prompt中添加逐步推理的要求,能让语言模型投入更多时间逻辑思维,输出结果也将更可靠准确。
综上所述,给予语言模型充足的推理时间,是Prompt Engineering中一个非常重要的设计原则。这将大大提高语言模型处理复杂问题的效果,也是构建高质量Prompt的关键之处。开发者应注意给模型留出思考空间,以发挥语言模型的最大潜力。
1.指定完成任务所需的步骤
接下来我们将通过给定一个复杂任务,给出完成该任务的一系列步骤,来展示这一策略的效果。
首先我们描述了杰克和吉尔的故事,并给出提示词执行以下操作:首先,用一句话概括三个反引号限定的文本。第二,将摘要翻译成英语。第三,在英语摘要中列出每个名称。第四,输出包含以下键的JSON对象:英语摘要和人名个数。要求输出以换行符分隔。
text = f”””
在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。
他们一边唱着欢乐的歌,一边往上爬,
然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。虽然略有些摔伤,但他们还是回到了温馨的家中。
尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。
“””# example 1
prompt_1 f”””
执行以下操作:
1-用一句话概括下面用三个反引号括起来的文本。
2-将摘要翻译成英语。
3-在英语摘要中列出每个人名。
4-输出一个JSON对象,其中包含以下键:english_summary,num_names请用换行符分隔您的答案。
Text:
“` {text }“`
“””
response = get_completion (prompt_1 )
print (“prompt 1:” )
print (response )
prompt 1:
1-两个兄妹在山上打水时发生意外,但最终平安回家。
2-In a charming village, siblings Jack and Jill set off to fetch water from a well on top of a hill. While singing joyfully, they climbed up, but unfortunately, Jack tripped on a stone and rolled down the hill, with Jill following closely behind. Despite some minor injuries, they made it back to their cozy home. Despite the mishap, their adventurous spirit remained undiminished as they continued to explore with delight.
3-Jack, Jill
4-{“english_summary”: “In a charming village, siblings Jack and Jill set off to fetch water from a well on top of a hill. While singing joyfully, they climbed up, but unfortunately, Jack tripped on a stone and rolled down the hill, with Jill following closely behind. Despite some minor injuries, they made it back to their cozy home. Despite the mishap, their adventurous spirit remained undiminished as they continued to explore with delight.”, “num_names”: 2}
上述输出仍然存在一定问题,例如,键“姓名”会被替换为法语(译注:在英文原版中,要求从英语翻译到法语,对应指令第三步的输出为’Noms:’,为Name的法语,这种行为难以预测,并可能为导出带来困难)
因此,我们将Prompt加以改进,该Prompt前半部分不变,同时确切指定了输出的格式。
prompt_2 = f”””
1-用一句话概括下面用 <> 括起来的文本。
2-将摘要翻译成英语。
3-在英语摘要中列出每个名称。
4-输出一个JSON对象,其中包含以下键:English_summary,num_names。请使用以下格式:
文本:<要总结的文本>
摘要: <摘要 >
翻译: <摘要的翻译 >
名称:<英语摘要中的名称列表>
输出 JSON :<带有 English_summary 和num_names 的JSON>Text: < {text }>
“””
response = get_completion (prompt_2 )
print (“nprompt 2:” )
print (response )
prompt 2:
Summary:在一个迷人的村庄里,兄妹杰克和吉尔在山顶井里打水时发生了意外,但他们的冒险精神依然没有减弱,继续充满愉悦地探索。
Translation: In a charming village, siblings Jack and Jill set off to fetch water from a well on top of a hill. Unfortunately, Jack tripped on a rock and tumbled down the hill, with Jill following closely behind. Despite some minor injuries, they made it back home safely. Despite the mishap, their adventurous spirit remained strong as they continued to explore joyfully.
Names: Jack, Jill
JSON Output: {“English_summary”: “In a charming village, siblings Jack and Jill set off to fetch water from a well on top of a hill. Unfortunately, Jack tripped on a rock and tumbled down the hill, with Jill following closely behind. Despite some minor injuries, they made it back home safely. Despite the mishap, their adventurous spirit remained strong as they continued to explore joyfully.”, “num_names”: 2}
2.指导模型在下结论之前找出一个自己的解法
在设计Prompt时,我们还可以通过明确指导语言模型进行自主思考,来获得更好的效果。
举个例子,假设我们要语言模型判断一个数学问题的解答是否正确。仅仅提供问题和解答是不够的,语言模型可能会匆忙做出错误判断。
相反,我们可以在Prompt中先要求语言模型自己尝试解决这个问题,思考出自己的解法,然后再与提供的解答进行对比,判断正确性。这种先让语言模型自主思考的方式,能帮助它更深入理解问题,做出更准确的判断。
接下来我们会给出一个问题和一份来自学生的解答,要求模型判断解答是否正确:
prompt = f”””
判断学生的解决方案是否正确。问题:
我正在建造一个太阳能发电站,需要帮助计算财务。土地费用为100美元/平方英尺
我可以以250美元/平方英尺的价格购买太阳能电池板
我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元作为平方英尺数的函数,首年运营的总费用是多少。学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:土地费用:100x
太阳能电池板费用:250×
维护费用:100,000美元+100×
总费用:100x+250x+100 ,000美元+100×=450x+100 ,000美元
“””response = get_completion (prompt )
print (response )学生的解决方案是正确的。他正确地计算了土地费用、太阳能电池板费用和维护费用,并将它们相加得到了总费用。
但是注意,学生的解决方案实际上是错误的。(维护费用项100x应为1Ox ,总费用450x应为360x)
我们可以通过指导模型先自行找出一个解法来解决这个问题。
在接下来这个Prompt中,我们要求模型先自行解决这个问题,再根据自己的解法与学生的解法进行对比,从而判断学生的解法是否正确。同时,我们给定了输出的格式要求。通过拆分任务、明确步骤,让模型有更多时间思考,有时可以获得更准确的结果。在这个例子中,学生的答案是错误的,但如果我们没有先让模型自己计算,那么可能会被误导以为学生是正确的。
prompt = f”””
请判断学生的解决方案是否正确,请通过如下步骤解决这个问题:步骤:
首先,自己解决问题。
然后将您的解决方案与学生的解决方案进行比较,对比计算得到的总费用与学生计算的总费用是否一致,并评估学生的解决方案是否正确。
在自己完成问题之前,请勿决定学生的解决方案是否正确。使用以下格式:
问题:问题文本
学生的解决方案:学生的解决方案文本
实际解决方案和步骤:实际解决方案和步骤文本
学生计算的总费用:学生计算得到的总费用
实际计算的总费用:实际计算出的总费用
学生计算的费用和实际计算的费用是否相同:是或否
学生的解决方案和实际解决方案是否相同:是或否
学生的成绩:正确或不正确问题:
我正在建造一个太阳能发电站,需要帮助计算财务。
-土地费用为每平方英尺100美元
-我可以以每平方英尺250美元的价格购买太阳能电池板
-我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元;作为平方英尺数的函数,首年运营的总费用是多少。
学生的解决方案:
设x为发电站的大小,单位为平方英尺。
费用:1.土地费用:100x美元
2.太阳能电池板费用:250×美元
3.维护费用:100,000+100×=10万美元+10×美元总费用:100x美元+250×美元+10万美元+100×美元=450x+10万美元
实际解决方案和步骤:
“””response = get_completion(prompt)
print(response)
实际解决方案和步骤:
1.土地费用:每平方英尺100美元,所以总费用为100x美元。
2.太阳能电池板费用:每平方英尺250美元,所以总费用为250×美元。
3.维护费用:固定费用为10万美元,额外费用为每平方英尺10美元,所以总费用为10万美元+10×美元。
4.总费用:将上述三项费用相加,得到总费用为100x美元+250×美元+10万美元+10×美元=360x+10万美元。学生计算的总费用:450x+10万美元
实际计算的总费用:360x+10 万美元
学生计算的费用和实际计算的费用是否相同:否
学生的解决方案和实际解决方案是否相同:否
学生的成绩:不正确
嘿,伙伴们,今天我们的AI探索之旅已经圆满结束。关于“面向开发者的LLM入门课程-提示原则模型思考”的内容已经分享给大家了。感谢你们的陪伴,希望这次旅程让你对AI能够更了解、更喜欢。谨记,精准提问是解锁AI潜能的钥匙哦!如果有小伙伴想要了解学习更多的AI知识,请关注我们的官网“AI智研社”,保证让你收获满满呦!
还没有评论呢,快来抢沙发~