为大型语言模型(LLMs)提供充分思考时间的重要性

在构建提示(Prompt)时,确保大型语言模型(LLMs)有充足的时间进行推理是至关重要的。正如人类需要时间来处理和解决复杂问题一样,LLMs 也需要时间来思考以提供准确的答案。如果 LLMs 被迫快速作出反应,其输出的质量可能会受到影响。

深入思考的必要性

当要求 LLMs 推断书籍主题或解决数学问题时,仅提供基本信息是不够的。这类似于要求一个人在极短的时间内解决一个难题,错误几乎是不可避免的。

引导深入思考的方法

为了提高 LLMs 的推理能力,我们可以在提示中加入逐步推理的指导。例如,在评估数学问题解答的正确性时,我们可以先要求 LLMs 自己尝试解决问题,并形成自己的解法,然后再与给定的解答进行比较。

具体示例

假设我们需要 LLMs 判断一个数学问题的解答是否正确。我们不应该仅仅提供问题和解答,而是应该:

  1. 要求 LLMs 首先独立尝试解决这个问题。2. 思考并形成自己的解题方法。3. 将 LLMs 的解法与提供的解答进行对比,以评估其正确性。 通过这种方式,LLMs 不仅能够更深入地理解问题,而且能够做出更加精确的判断。

反例

以下是不推荐的做法:

  • 直接给出问题和解答,要求 LLMs 判断解答的正确性,而没有给予足够的时间和空间进行自主思考。 通过上述方法,我们可以提高 LLMs 在处理问题时的准确性和可靠性。
prompt = f"""  
判断学生的解决方案是否正确。  
  
问题:  
我正在建造一个太阳能发电站,需要帮助计算财务。  
  
    土地费用为 100美元/平方英尺  
    我可以以 250美元/平方英尺的价格购买太阳能电池板  
    我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元  
    作为平方英尺数的函数,首年运营的总费用是多少。  
  
学生的解决方案:  
设x为发电站的大小,单位为平方英尺。  
费用:  
  
    土地费用:100x  
    太阳能电池板费用:250x  
    维护费用:100,000美元+100x  
    总费用:100x+250x+100,000美元+100x=450x+100,000美元  
"""  
response = get_completion(prompt)  
print(response)  

输出:

学生的解决方案是正确的。他正确地计算了土地费用、太阳能电池板费用和维护费用,并将它们相加得到了总费用。  

在解决数学问题时,我们首先需要自己独立进行计算,以确保我们对问题的理解是正确的。接下来,我们将通过以下步骤来分析和比较学生提供的解决方案:

  1. 独立解题:首先,我们要自己解决这个问题,确保我们有一个正确的答案作为参考。
  2. 分析学生解法:然后,我们将仔细检查学生的解法,注意其中的每一个步骤和计算。
  3. 对比解法:将我们自己的解法与学生的解法进行对比,找出差异和可能的错误点。
  4. 识别错误:根据对比结果,指出学生解法中的错误,并提供正确的计算过程。 在本例中,学生的解法存在错误,具体如下:
  • 维护费用项错误地计算为100x,而正确的计算应为10x。
  • 总费用错误地计算为450x,而正确的总费用应为360x。 通过上述步骤,我们可以清晰地展示学生解法的不足,并指导他们如何正确地解决问题。
prompt = f"""  
请判断学生的解决方案是否正确,请通过如下步骤解决这个问题:  
  
步骤:  
  
    首先,自己解决问题。  
    然后将您的解决方案与学生的解决方案进行比较,对比计算得到的总费用与学生计算的总费用是否一致,并评估学生的解决方案是否正确。  
    在自己完成问题之前,请勿决定学生的解决方案是否正确。  
  
使用以下格式:  
  
    问题:问题文本  
    学生的解决方案:学生的解决方案文本  
    实际解决方案和步骤:实际解决方案和步骤文本  
    学生计算的总费用:学生计算得到的总费用  
    实际计算的总费用:实际计算出的总费用  
    学生计算的费用和实际计算的费用是否相同:是或否  
    学生的解决方案和实际解决方案是否相同:是或否  
    学生的成绩:正确或不正确  
  
问题:  
  
    我正在建造一个太阳能发电站,需要帮助计算财务。   
    - 土地费用为每平方英尺100美元  
    - 我可以以每平方英尺250美元的价格购买太阳能电池板  
    - 我已经谈判好了维护合同,每年需要支付固定的10万美元,并额外支付每平方英尺10美元;  
  
    作为平方英尺数的函数,首年运营的总费用是多少。  
  
学生的解决方案:  
  
    设x为发电站的大小,单位为平方英尺。  
    费用:  
    1. 土地费用:100x美元  
    2. 太阳能电池板费用:250x美元  
    3. 维护费用:100,000+100x=10万美元+10x美元  
    总费用:100x美元+250x美元+10万美元+100x美元=450x+10万美元  
  
实际解决方案和步骤:  
"""  
response = get_completion(prompt)  
print(response)  

输出:

实际解决方案和步骤:  
  
    1. 土地费用:每平方英尺100美元,所以总费用为100x美元。  
    2. 太阳能电池板费用:每平方英尺250美元,所以总费用为250x美元。  
    3. 维护费用:固定费用为10万美元,额外费用为每平方英尺10美元,所以总费用为10万美元+10x美元。  
    4. 总费用:将上述三项费用相加,得到总费用为100x美元+250x美元+10万美元+10x美元=360x+10万美元。  
  
学生计算的总费用:450x+10万美元  
实际计算的总费用:360x+10万美元  
学生计算的费用和实际计算的费用是否相同:否  
学生的解决方案和实际解决方案是否相同:否  
学生的成绩:不正确  

提升LLMs推理能力的关键:充足的推理时间

在Prompt Engineering领域,确保LLMs拥有足够的推理时间是构建高质量Prompt的基石。这不仅能够显著提升LLMs处理复杂问题的能力,也是发挥其最大潜力的关键。

链式思考(Chain-of-Thought)Prompting技术

链式思考(CoT) 是一种先进的Prompt设计方法,它通过在Prompt中包含任务的输入、输出以及推理的中间步骤,来提升LLMs在复杂推理任务上的表现。这些推理任务包括但不限于算术推理、常识推理和符号推理。

CoT的优势

  • 无需模型更新:CoT技术使得LLMs能够在不进行任何模型更新的情况下解决一些难题。
  • 提升推理表现:通过展示推理的中间步骤,CoT能够显著提高LLMs在复杂问题上的推理能力。

如何应用CoT

开发者在设计Prompt时,应考虑以下要点:

  1. 明确任务需求:清晰地定义任务的输入和预期输出。
  2. 展示推理过程:在Prompt中包含推理的中间步骤,帮助LLMs构建思维链。
  3. 留出思考空间:为LLMs提供足够的时间来处理和推理信息。

学习资源推荐

对于想要深入了解Prompt Engineering和链式思考技术的开发者,推荐参考吴恩达老师的课程,可以在DeepLearning.AI找到相关资源。

结语

通过合理设计Prompt并给予LLMs充足的推理时间,我们能够充分发挥其在处理复杂问题上的能力,构建出更加智能和高效的人工智能系统。
图片
思维链(Chain of Thought,简称CoT)提示是一种先进的技术,它通过引入中间推理步骤来增强大型语言模型(LLMs)的复杂推理能力。以下是CoT提示的几个主要优势:

  1. 多步问题分解:CoT提示允许模型将复杂问题拆解成多个中间步骤,这有助于模型更有效地处理需要多步推理的问题。

  2. 推理过程的可解释性:通过CoT,模型的推理过程变得更加透明,这不仅有助于理解模型如何得出答案,也为调试推理过程中的错误提供了可能。

  3. 应用范围广泛:CoT推理可以应用于包括数学问题解决、常识推理以及符号操作等多种任务,理论上适用于所有可以通过语言解决的问题。

  4. 易于集成:只需在Few-shot示例中包含CoT的示例,就可以在现有的大型语言模型中轻松实现CoT推理。 此外,CoT提示与少样本(Few-shot)提示相结合,可以在不增加模型复杂度的情况下,显著提升模型在复杂任务上的表现。
    图片

基本上涉及将“让我们逐步思考”添加到原始提示中。尝试一个简单的问题,看看模型的表现如何:

输入:

我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?  

输出:

11个苹果  

答案是不正确的!现在让我们尝试使用特殊提示——“让我们逐步思考”。

输入:

我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?  
  
让我们逐步思考。  

输出:

首先,您从10个苹果开始。  
您给了邻居和修理工各2个苹果,所以您还剩下6个苹果。  
然后您买了5个苹果,所以现在您有11个苹果。  
最后,您吃了1个苹果,所以您还剩下10个苹果。  

自动思维链技术(Auto-CoT)

自动思维链技术(Auto-CoT)是一种创新的方法,旨在通过利用大型语言模型(LLMs)的逐步推理能力,自动化地生成推理链。这种方法可以减少人工干预,提高生成解决方案的效率和多样性。以下是对Auto-CoT的详细解析:

阶段一:问题聚类

在Auto-CoT的第一阶段,我们首先对给定的问题进行聚类处理。这一步骤的目的是将相似的问题归为一类,以便于后续处理。问题聚类可以基于问题的关键词、主题或上下文信息来实现。

阶段二:示例抽样

完成问题聚类后,第二阶段是示例抽样。在这一阶段,我们从每个问题聚类中选取一个代表性问题。选择标准可以包括问题的普遍性、复杂性或与聚类主题的关联度。然后,使用Zero-Shot-CoT方法,结合简单的启发式规则,为这些问题生成推理链。

启发式规则

  • 问题长度:选择长度适中的问题,例如限制在60个tokens以内,以确保问题表述的简洁性。
  • 推理步骤数:确定推理链中包含的步骤数,例如5个步骤,以保持推理过程的清晰和易于理解。

过程图示

以下是Auto-CoT过程的图示,展示了从问题聚类到示例抽样,再到推理链生成的整个流程: [问题输入] | |--> 问题聚类 | | | |--> 选取代表性问题 | |--> 使用Zero-Shot-CoT生成推理链 | |--> 输出推理结果

错误与多样性

尽管Auto-CoT提供了自动化的解决方案,但在生成推理链的过程中仍然可能出现错误。为了降低错误的影响,我们强调示例的多样性。通过从不同的问题聚类中采样,我们可以构建出多样化的推理链,从而提高整体的准确性和可靠性。

结论

Auto-CoT技术通过自动化推理链的生成,减少了人工干预,提高了效率。同时,通过问题聚类和示例抽样,确保了解决方案的多样性和代表性。这种方法为解决复杂问题提供了一种新的视角和工具。
图片

实践经验

任务规划与CoT

任务规划能力是指根据任务和目标,自动生成执行步骤和计划的能力。这要求LLMs具备任务理解、环境感知、资源管理和行动预测等能力。以下是LLMs任务规划能力的价值:

  1. 提高决策效率:快速处理数据,生成最优计划,加速决策过程。
  2. 增强适应性:灵活调整计划,应对复杂环境和任务。
  3. 实现自动化:在特定领域实现自动化决策,提高效率,降低成本。
  4. 提升创新能力:通过数据分析提供新思路,激发创新。
  5. 改善人机交互:更好地理解用户需求,提供个性化服务。 面对复杂问题,通常首先进行任务分解,将大问题拆分为小问题,逐一解决。在问题解决过程中,如果出现错误,应先反思错误,再思考下一步的解题策略。

RAG与CoT结合

检索增强思维(RAT)方法结合了检索增强生成(RAG)和思维链(CoT)的优势,通过检索外部信息并明确推理过程。RAT的实施步骤如下:

  1. 使用CoT提示:通过问题或任务提示LLMs,生成中间想法或推理步骤。
  2. 检索相关信息:根据LLMs生成的中间想法,从外部源检索相关信息。
  3. 修改和细化思维链:根据检索到的信息,调整或细化LLMs的推理步骤。
  4. 生成最终响应:结合修改后的思维链和检索到的信息,生成最终的响应或解决方案。 RAT方法通过结合RAG的检索功能和CoT的显式推理过程,旨在减少LLMs输出中的幻觉和事实不一致问题。检索到的信息为LLMs提供相关上下文和知识,而思维链提示确保推理过程的透明性和可调整性。

图片
人工智能的快速发展正在不断推动着技术边界的扩展。近期,大型语言模型(LLM)在任务规划和工具使用方面展现出了巨大潜力,它们不仅可以生成文本和故事,甚至能够解决复杂问题。以下是一些深入探讨这一领域的推荐阅读材料,它们将为您提供关于如何让LLM像专家一样进行任务规划和使用工具的洞见。

  1. 让LLM像专家一样进行任务规划和使用工具:深入探讨了LLM驱动的自主代理系统中的关键组件,包括任务规划、记忆和工具使用。这些组件共同构成了一个强大的问题解决者。

  2. 吴恩达:AI Agent工作流今年将有巨大进展:著名学者吴恩达指出,AI Agent工作流将是今年推动人工智能取得重大进步的重要趋势。

  3. 更智能的Agent,Plan-and-Execute Agents计划和执行:介绍了一种新型的Agent设计模式,该模式通过明确的规划步骤来克服传统ReAct风格Agent的缺点。

  4. ReAct Agent回答RAG系统中的复杂问题:虽然具体内容已删除,但可以推测它涉及ReAct Agent在复杂问题解答中的应用。

  5. 高级RAG实践(Self-Reflective RAG):Self-Reflective RAG通过自我纠正检索和生成过程中的不足,提高了检索增强生成(RAG)的性能。

  6. 免费领取:知乎大模型免费公开课:为那些希望深入了解大型语言模型的读者提供了一个学习机会。 此外,一些学术资源和开源项目也为我们提供了丰富的信息和工具,例如:

  • DeepLearning.AI提供的短课程,教授如何从生成式AI中学习。

  • 一篇关于如何通过链式思维提示激发大型语言模型进行推理的研究论文。

  • 展示了大型语言模型作为零样本推理者的潜力的研究。

  • 一个自动链式思维提示在大型语言模型中的开源项目。 通过这些资源,我们不仅能够更好地理解LLM的能力和应用,还能够探索如何将它们集成到我们的应用程序中,以实现更高级的人工智能功能。