通过扩展推理来理解模型推理
注意
本文档仅适用于版本 1:有关如何在版本 2 中使用延伸思考的信息,请访问延伸思考。
延伸思考是指让模型在不同推理阶段处理复杂问题的一种设置环境。在此阶段,模型先以 reasoningContent 块形式生成专门的推理内容,涉及对问题进行逐步的系统性探索。然后,模型反思其推理,找出潜在错误或替代方法。再接着,模型最终确定其响应内容。这样就产生了正确的最终答案,同时提供了对模型过程的透明洞察
由于延伸思考的计算要求很高,Nova 可选择性地启用混合方法。这意味着可以为时效性要求较低的复杂查询开启延伸思考。对于简单或需要快速响应的查询,可禁用延伸思考以减小计算资源负载。
扩展推理的工作原理
启用延伸思考后,Nova 会在响应中创建 ReasingContent 块,从中输出其内部思考过程。模型使用这种推理来生成最终文本响应,从而在思考阶段和最终答案之间建立了明确的区分。
以下是 API 响应,包括 reasoningContent 块及后续文本内容块:
{ "output": { "message": { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "Let me analyze this optimization problem systematically. First, I need to understand the constraints: 5 warehouses, 12 distribution centers, 200 retail locations, with a 50-mile maximum distance requirement. This is a classic facility location problem with distance constraints...", } } }, { "text": "Based on my analysis, I recommend implementing a two-phase optimization approach. Phase 1 should focus on clustering retail locations using k-means algorithm to identify natural distribution center catchment areas..." } ] } } }
使用扩展推理
下面是启用扩展推理的 Converse API 调用的一个示例:
import boto3 import json client = boto3.client("bedrock-runtime", region_name="us-east-1") # Enable extended thinking for complex problem-solving response = client.converse( modelId="amazon.nova-lite-1-5-v1:0", messages=[{ "role": "user", "content": [{"text": "I need to optimize a logistics network with 5 warehouses, 12 distribution centers, and 200 retail locations. The goal is to minimize total transportation costs while ensuring no location is more than 50 miles from a distribution center. What approach should I take?"}] }], inferenceConfig={ "maxTokens": 40000, "temperature": 0 }, additionalModelRequestFields={ "reasoningConfig": { "type": "enabled", "maxReasoningEffort": "high" } } ) # The response will contain reasoning blocks followed by the final answer for block in response["output"]["message"]["content"]: if "reasoningContent" in block: reasoning_text = block["reasoningContent"]["reasoningText"]["text"] print(f"Nova's thinking process:\n{reasoning_text}\n") elif "text" in block: print(f"Final recommendation:\n{block['text']}")
如果排除 reasoningConfig 元素,模型将默认禁用延伸思考。
延伸思考配置选项
Nova 通过 ReasingConfig 参数来灵活控制延伸思考行为,这样您就可以根据自己的特定需求优化推理时间的计算分配。
推理控制
可在两种模式之间切换延伸思考功能。如果将 type 设置为 disabled(默认),则意味着 Nova 使用高效的潜在推理,在速度和效率方面进行优化。如果将 type 设置为 enabled,则启用具有明显推理过程的 Nova 显性延伸思考。
推理工作量等级
启用延伸思考后,可控制 Nova 在推理过程中投入了多少计算工作量。maxReasoningEffort 设置为“low”适用于需要额外推理的中等复杂任务。中级设置适用于需要大量分析的复杂问题。高值设置可以为高度复杂的多方面任务提供了最为详尽的推理,最多使用 32,000 个推理词元。
{ "modelId": "amazon.nova-lite-1-5-v1:0", "inferenceConfig": { "maxTokens": 40000, "temperature": 0 }, "additionalModelRequestFields": { "reasoningConfig": { "type": "enabled", "maxReasoningEffort": "high" } } }
注意
使用 low 和 medium 设置时,推理内容将在使用 ConverseStream 生成每个词元时进行流式传输。但是,high 的工作原理有所不同,它采用不同的方法来提高质量,所有推理内容都输出到一个最终的块中。这可能会大大增加输出第一个词元的时间,并且需要额外的客户端工作才能进行有效管理。
延伸思考的最佳实践
确定扩展推理用例
本节将介绍扩展推理适用和不适用的潜在用例。
延伸思维适用的用例:
-
解决复杂问题:多步骤数学计算和证明、需要系统性方法的算法挑战、具有多个相互依赖变量的科学分析以及具有复杂场景和约束条件的金融建模,所有这些都受益于模型在专门的思考阶段有条理地解决问题的能力。
-
高级编码任务:跨多个文件和依赖项的大型代码库重构、需要系统性消除各种可能性的复杂调试场景、具有多个技术考虑因素的系统架构设计以及跨多项服务和平台的迁移规划,所有这些都受益于 Nova 在提出解决方案前全面推理出问题空间的能力。
-
分析任务:需要综合多个来源的文档分析、具有竞争性优先事项和约束条件的战略规划、需要评估冲突证据的研究任务以及需要仔细考虑法规规定的法律或合规分析,所有这些都受益于模型系统地处理复杂信息的能力。
-
多步骤规划:具有依赖项和资源限制的项目规划、需要根据多个标准进行优化的工作流程设计、需要评估多个场景的风险分析以及需要系统评估的业务流程优化,所有这些都受益于 Nova 的增强规划能力。
扩展推理不适用的用例:
-
简单查询:基本事实问题(比如“法国的首都是哪里?”)、直截了当的定义(比如“API 代表什么?”)、涉及基本算术的简单计算以及直接从提供的上下文中检索信息,所有这些都可以在 Nova 默认的潜在推理模式下高效运行。
-
速度关键型应用程序:非常看重延迟的实时聊天应用程序、生产系统中的高频 API 调用、为高容量用例生成简单内容以及基础分类或情感分析任务,所有这些都受益于更快的潜在推理响应时间。
-
成本敏感型工作负载:速度和成本比推理深度更重要的高容量处理、逻辑简单的简单自动化任务、基本的内容审核或筛选以及常规数据处理和转换,通常这些不需要在延伸思考上进行额外的计算投入。
选择推理工作量等级
-
低:最适合代码审查和改进建议、需要额外考虑的基本分析任务、适合采用结构化方法的简单问题解决,以及具有中等复杂度的大多数日常开发任务。该级别在保持合理成本和延迟特性的同时,提供了有意义的推理增强能力。
-
中:适用于需要系统性调查的复杂调试场景、具有相互依赖关系的多步骤计算、具有多个约束条件的中等规划任务以及需要评估多个备选方案的分析。该级别为适合更深入分析的问题提供了充分的推理深度。
-
高:可以为高级数学问题和证明、具有多个架构考虑因素的复杂系统设计、需要深入分析与综合的研究任务、具有重大影响的关键决策场景以及需要谨慎规划和验证的多步骤工作流程提供最佳结果。该级别使 Nova 能够投入大量的计算资源来全面解决复杂的问题。
管理成本和绩效
成本优化
成本优化需要谨慎运用延伸思考。仅在复杂性足以证明额外付出计算成本合理时才使用延伸思考,因为推理词元是按输出词元计费的。先从小工作量开始,然后根据结果逐渐增大,直至找到适合用例的最佳平衡。监控应用程序中的推理词元使用模式,确定优化时机。考虑对时间不敏感的繁重推理任务进行批处理,以降低成本。请谨记,禁用延伸思考的潜在推理可有效处理大多数任务,因此应将其保留为默认方法。
性能优化
性能优化包括设置适当的 maxTokens 值,以适应推理和最终响应内容。采用流式传输处理复杂推理任务,以提升感知性能和用户体验。尽可能缓存常见问题类型的推理模式。根据用户期望和时间限制考虑推理工作量,在全面分析与响应时间要求之间实现平衡。