Skip to main content
Anthropic 是一家专注于 AI 安全和研究的公司。他们是 Claude 的开发者。 这将帮助您开始使用 ChatAnthropic 对话模型。有关所有 ChatAnthropic 功能和配置的详细文档,请访问 API 参考。

概述

集成细节

模型功能

请参考下表标题中的链接,了解如何使用特定功能。

设置

您需要注册并获取一个 Anthropic API 密钥,并安装 @langchain/anthropic 集成包。

凭证

前往 Anthropic 网站 注册 Anthropic 并生成 API 密钥。完成后,设置 ANTHROPIC_API_KEY 环境变量:
如果您希望自动跟踪您的模型调用,也可以通过取消注释以下内容来设置您的 LangSmith API 密钥:

安装

LangChain ChatAnthropic 集成位于 @langchain/anthropic 包中:

实例化

现在我们可以实例化我们的模型对象并生成对话补全:

采样参数

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

调用

内容块

Anthropic 模型与大多数其他模型的一个关键区别在于,单个 Anthropic @[AIMessage] 的内容可以是单个字符串或 内容块列表。例如,当 Anthropic 模型 调用工具 时,工具调用是消息内容的一部分(同时也在标准化的 AIMessage.tool_calls 字段中暴露):

自定义请求头

您可以像这样在请求中传递自定义请求头:

提示词缓存

Anthropic 支持 缓存提示词的一部分,以降低需要长上下文的用例的成本。您可以缓存工具以及整个消息和单个块。 包含一个或多个块或工具定义且具有 "cache_control": { "type": "ephemeral" } 字段的初始请求将自动缓存该提示词部分。此初始缓存步骤将产生额外费用,但后续请求将以较低费率计费。缓存的有效期为 5 分钟,但每次命中缓存时都会刷新。要进行更长时间的缓存,请在 cache_control 字段中指定 "ttl": "1h"。 根据模型不同,存在可缓存提示词的最小长度。有关更多信息,请参阅 提示词缓存详情。 以下是一个缓存包含 LangChain 概念性文档 的系统消息部分的示例:
我们可以看到原始使用字段返回的 Anthropic 中有一个新的字段 cache_creation_input_tokens。 如果我们再次使用相同消息,我们可以看到长文本的输入 Token 是从缓存中读取的:

工具缓存

您也可以通过在工具定义中设置相同的 "cache_control": { "type": "ephemeral" } 来缓存工具。这目前需要您使用 Anthropic 的原始工具格式 绑定工具。以下是一个示例:
有关提示词缓存的工作原理,请参阅 Anthropic 的文档。

自定义客户端

Anthropic 模型 可能托管在 Gemini Enterprise Agent Platform 等云服务上,这些服务依赖于与主要 Anthropic 客户端具有相同接口的不同底层客户端。您可以通过提供一个 createClient 方法来访问这些服务,该方法返回一个初始化的 Anthropic 客户端实例。以下是一个示例:

引证

Anthropic 支持一个 引证 功能,允许 Claude 根据用户提供的内容材料将其答案与上下文关联起来。这些内容材料可以提供为 文档内容块,用于描述完整文档,或作为 搜索结果,用于描述检索系统返回的相关段落或片段。当 "citations": { "enabled": true } 包含在查询中时,Claude 可能会在其响应中生成对提供材料的直接引证。

文档示例

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

搜索结果示例

在此示例中,我们将 搜索结果 作为消息内容的一部分传递。这允许 Claude 在其响应中引用您自己的检索系统中的特定段落或片段。 当您希望 Claude 引用特定知识集的信息,但您希望直接提供预先获取/缓存的 内容而不是让模型自动搜索或检索它们时,这种方法很有帮助。

来自工具的搜索结果

您也可以使用工具来提供模型可以在其响应中引用的搜索结果。这对于 RAG(或 检索增强生成)工作流程非常适用,其中 Claude 可以决定何时以及从何处检索信息。当以 搜索结果 的形式返回这些信息时,它赋予 Claude 从工具返回的材料中创建引用的能力。 以下是创建工具以返回 Anthropic 引用 API 所期望格式的搜索结果的步骤:
了解更多关于 LangChain 中的 RAG 如何工作 了解更多关于工具调用

与文本分割器一起使用

Anthropic 还允许您使用 自定义文档 类型指定自己的分割。LangChain 文本分割器可用于为此目的生成有意义的分割。以下示例展示了我们如何分割 LangChain.js README(一个 markdown 文档)并将其作为上下文传递给 Claude:

会话中期的系统消息

会话中期的系统消息需要 @langchain/anthropic>=1.5.11。
受支持的 Claude 模型接受一个 会话中期的系统消息。其指令从该点开始生效。添加一个系统消息不会更改之前的回合,因此它不会使 提示词缓存 对它们失效。 ChatAnthropic 在顶层 system 字段中发送开头的系统消息,而每个后续的 @[SystemMessage] 都会以其在会话中的位置发送。一个后续的 SystemMessage 必须跟在人类或工具消息之后,并且必须是最后一个消息或后面跟着一个 AI 消息。 并非所有 Claude 模型都支持会话中期的系统消息。Claude 文档 列出了哪些模型支持。ChatAnthropic 不会检查模型或消息的位置,因此当其中任何一个无效时,API 会返回 400 错误。
有关措辞指导和支持放置规则的完整说明,请参阅 Claude 文档。

会话中期更改工具

会话中期的工具更改需要 @langchain/anthropic>=1.5.12。
会话中期的 SystemMessage 还可以使用 Anthropic 的 tool_addition 和 tool_removal 内容块添加或删除工具。编辑请求中的 tools 会使整个会话的提示词缓存失效。这些块不会更改 tools,因此缓存的前缀仍然匹配。 上述 放置和模型规则 适用。 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 或 contentBlocks 中。ChatAnthropic 对这两种形式发送相同的请求。

上下文管理

Anthropic 支持上下文编辑功能,将自动管理模型的上下文窗口(例如,通过清除工具结果)。 有关详细信息和配置选项,请参阅 Anthropic 文档。
上下文管理自 @langchain/anthropic@0.3.29 起得到支持

API 参考

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