Anthropic 是一家专注于人工智能安全与研究的公司。他们是 Claude 的创造者。 本文将帮助您入门 ChatAnthropic 聊天模型。要了解所有 ChatAnthropic 功能和配置的详细文档,请访问 API 参考文档。

概述

集成详情

模型功能

请参阅下表表头中的链接,了解如何使用特定功能的指南。

设置

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

凭证

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

安装

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

实例化

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

调用

内容块

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

自定义请求头

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

提示词缓存

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

工具缓存

您还可以通过在工具定义中设置相同的 "cache_control": { "type": "ephemeral" } 来缓存工具。目前这要求您以 Anthropic 的原始工具格式 绑定工具。这是一个例子:
有关提示词缓存如何工作的更多信息,请参阅 Anthropic 文档。

自定义客户端

Anthropic 模型 可能托管在 Google Vertex 等云服务上,这些服务依赖于具有与主 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:

上下文管理

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

API 参考文档

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