Anthropic 的 Claude 4 Sonnet 模型现已在 Amazon Bedrock 上线,标志着基础模型能力的又一次重要飞跃。与此同时,Anthropic 也公布了 Claude 3.5 Sonnet(v1 和 v2)的弃用时间表。这一演进为生产环境中的 AI 应用带来了双重任务:既是把握模型性能提升的机遇,也是在旧模型弃用前完成迁移的必要操作。

组织应将模型迁移视为其 AI 推理战略的核心组成部分,因为糟糕的迁移执行可能导致服务中断、性能下降和成本超支。本文旨在提供一个系统性的方法,指导您在 Amazon Bedrock 上从 Anthropic Claude 3.5 Sonnet 平滑迁移至 Claude 4 Sonnet。我们将深入探讨关键的模型差异,剖析核心的迁移注意事项,并分享经过验证的最佳实践,助您将这次必要的过渡转变为推动业务价值的战略优势。

模型差异概览

规划成功迁移的第一步是理解模型版本之间的具体变化。从 Claude 3.5 Sonnet 迁移到 Claude 4 Sonnet,带来了以下几项关键的能力和行为转变:

  • 更长的上下文窗口:Claude 4 Sonnet 将上下文窗口从 20 万 token 扩展到了 100 万 token(测试版)。这使得应用程序可以在单个提示中处理和推理整个代码库、财务报告或冗长的法律文件,从而简化复杂的工作流。

  • 原生推理机制:Claude 3.5 Sonnet 模型依赖于思维链(CoT)提示技术,而 Claude 4 模型引入了内置的、可通过 API 启用的推理功能,如扩展思维(extended thinking)和交错思维(interleaved thinking)。这些功能给予模型在回答前专用的计算时间进行推理,显著提升了其在复杂问题上的表现。

  • 更强的工具使用能力:Claude 4 Sonnet 模型极大地增强了工具使用能力。它能够并行执行多个工具,并在工具调用之间利用扩展思维,与旧模型顺序使用工具的方式相比,可以实现更复杂、更高效的智能体工作流。

迁移前的准备工作

在开始使用 Claude 4 Sonnet 模型之前,您必须在 Amazon Bedrock 中启用对这些模型的访问权限。

首先,请确认 Claude 4 Sonnet 在您计划使用的 AWS 区域中可用,因为不同区域的模型支持情况可能存在差异。您可以在 Amazon Bedrock 的模型支持文档中查看最新的区域列表。同时,您需要审阅并接受模型的最终用户许可协议(EULA)。

此外,您还可以考虑使用跨区域推理(CRIS),在运行模型推理时指定一个推理配置文件,这有助于提高吞吐量并最大化资源可用性。

API 变更与代码更新

在 Amazon Bedrock 上进行迁移时,您可以选择使用特定于模型的 InvokeModel API 或统一的 Converse API。

更新 Model ID

如果您正在使用 InvokeModel API,迁移过程非常直接。由于 Anthropic 的 Messages API 请求体结构在不同版本间保持一致,您只需在代码中更新 modelId 即可。

  • 旧模型 IDanthropic.claude-3-5-sonnet-20240620-v1:0anthropic.claude-3-5-sonnet-20241022-v2:0
  • 新模型 IDanthropic.claude-4-sonnet-20240514-v1:0

如果您使用了跨区域推理(CRIS)配置文件,请确保在源区域中指定正确的推理配置文件 ID,例如 us.anthropic.claude-sonnet-4-20250514-v1:0

迁移到 Converse API

本次迁移也是切换到 Converse API 的绝佳时机。它为 Amazon Bedrock 上的语言模型提供了标准化的请求/响应格式,能让未来迁移到其他模型或提供商变得更加简单。

import boto3

bedrock_runtime = boto3.client(service_name='bedrock-runtime')

# 只需更改 modelId 即可切换模型
response = bedrock_runtime.converse(
    modelId='anthropic.claude-4-sonnet-20240514-v1:0',
    messages=[{'role': 'user', 'content': [{'text': "在这里输入你的提示词"}]}],
    inferenceConfig={'maxTokens': 1024}
)

print(response['output']['message']['content'][0]['text'])

其他关键 API 变更

  • 文本编辑器工具更新:对于使用 Anthropic 内置文本编辑器工具的智能体工作流,工具定义已更新。tool type 现在是 text_editor_20250124tool name 现在是 str_replace_based_edit_tool。同时,由于该工具已正式可用,可以移除 anthropic_beta 请求头中的 computer-use-2024-10-22。所有使用此工具的代码都必须更新以反映这些更改。

  • 移除 undo_edit 命令:Claude 4 Sonnet 不再支持 undo_edit 命令。任何使用此命令的代码都应被移除。

  • 新增 refusal 停止原因:模型引入了一个新的停止原因 refusal。当模型因安全策略拒绝生成内容时,会返回此原因。处理模型响应的应用程序逻辑需要更新,以识别和管理这个新的停止原因,防止意外行为或错误。例如,在多轮对话中收到 refusal 时,您应通过移除或更新被拒绝的那一轮对话来重置上下文。

提示词工程与行为变化

不要假设您现有的提示词能够完美适用于新模型。遵循模型特定的最佳实践是获得理想结果的关键。

Anthropic 发布的 Claude 4 提示工程最佳实践指出,当提示词使用 XML 标签(如 <document></document>)来清晰地分隔输入的不同部分时,模型表现最佳。

Claude 4 Sonnet 被设计为更精确地遵循指令。这是一个主要优势,但也可能意味着它不如 Claude 3.5 Sonnet 那样健谈或详细,除非在提示中明确要求。因此,您可能需要调整定义 AI 角色的系统提示词。

利用全新的推理功能

Claude 4 Sonnet 模型内置的扩展思维(extended thinking)是一项强大的功能,可以解锁模型深度推理的能力。

如何使用扩展思维

开发者可以通过在 API 调用中包含 thinking 关键字参数来启用扩展思维。但请务必策略性地使用它——扩展思维会产生额外成本,因为推理过程中的 token 会按标准模型费率作为输出 token 计费。

  • 推荐使用场景:对于需要深度、多步分析且准确性至关重要的任务(如复杂的科学问题或高级编程挑战),建议启用扩展思维。
  • 不推荐使用场景:对于简单的查询或对延迟敏感的应用,建议禁用。该功能会增加成本和响应时间。对于许多任务,精心设计的思维链(CoT)提示仍然是最高效的选择。

要使用扩展思维,只需更新 Converse API 调用,添加 additionalModelRequestFields 参数并配置 thinking。您可以通过 budget_tokens 设置模型可用于思考的最大 token 数。请注意,maxTokens 的值应大于 budget_tokens

import boto3

bedrock_runtime = boto3.client(service_name='bedrock-runtime')

# 添加配置以启用扩展思维
response = bedrock_runtime.converse(
    modelId='anthropic.claude-4-sonnet-20240514-v1:0',
    messages=[{'role': 'user', 'content': [{'text': "在这里输入你的提示词"}]}],
    inferenceConfig={'maxTokens': 2048},
    additionalModelRequestFields={"thinking": {
        "type": "enabled",
        "budget_tokens": 1024
    }}
)

# 获取推理过程和最终答案
reasoning_text = response['output']['message']['content'][0]['reasoningContent']['reasoningText']['text']
assistant_response = response['output']['message']['content'][1]['text']

性能对比示例

下表展示了扩展思维如何提高响应的准确性。我们用同一个问题分别提问 Claude 3.5 Sonnet v2 和启用了扩展思维的 Claude 4 Sonnet。

问题:Alan、Bob、Colin、Dave 和 Emily 五个人站成一个圈。Alan 在 Bob 的正左边。Bob 在 Colin 的正左边。Colin 在 Dave 的正左边。Dave 在 Emily 的正左边。谁在 Alan 的正右边?

模型 扩展思维 输出 答案是否正确
Claude 3.5 Sonnet v2 不支持 让我一步步来解决这个问题。首先,我们已知:Alan 在 Bob 的左边,Bob 在 Colin 的左边,Colin 在 Dave 的左边,Dave 在 Emily 的左边。从任意一人开始排列:如果 Dave 在 Emily 的左边,那么 Emily 在 Dave 的右边。如果 Colin 在 Dave 的左边,那么 Dave 在 Colin 的右边。如果 Bob 在 Colin 的左边,那么 Colin 在 Bob 的右边。如果 Alan 在 Bob 的左边,那么 Bob 在 Alan 的右边。所以顺时针的顺序是:Alan → Bob → Colin → Dave → Emily。因为他们在一个圈里,Emily 必须挨着 Alan 才能闭合成环。因此,Emily 在 Alan 的正右边。答案是 Emily。
Claude 4 Sonnet 已启用 让我一步步来解决。我们有 5 个人围成一圈:Alan, Bob, Colin, Dave, Emily。我来梳理一下信息:Alan 在 Bob 的左边,Bob 在 Colin 的左边,Colin 在 Dave 的左边,Dave 在 Emily 的左边。因为是圆圈,我需要找出顺序。从一个人开始:如果 Alan 在 Bob 的左边,意味着顺时针方向是:Alan, 然后是 Bob。如果 Bob 在 Colin 的左边,意味着顺时针方向是:Bob, 然后是 Colin。如果 Colin 在 Dave 的左边,意味着顺时针方向是:Colin, 然后是 Dave。如果 Dave 在 Emily 的左边,意味着顺时针方向是:Dave, 然后是 Emily。所以顺时针绕圈的顺序是:Alan → Bob → Colin → Dave → Emily。但等等,既然是圆圈,Emily 必须和某人连接起来。既然我们有 Alan → Bob → Colin → Dave → Emily,这是一个完整的 5 人圈,那么 Emily 之后必须是 Alan。所以完整的顺时针圆圈是:Alan → Bob → Colin → Dave → Emily → Alan。这意味着 Emily 在 Alan 的正左边,因此 Alan 的正右边应该是……让我仔细想想。如果我们顺时针走:Alan → Bob → Colin → Dave → Emily → (回到 Alan)。所以 Alan 的正右边(从 Alan 顺时针方向)是 Bob。而 Alan 的正左边(从 Alan 逆时针方向)是 Emily。等等,我再检查一下给定的条件:Alan 在 Bob 的左边 ✓ (顺时针方向,Alan 在 Bob 前面)。Bob 在 Colin 的左边 ✓ (顺时针方向,Bob 在 Colin 前面)。

👉 如果你需要 ChatGPT 代充 / Claude / Claude Code / 镜像 / 中转 API