提示语最佳实践-推理链结果的妙用

我们想要一个准确的答案,需要让模型“一步步思考”进行推理分析,得出答案。
但是“思考”后的内容很长,如果只需要一个准确的答案,而不要思考过程,怎么办呢?

过往做法

当我们向大型模型提问时,常常会发现它给出的答案并不总是准确,这是因为模型缺乏逐步推理的能力(即COT,Chain of Thought)。引入思维链后,虽然答案的准确性有所提升,但同时也带来了冗长的推理过程。很多时候,我们只想要一个简洁准确的答案,而不需要繁琐的推理步骤。
以往的做法是建立两个大型模型:第一个负责推理思考,第二个则用于总结答案。然而,这种方案不仅增加了成本,还延长了响应时间。
今天,我们将介绍一种最佳实践——将原本需要两个模型的任务整合到一个模型中。这种方法不仅能提高效率,还能在保证准确性的同时减少冗余信息,让你更快地获得所需答案。

原始问题

我们将从最基本的问题出发,直接让模型进行解答。每个模型都有其独特的回答方式,但其准确率波动较大,表现不够稳定。

我的测试问题是:

问题:1919年5月5日,天津《大公报》刊登“北京特约通讯”,标题为《北京学界之大举动﹣﹣昨日之游街大会/曹汝霖宅之焚烧/青岛问题之力争/章宗祥大受夷伤。从上述标题中能获得的信息是(  ) 选项:(A)京津两地工人罢工游行 (B)学生爱国浪潮遍及全国 (C)外争主权、内除国贼 (D)北洋政府逮捕大批学生  
答案:从A到D, 我们应选择什么?

这道历史题的正确答案时C。
下边是使用deepseek做的测试。但是这个答案是错误的。

Pasted image 20241108175723.png

为了提升模型回答的稳定性和准确性,我们计划引入思维链机制。通过这种方式,模型将在推理过程中进行更深入的思考,从而为我们提供更加细致和可靠的答案。

增加推理

我们引入思维链,引导模型先深入思考,全面分析问题后,再给出精准回答。

我们增加的推理逻辑是:

你在做历史试题,综合从多个方面慢慢思考,一步步的推理,告诉我你的答案是什么。

完整的提示语是:

问题:1919年5月5日,天津《大公报》刊登“北京特约通讯”,标题为《北京学界之大举动﹣﹣昨日之游街大会/曹汝霖宅之焚烧/青岛问题之力争/章宗祥大受夷伤。从上述标题中能获得的信息是(  ) 选项:(A)京津两地工人罢工游行 (B)学生爱国浪潮遍及全国 (C)外争主权、内除国贼 (D)北洋政府逮捕大批学生  
答案:从A到D, 我们应选择什么?

你在做历史试题,综合从多个方面慢慢思考,一步步的推理,告诉我你的答案是什么。

deepseek回答的效果是这样的:

Pasted image 20241108175848.png

经过深入推理,它的回答终于正确了。
我们引导它进行了全面思考,最终得到了答案。这种经过深思熟虑的答案,无疑更加准确和可靠。
然而,最大的问题是,我们渴望的是一个简洁明了的答案,而非冗长的推导过程。
因此,我们引入了一项重要的输出技巧:格式化输出。

格式化输出

在输出内容时,若要求大型语言模型(LLM)将问题的思考过程与最终答案分开呈现,我们可以巧妙地设计输出格式:思考内容单独成段,答案则置于另一段。这样一来,我们便能轻松提取出纯粹的答案部分,使得信息的获取更加高效且直观。

我们增加了提示语输出的格式要求:

推理和思考的过程写在标签内,答案写在内。
答案中只能包含选项字母(eg. A)

完整的提示语:

问题:1919年5月5日,天津《大公报》刊登“北京特约通讯”,标题为《北京学界之大举动﹣﹣昨日之游街大会/曹汝霖宅之焚烧/青岛问题之力争/章宗祥大受夷伤。从上述标题中能获得的信息是(  ) 选项:(A)京津两地工人罢工游行 (B)学生爱国浪潮遍及全国 (C)外争主权、内除国贼 (D)北洋政府逮捕大批学生  
答案:从A到D, 我们应选择什么?

你在做历史试题,综合从多个方面慢慢思考,一步步的推理,告诉我你的答案是什么。
推理和思考的过程写在标签内,答案写在内。
答案中只能包含选项字母(eg. A)

这样,推理和思考的过程写在标签内,答案写在内。

Pasted image 20241108180116.png

接下来,我们该如何巧妙地提取出答案部分呢?

提取关键答案

只需要写一个程序,将xml中的answer部分提取出来就可以了。

运行的效果时这样的:

Pasted image 20241108180205.png

相关代码

import re

pattern = r'(.*?)'
match = re.search(pattern, text)
if match:
    answer = match.group(1)
    print(f"提取的答案是: {answer}")
else:
    print("未找到答案")

这样,我们就即使用到了LLM的推理能力,而又只拿到了模型的结果部分。

延伸

为何选择XML?

XML以其简洁的格式和清晰的结构,成为内容隔离的最佳选择。相较于JSON,XML无需考虑复杂的数据类型,使其在处理上更为简便。其宽松的要求使得它特别适合大型语言模型(LLM)在输出时进行内容隔离,确保信息的清晰与独立。

隔离输出的优势何在?

  1. 无缝融入现有流程:通过将不同部分进行隔离,我们可以更轻松地将这些结构化的输出整合到现有的工作流程中。这不仅简化了操作,还极大地拓展了LLM在各种场景中的应用潜力。
  2. 提升输出的连贯性与完整性:采用隔离输出的方式,模型能够一次性生成多个相关内容,确保每个部分既考虑了原始输入,也兼顾了之前的输出。例如,在进行英语分级阅读时,你可以使用 标签来标记不同难度的内容。这样生成的三段内容不仅更加统一,而且比分别调用三次LLM生成的结果更具连贯性和完整性。

版权声明:
作者:感冒的梵高
链接:https://www.techfm.club/p/168730.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>