Skip to main content
您可以在 Claude 文档中找到 Anthropic 最新模型的信息、成本、上下文窗口以及支持的输入类型。
API 参考查看所有功能和配置选项的详细文档,请前往 @[ChatAnthropic API 参考。
AWS Bedrock 和 Gemini 企业智能体平台请注意,某些 Anthropic 模型也可以通过 AWS Bedrock 和 Gemini 企业智能体平台访问。查看 ChatBedrock 和 ChatVertexAI 集成,以通过这些服务使用 Anthropic 模型。对于 AWS Bedrock 上的 Anthropic 模型(与 ChatAnthropic 相同的 API),请使用 langchain-aws 的 ChatAnthropicBedrock。

概述

集成细节

模型特性

安装

要访问 Anthropic (Claude) 模型,您需要安装 langchain-anthropic 集成包并获取一个 Claude API 密钥。

安装

凭证

前往 Claude 控制台 注册并生成一个 Claude API 密钥。完成此操作后,设置 ANTHROPIC_API_KEY 环境变量:
要启用模型调用的自动跟踪,设置您的 LangSmith API 密钥:

实例化

现在我们可以实例化我们的模型对象并生成对话补全:
有关所有可用的实例化参数的详细信息,请参阅 @[ChatAnthropic] API 参考。
推理地域要控制模型推理运行的位置(数据驻留),在创建 @[ChatAnthropic] 时传递 inference_geo。有关支持值,请参阅 Anthropic 文档。

采样参数

较新的 Claude 模型会拒绝非默认的采样参数。在 claude-opus-5、claude-fable-5、claude-opus-4-8、claude-opus-4-7 或 claude-sonnet-5 上将 temperature、top_p 或 top_k 设置为非默认值会返回 400 错误:
模型支持情况:
升级模型字符串?按 ChatAnthropic(model=..., temperature=0) 编写的代码在升级到上述较新模型时会失效。请移除采样参数,而不是调整其值。在这些模型上,应通过提示词来控制输出风格。详情请参阅 Anthropic 迁移指南。

调用

要从流中聚合完整消息:
了解更多关于支持的调用方法,请参阅我们的 模型 指南。

内容块

在使用工具时,扩展思考和其他功能,来自单个 Anthropic @[AIMessage] 的内容可以是单个字符串,也可以是 Anthropic 内容块的列表。 例如,当 Anthropic 模型调用工具时,工具调用是消息内容的一部分(同时也会在标准化的 @[AIMessage.tool_calls] 中暴露):
使用 content_blocks 将以 LangChain 的标准格式渲染内容,该格式在跨其他模型提供者时保持一致。了解更多关于 内容块 的信息。
您还可以使用 tool_calls 属性以标准格式访问特定的工具调用:

工具

Anthropic 的工具使用功能允许您定义 Claude 在对话期间可以调用的外部函数。这支持动态信息检索、计算以及与外部系统的交互。 有关如何将工具绑定到您的模型实例的详细信息,请参见 @[ChatAnthropic.bind_tools]。
有关 Claude 的内置工具(代码执行、网络浏览、文件 API 等)的信息,请参阅 内置工具。

严格工具使用

严格工具使用需要 langchain-anthropic>=1.1.0。有关受支持的模型,请参阅 Claude 文档。
Anthropic 支持选择加入 严格遵循工具调用模式。这通过约束解码确保工具名称和参数经过验证并正确类型化。 在没有严格模式的情况下,Claude 有时可能会生成无效的工具输入,从而破坏您的应用程序:
  • 类型不匹配:passengers: "2" 而不是 passengers: 2
  • 缺少必需字段:遗漏您的函数期望的字段
  • 无效的枚举值:超出允许范围的值
  • 模式违规:嵌套对象不符合预期结构
严格工具使用保证符合模式的工具调用:
  • 工具输入严格遵循您的 input_schema
  • 保证字段类型和必需字段
  • 消除对格式错误输入的错误处理
  • 使用的工具 name 始终来自提供的工具
要启用严格工具使用,请在调用 @[bind_tools][ChatAnthropic.bind_tools] 时指定 strict=True。
考虑一个 passengers 必须是整数的预订系统:
严格工具使用有一些 JSON 模式限制需要注意。有关更多详细信息,请参阅 Claude 文档。 如果您的工具模式使用不受支持的功能,您将收到 400 错误。在这种情况下,请简化模式或使用标准(非严格)工具调用。

输入示例

对于复杂的工具,您可以提供使用示例以帮助 Claude 正确理解如何使用它们。这是通过在工具的 extras 参数中设置 input_examples 实现的。
extras 参数还支持:

细粒度工具流式输出

Anthropic 支持 细粒度工具流式输出,在流式传输具有大参数的工具调用时可以减少延迟。 细粒度流式输出在参数数据可用时立即发送,而不是在传输前缓存整个参数值。对于大型工具参数,这可以将初始延迟从 15 秒减少到约 3 秒。
细粒度流式输出可能会返回无效或部分 JSON 输入,特别是如果响应在完成前就到达 max_tokens 时。为不完整的 JSON 数据实现适当的错误处理。
要为应增量流式传输工具参数的工具启用细粒度工具流式输出,请在工具上设置 extras={"eager_input_streaming": True}。该值会通过工具定义传递给 Anthropic API。
流式数据以 input_json_delta 块的形式到达 chunk.content。您可以累积这些块来构建完整的工具参数:

程序化工具调用

程序化工具调用需要 langchain-anthropic>=1.3.0。请参阅 Claude 文档 了解支持的模型。
工具可以配置为从 Claude 的 代码执行 环境中可调用,在涉及大数据处理或多工具工作流的环境中可以减少延迟和 Token 消耗。 有关详细信息,请参阅 Claude 的 程序化工具调用指南。要使用此功能:
  • 在您的工具集中包含 代码执行 内置工具
  • 在您希望程序化调用的工具上指定 extras={"allowed_callers": ["code_execution_20250825"]}
下方提供了包含 create_agent 的完整示例。
您可以在初始化时指定 reuse_last_container 以自动重用先前模型响应的代码执行容器。

多模态

Claude 支持图像和 PDF 输入作为内容块,既支持 Anthropic 的原生格式(参见文档中关于 vision 和 PDF 支持 的说明),也支持 LangChain 的 标准格式。

支持的输入方法

文件 API 也可以用于将文件上传到容器中,以配合 Claude 的内置代码执行工具使用。详情请参阅 代码执行 部分。

图像输入

使用 @[HumanMessage] 并以列表内容格式提供文本和图像输入。

PDF 输入

提供文本和 PDF 文件输入。

扩展思考

某些 Claude 模型支持 扩展思考 功能,该功能会输出其最终答案所依据的逐步推理过程。 在 Claude 文档 中查看兼容的模型。 要使用扩展思考,在初始化 @[ChatAnthropic] 时指定 thinking 参数。如有需要,它也可以在调用过程中作为参数传递。 对于 Claude Sonnet 及更早版本模型,需要指定一个 Token 预算。对于 Claude Opus 4.6+,可以使用自适应思考功能,该功能会自动确定预算。
Claude 消息 API 在处理 Claude Sonnet 3.7 和 Claude 4 模型的思考方式上有所不同。更多信息请参考 Claude 文档。

努力程度

某些 Claude 模型支持一个 努力程度 功能,该功能控制 Claude 在响应时使用的 Token 数量。这对于在响应质量、延迟和成本之间取得平衡非常有用。
模型支持努力程度通常在 Claude Opus 4.6 和 Claude Opus 4.5 上可用。max 努力程度级别仅在 Claude Opus 4.6 上受支持。xhigh 努力程度级别在 Claude Opus 4.7 上受支持。Anthropic 可能会随着时间的推移添加或调整模型支持——请使用 Claude 努力程度文档 作为事实来源。
将 effort 设置为 "high" 与完全省略该参数的行为完全相同。
effort 是标准 reasoning_effort 参数的别名,在构建和调用时都适用。如果两者都设置,effort 会优先。
reasoning_effort 需要 langchain-anthropic>=1.5.3。
请参阅 Claude 文档,了解何时使用不同的努力程度级别以及受支持的模型。

任务预算

Claude Opus 4.7 及更高版本支持 任务预算,这是针对智能体循环(思考、工具调用、工具结果和最终输出)的建议性 Token 目标。模型会看到正在运行的倒计时,并利用它来优先处理工作并优雅地完成。与 max_tokens 不同,任务预算不是硬性上限。
任务预算需要 langchain-anthropic>=1.4.1,目前处于 Beta 测试阶段。

引用

Anthropic 支持一个 引用 功能,允许 Claude 根据用户提供的源文档将其上下文附加到答案中。 当 文档 或 search_result 内容块包含 "citations": {"enabled": True} 时,Claude 可能会在其响应中生成引用。

简单示例

在这个示例中,我们传递了一个 纯文本文档。在后台,Claude 自动分块 输入文本为句子,这些句子用于生成引用。

在工具结果中(智能体 RAG)

Claude 支持一个 搜索结果 内容块,表示对知识库或其他自定义源的查询的可引用结果。这些内容块可以以顶部行(如上述示例)和工具结果内的形式传递给 Claude。这允许 Claude 使用工具调用的结果来引用其响应的元素。 为了在工具调用响应中传递搜索结果,定义一个返回 search_result 内容块列表的工具,这些内容块以 Anthropic 的原生格式返回。例如:
这里我们展示了一个端到端的示例,其中我们将样本文档填充到 LangChain 向量存储 中,并给 Claude 配备了一个查询这些文档的工具。此工具接受一个搜索查询和一个 category 字符串字面量,但任何有效的工具签名都可以使用。此示例需要 langchain-openai 和 numpy 已安装:

与文本分割器一起使用

Anthropic 还允许您使用 自定义文档 类型指定自己的分割。LangChain 文本分割器 可以用于生成此目的的具有意义的分割。参见以下示例,其中我们分割了 LangChain README.md(一个 markdown 文档),并将其作为上下文传递给 Claude: 此示例需要 @[langchain-text-splitters] 已安装:

提示词缓存

Anthropic 支持 缓存 您的提示词中的元素,包括消息、工具定义、工具结果、图像和文档。这允许您重用大型文档、指令、少量样本文档 和其他数据,以减少延迟和成本。 在直接模型调用中启用提示词缓存有两种方法:
  • 自动缓存:在调用时传递 cache_control(model.invoke(..., cache_control=...))。这是提供者/API 级别的缓存:Anthropic API 将缓存断点应用于最后一个可缓存块,并在对话增长时将其向前移动。
  • 显式缓存断点:将 cache_control 直接放置在单个内容块上,以实现对缓存内容进行细粒度、直接断点控制。
仅某些 Claude 模型支持提示词缓存。有关详细信息,请参阅 Claude 文档。
对于 LangChain 智能体,如果您希望 LangChain 优化稳定的系统提示词和工具内容,请优先使用 AnthropicPromptCachingMiddleware。中间件是 LangChain 智能体/容器的优化,与下面显示的调用级 cache_control 不同,后者镜像 Anthropic API 的行为。

自动缓存

自动缓存需要 langchain-anthropic>=1.4.0。
将 cache_control 作为调用参数传递,可自动缓存所有内容,包括最后一个可缓存块。对于具有相同前缀的后续请求,将自动重用缓存内容。随着对话的增长,缓存断点会向前移动,因此无需管理单个 cache_control 标记。
对于1小时缓存,指定 ttl 字段:

显式缓存断点

为了实现细粒度控制,请用 cache_control 标记单个内容块。当您需要缓存以不同频率变化的多个部分时,这很有用。

消息

1小时缓存缓存有效期默认为5分钟。若需更长的缓存,请在 cache_control 字段中指定 "ttl": "1h"。1小时缓存写入费用是基础输入 Token 价格的2倍(5分钟缓存为1.25倍)。
缓存 Token 数量的详细信息将包含在响应的 @[InputTokenDetails] 的 @[usage_metadata][UsageMetadata] 中:

缓存工具

对话应用中的增量缓存

提示词缓存可用于 多轮对话 以维持早期消息的上下文,而无需冗余处理。 我们可以通过用 cache_control 标记最终消息来启用增量缓存。Claude 将自动为后续消息使用之前缓存的最长前缀。 下面,我们实现了一个包含此功能的简单聊天机器人。我们遵循 LangChain 的 聊天机器人教程,但添加了一个自定义的 reducer,该 reducer 会自动将每个用户消息中的最后一个内容块标记为 cache_control:
在 LangSmith 跟踪 中,切换 “原始输出” 将显示发送给对话模型的精确消息,包括 cache_control 键。

Token 计数

在将消息发送到模型之前,您可以使用 @[get_num_tokens_from_messages()][ChatAnthropic.get_num_tokens_from_messages] 对消息中的 Token 进行计数。这使用了 Anthropic 官方的 Token 计数 API。
您也可以在使用工具时进行 Token 计数:

对话中系统消息

对话中系统消息需要 langchain-anthropic>=1.7.3。
支持的 Claude 模型接受 对话中系统消息。其指令从该点开始生效。添加一条消息不会改变之前的回合,因此不会使 提示词缓存失效。 一个以 @[SystemMessage] 开头的消息始终放在顶层 system 字段中。ChatAnthropic 在满足以下两个条件时,会在对话中自己的位置发送一个稍后的 SystemMessage:
  • 模型支持对话中系统消息。Claude 文档列出了哪些模型支持。
  • 消息紧随人类或工具消息之后,且是最后一条消息或后跟 AI 消息。
否则,ChatAnthropic 将消息移入顶层 system 字段并附带警告,该消息适用于整个对话。如果顶层系统消息已填满该字段,ChatAnthropic 会引发 ValueError。
有关措辞指导和完善的放置规则,请参阅 Claude 文档。

对话中更改工具

对话中工具更改需要 langchain-anthropic>=1.7.4。
对话中 SystemMessage 还可以添加或删除 Anthropic 的 tool_addition 和 tool_removal 内容块。编辑请求中的 tools 会使整个对话的提示词缓存失效。这些块不会改变 tools,因此缓存的 prefix 仍然匹配。 上述 放置和模型规则 适用。当 ChatAnthropic 无法在适当位置发送消息时,它会带有警告地丢弃工具更改块。 ChatAnthropic 添加了所需的 beta 头部,因此您无需设置 betas。 要在对话中途添加工具,使用 extras={"defer_loading": True} 绑定它,以便 Claude 最初看不到它。然后在 tool_addition 块中按名称引用它:
API 会拒绝所有工具都被延迟的请求,因此至少绑定一个未使用 defer_loading 的工具。 要撤回工具,在 tool_removal 块中引用它。稍后的 tool_addition 可以再次提供它。
要添加您最初未绑定的工具,使用 tool_definition 内联定义。内联定义处于 beta 版本,仅在 Claude API 上可用。
您也可以将这些块包裹在 non_standard 块中,这就是 content_blocks 返回它们的方式。ChatAnthropic 对这两种形式发送相同的请求。

上下文管理

Anthropic 支持上下文管理功能,可自动管理模型的上下文窗口以优化性能和成本。 请参阅 Claude 文档 了解更多详细信息和配置选项。

清除工具使用

将工具结果从上下文中清除以减少 Token 使用,同时保留对话流程。
上下文管理自 langchain-anthropic>=0.3.21 起得到支持您必须指定 context-management-2025-06-27 beta 标头才能将上下文管理应用于您的模型调用。

自动压缩

Claude Opus 4.6 及更高版本支持自动 服务器端压缩,当上下文窗口接近其限制时,会智能地压缩对话历史。这允许更长的对话而无需手动上下文管理。
自动压缩要求:
  • Claude Opus 4.6 或更高版本
  • langchain-anthropic>=1.3.0
  • compact-2026-01-12 beta 标头
请参阅 Anthropic 的文档了解 触发配置 的详细信息。 当触发压缩事件时,ChatAnthropic 将返回 压缩块,表示提示的状态。这些应在多轮应用程序中将消息历史传递回模型时保留。

结构化输出

结构化输出需要 langchain-anthropic>=1.1.0。请参阅 Claude 文档以了解支持的模型。
Anthropic 支持一种原生的 结构化输出功能,该功能保证其响应符合给定的模式。 您可以在单独的模型调用中访问此功能,或通过指定 LangChain 智能体的 响应格式来使用此功能。以下是一些示例。
使用 with_structured_output 方法生成结构化模型响应。指定 method="json_schema" 以启用 Anthropic 的原生结构化输出功能;否则,该方法默认使用函数调用。
使用 ProviderStrategy 指定 response_format 以在生成最终响应时启用 Anthropic 的结构化输出功能。

内置工具

Anthropic 支持多种内置的客户端和服务器端 工具。 服务器端工具(例如 web search)会被传递给模型并由 Anthropic 执行。客户端工具(例如 bash tool)需要您在应用程序中实现回调执行逻辑,并将结果返回给模型。 无论哪种情况,您都可以通过在模型实例上使用 @[bind_tools][ChatAnthropic.bind_tools] 来使您的聊天模型访问工具。 重要的是,客户端工具需要您实现执行逻辑。请参考下文的相关章节获取示例。
中间件与工具对于客户端工具(例如 bash、text editor、memory),您可以选择使用 middleware,它们提供生产就绪的实现,包含内置的执行、状态管理和安全策略。当您需要一个即插即用的解决方案时,请使用中间件;当您需要自定义执行逻辑或直接使用 @[bind_tools][ChatAnthropic.bind_tools] 时,请使用工具(下文有详细说明)。
Beta 工具如果将 Beta 工具绑定到您的聊天模型,LangChain 将会自动为您添加所需的 Beta 头部信息。

Bash 工具

Claude 支持一个客户端的 bash 工具,允许它在持久的 bash 会话中执行 shell 命令。这使其能够进行系统操作、脚本执行和命令行自动化。
重要提示:你必须提供执行环境LangChain 处理 API 集成(发送/接收工具调用),但 你负责:
  • 设置沙盒化的计算环境(Docker、VM 等)
  • 实现命令执行和输出捕获
  • 在智能体循环中将结果传回 Claude
请参阅 Claude bash 工具文档 获取实现指南。
要求:
  • Claude 4 模型或 Claude Sonnet 3.7
The bash 工具支持两个参数:
  • command(必需):要执行的 bash 命令
  • restart(可选):设置为 true 以重启 bash 会话
对于 “开箱即用” 的实现,可以考虑使用 ClaudeBashToolMiddleware,它提供持久会话、Docker 隔离、输出脱敏以及开/关命令。

代码执行

Claude 可以使用服务器端的 代码执行工具 在沙盒环境中执行代码。
自 langchain-anthropic>=1.0.3 起支持 Anthropic 的 2025-08-25 代码执行工具。自 langchain-anthropic>=0.3.14 起支持旧版 2025-05-22 工具。
代码沙盒没有互联网访问权限,因此您只能使用环境中预安装的包。有关更多信息,请参阅 Claude 文档。
使用 Files API,Claude 可以编写代码以访问文件进行数据分析和其他用途。示例如下:
注意,Claude 可能会在代码执行过程中生成文件。您可以使用 Files API 访问这些文件:
可用工具版本:
  • code_execution_20250522 (旧版)
  • code_execution_20250825 (推荐)

计算机使用

Claude 支持客户端 计算机使用 功能,允许它通过截图、鼠标控制和键盘输入与桌面环境交互。
重要提示:您必须提供执行环境LangChain 处理 API 集成(发送/接收工具调用),但 您负责:
  • 设置沙盒化计算环境(Linux 虚拟机、Docker 容器等)
  • 实现虚拟显示(例如,Xvfb)
  • 执行 Claude 的工具调用(截图、鼠标点击、键盘输入)
  • 在智能体循环中将结果传递回 Claude
Anthropic 提供了一个 参考实现 帮助您入门。
要求:
  • Claude Opus 4.5、Claude 4 或 Claude Sonnet 3.7
可用工具版本:
  • computer_20250124(适用于 Claude 4 和 Claude Sonnet 3.7)
  • computer_20251124(适用于 Claude Opus 4.5)

远程 MCP

Claude 可以使用服务器端的 MCP 连接器工具来处理模型生成的远程 MCP 服务器调用。
远程 MCP 自 langchain-anthropic>=0.3.14 起得到支持

文本编辑器

Claude 支持一个客户端文本编辑器工具,可用于查看和修改本地文本文件。详情请参阅 文本编辑器工具文档。
可用工具版本:
  • text_editor_20250124 (遗留版)
  • text_editor_20250728 (推荐版)
若要实现 “开箱即用” 的方案,建议使用 StateClaudeTextEditorMiddleware 或 FilesystemClaudeTextEditorMiddleware,它们提供 LangGraph 状态集成、文件系统持久化、路径验证及其他功能。

网络抓取

Claude 可以使用服务器端的 网络抓取工具 从指定的网页和 PDF 文档中检索完整内容,并以其响应为引用进行支撑。

网络搜索

Claude 可以使用服务器端的 网络搜索工具 来执行搜索,并为其响应提供引用依据。
网络搜索工具自 langchain-anthropic>=0.3.13 起得到支持

记忆工具

Claude 支持一个记忆工具,用于在对话线程之间进行客户端存储和检索上下文。详情请参阅 记忆工具文档。
Anthropic 的内置记忆工具自 langchain-anthropic>=0.3.21 起得到支持
若要实现 “开箱即用” 的方案,建议使用 StateClaudeMemoryMiddleware 或 FilesystemClaudeMemoryMiddleware,它们提供 LangGraph 状态集成或文件系统持久化、自动系统提示词注入及其他功能。

工具搜索

Claude 支持服务器端的 工具搜索 功能,能够实现动态工具发现和加载。Claude 不需要将所有工具定义提前加载到上下文窗口中,而是可以搜索您的工具目录并仅加载所需的工具。 这在以下情况下很有用:
  • 您的系统中有 10+ 个工具
  • 工具定义消耗了大量的 Token
  • 您在使用大型工具集时遇到工具选择准确性问题
有两种工具搜索变体:
  • 正则表达式 (tool_search_tool_regex_20251119):Claude 构建正则表达式来搜索工具
  • BM25 (tool_search_tool_bm25_20251119):Claude 使用自然语言查询来搜索工具
使用 extras 参数来指定 defer_loading 在 LangChain 工具上:
要点:
  • 只有当 Claude 通过搜索发现时,defer_loading: True 标记的工具才会被加载
  • 将您 3-5 个最常用的工具作为非延迟加载,以获得最佳性能
  • 两种变体都会搜索工具名称、描述、参数名称和参数描述
有关工具搜索的更多详细信息,包括与 MCP 服务器和客户端实现的配合使用,请参阅 Claude 文档。 如果您想提供延迟加载的工具而不是通过搜索,请 在对话中更改工具。

响应元数据

Token 使用元数据

默认情况下,在流式输出时将包含包含 Token 使用信息的消息片段:
可以通过在流式方法中设置 stream_usage=False 或在初始化 ChatAnthropic 时禁用这些功能。

API 参考

有关所有功能和配置选项的详细文档,请访问 @[ChatAnthropic] API 参考。
官方原文:src/oss/python/integrations/chat/anthropic.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026