Skip to main content
您可以在 Claude 文档中找到有关 Anthropic 最新模型、其成本、上下文窗口和支持的输入类型的信息。
API 参考有关所有功能和配置选项的详细文档,请访问 ChatAnthropic API 参考。
AWS Bedrock 和 Google VertexAI请注意,某些 Anthropic 模型也可以通过 AWS Bedrock 和 Google VertexAI 访问。请参阅 ChatBedrockChatVertexAI 集成,以通过这些服务使用 Anthropic 模型。对于在 AWS Bedrock 上使用与 ChatAnthropic 相同 API 的 Anthropic 模型,请使用 langchain-aws 中的 ChatAnthropicBedrock

概述

集成详情

模型特性

设置

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

安装

凭证

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

实例化

现在我们可以实例化模型对象并生成聊天补全:
有关所有可用实例化参数的详细信息,请参阅 ChatAnthropic API 参考。
推理地理位置要控制模型推理运行的位置以实现数据驻留,请在创建 ChatAnthropic 时传递 inference_geo。有关支持的值,请参阅 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 时指定 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 的代码执行环境调用,从而减少涉及大数据处理或多工具工作流的上下文中的延迟和令牌消耗。 有关详细信息,请参阅 Claude 的编程式工具调用指南。要使用此功能:
  • 在您的工具集中包含代码执行内置工具
  • 在您希望编程式调用的工具上指定 extras={"allowed_callers": ["code_execution_20250825"]}
有关使用 create_agent 的完整示例,请参见下文。
您可以在初始化时指定 reuse_last_container 以自动重用先前模型响应的代码执行容器。

多模态

Claude 支持图像和 PDF 输入作为内容块,既支持 Anthropic 的原生格式(参见 视觉PDF 支持 文档),也支持 LangChain 的标准格式

支持的输入方法

文件 API 也可用于将文件上传到容器,以供 Claude 的内置代码执行工具使用。有关详细信息,请参阅代码执行部分。

图像输入

使用具有列表内容格式的 HumanMessage 提供图像输入和文本。

PDF 输入

提供 PDF 文件输入和文本。

扩展思考

某些 Claude 模型支持扩展思考功能,该功能将输出导致其最终答案的逐步推理过程。 有关兼容模型,请参阅 Claude 文档 要使用扩展思考,请在初始化 ChatAnthropic 时指定 thinking 参数。如果需要,也可以在调用时作为参数传递。 对于 Claude Sonnet 及更早的模型,您需要指定令牌预算。对于 Claude Opus 4.6+,您可以使用自适应思考,它会自动确定预算。
Claude Messages API 在 Claude Sonnet 3.7 和 Claude 4 模型之间对思考的处理方式不同。有关更多信息,请参阅 Claude 文档

努力程度

某些 Claude 模型支持努力程度功能,该功能控制 Claude 响应时使用多少令牌。这对于平衡响应质量与延迟和成本非常有用。
模型支持努力程度在 Claude Opus 4.6 和 Claude Opus 4.5 上普遍可用。max 努力程度仅在 Claude Opus 4.6 上受支持。xhigh 努力程度在 Claude Opus 4.7 上受支持。Anthropic 可能会随时间增加或调整模型支持——请使用 Claude 努力程度文档作为权威来源。
effort 设置为 "high" 产生的行为与完全省略该参数完全相同。
有关何时使用不同努力程度以及查看支持模型的详细信息,请参阅 Claude 文档

任务预算

Claude Opus 4.7 支持任务预算,这是智能体循环(思考、工具调用、工具结果和最终输出)的建议令牌目标。模型会看到一个运行中的倒计时,并使用它来优先处理工作并优雅地完成。与 max_tokens 不同,任务预算不是硬性上限。
任务预算需要 langchain-anthropic>=1.4.1,目前处于 beta 阶段。

引用

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

简单示例

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

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

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

与文本分割器一起使用

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

提示缓存

Anthropic 支持对提示中的元素进行缓存,包括消息、工具定义、工具结果、图像和文档。这允许您重用大型文档、指令、少样本文档和其他数据,以减少延迟和成本。 有两种启用提示缓存的方法:
  • 自动缓存:在调用时传递 cache_control。系统自动将缓存断点应用于最后一个可缓存块,并在对话增长时向前移动。最适合多轮对话。
  • 显式缓存断点:直接在单个内容块上放置 cache_control,以精确控制缓存的内容。
只有某些 Claude 模型支持提示缓存。有关详细信息,请参阅 Claude 文档

自动缓存

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

显式缓存断点

要进行细粒度控制,请使用 cache_control 标记单个内容块。当您需要缓存以不同频率更改的不同部分时,这非常有用。

消息

1 小时缓存缓存生命周期默认为 5 分钟。要进行更长时间的缓存,请在 cache_control 字段中指定 "ttl": "1h"。1 小时缓存写入的成本是基础输入令牌价格的 2 倍(而 5 分钟缓存是 1.25 倍)。
缓存令牌计数的详细信息将包含在响应的 usage_metadataInputTokenDetails 中:

缓存工具

对话应用程序中的增量缓存

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

令牌计数

您可以在将消息发送给模型之前使用 get_num_tokens_from_messages() 计算消息中的令牌数。这使用 Anthropic 的官方令牌计数 API
使用工具时也可以计算令牌:

上下文管理

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

清除工具使用

从上下文中清除工具结果以减少令牌使用,同时保留对话流程。
上下文管理自 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 使工具可被聊天模型访问。 重要的是,客户端工具需要您实现执行逻辑。有关示例,请参阅下面的相关部分。
中间件与工具对于客户端工具(例如 bashtext editormemory),您可以选择使用中间件,它们提供生产就绪的实现,包含内置执行、状态管理和安全策略。当您想要一个开箱即用的解决方案时使用中间件;当您需要自定义执行逻辑或想要直接使用 bind_tools 时使用下面记录的工具。
Beta 工具如果将 beta 工具绑定到您的聊天模型,LangChain 将自动为您添加所需的 beta 头。

Bash 工具

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

代码执行

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

计算机使用

Claude 支持客户端计算机使用功能,允许它通过屏幕截图、鼠标控制和键盘输入与桌面环境交互。
重要:您必须提供执行环境LangChain 处理 API 集成(发送/接收工具调用),但您负责
  • 设置沙盒计算环境(Linux VM、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(推荐)
要获得“开箱即用”的实现,请考虑使用 StateClaudeTextEditorMiddlewareFilesystemClaudeTextEditorMiddleware,它们提供 LangGraph 状态集成或文件系统持久化、路径验证和其他功能。

网页抓取

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

网页搜索

Claude 可以使用服务器端网页搜索工具运行搜索并通过引用来支持其响应。
网页搜索工具自 langchain-anthropic>=0.3.13 起受支持

记忆工具

Claude 支持用于跨对话线程进行客户端上下文存储和检索的记忆工具。有关详细信息,请参阅记忆工具文档
Anthropic 的内置记忆工具自 langchain-anthropic>=0.3.21 起受支持
要获得“开箱即用”的实现,请考虑使用 StateClaudeMemoryMiddlewareFilesystemClaudeMemoryMiddleware,它们提供 LangGraph 状态集成或文件系统持久化、自动系统提示注入和其他功能。

工具搜索

Claude 支持服务器端工具搜索功能,支持动态工具发现和加载。Claude 不是将所有工具定义预先加载到上下文窗口中,而是可以搜索您的工具目录并仅加载其需要的工具。 这在以下情况下很有用:
  • 您的系统中有 10 多个可用工具
  • 工具定义消耗大量令牌
  • 您在大型工具集中遇到工具选择准确性问题
有两种工具搜索变体:
  • 正则表达式 (tool_search_tool_regex_20251119):Claude 构造正则表达式模式来搜索工具
  • BM25 (tool_search_tool_bm25_20251119):Claude 使用自然语言查询来搜索工具
使用 extras 参数在 LangChain 工具上指定 defer_loading
关键点:
  • 设置了 defer_loading: True 的工具仅在 Claude 通过搜索发现它们时才加载
  • 将您最常用的 3-5 个工具保持为非延迟加载以获得最佳性能
  • 两种变体都搜索工具名称、描述、参数名称和参数描述
有关工具搜索的更多详细信息,包括与 MCP 服务器和客户端实现一起使用,请参阅 Claude 文档

响应元数据

令牌使用量元数据

默认情况下,包含令牌使用量的消息块将在流式传输期间包含:
可以通过在流方法中设置 stream_usage=False 或在初始化 ChatAnthropic 时禁用这些。

API 参考

有关所有功能和配置选项的详细文档,请访问 ChatAnthropic API 参考。