Anthropic 的 Claude 模型也可通过 Amazon Bedrock Converse 获得。
Spring AI 还提供专用的 Amazon Bedrock Converse Anthropic 客户端实现。
前提条件
你需要在 Anthropic 门户上创建一个 API 密钥。 在 Anthropic API 仪表板创建一个帐户,并在获取 API 密钥页面生成 API 密钥。 Spring AI 项目定义了一个名为spring.ai.anthropic.api-key
的配置属性,你应该将其设置为从 anthropic.com 获取的 API 密钥
的值。
你可以在 application.properties
文件中设置此配置属性:
添加仓库和 BOM
Spring AI 的构件发布在 Maven Central 和 Spring Snapshot 仓库中。 请参阅构件仓库部分,将这些仓库添加到你的构建系统中。 为了帮助进行依赖管理,Spring AI 提供了一个 BOM (bill of materials),以确保在整个项目中使用一致版本的 Spring AI。请参阅依赖管理部分,将 Spring AI BOM 添加到你的构建系统中。自动配置
Spring AI 自动配置、启动器模块的构件名称发生了重大变化。
有关更多信息,请参阅升级说明。
pom.xml
或 Gradle build.gradle
文件中:
请参阅依赖管理部分,将 Spring AI BOM 添加到你的构建文件中。
聊天属性
重试属性
前缀spring.ai.retry
用作属性前缀,允许你配置 Anthropic 聊天模型的重试机制。
属性 | 描述 | 默认值 |
---|---|---|
spring.ai.retry.max-attempts | 最大重试次数。 | 10 |
spring.ai.retry.backoff.initial-interval | 指数退避策略的初始休眠持续时间。 | 2 秒 |
spring.ai.retry.backoff.multiplier | 退避间隔乘数。 | 5 |
spring.ai.retry.backoff.max-interval | 最大退避持续时间。 | 3 分钟 |
spring.ai.retry.on-client-errors | 如果为 false,则抛出 NonTransientAiException,并且不尝试对 4xx 客户端错误代码进行重试 | false |
spring.ai.retry.exclude-on-http-codes | 不应触发重试的 HTTP 状态代码列表(例如,抛出 NonTransientAiException)。 | 空 |
spring.ai.retry.on-http-codes | 应触发重试的 HTTP 状态代码列表(例如,抛出 TransientAiException)。 | 空 |
目前,重试策略不适用于流式 API。
连接属性
前缀spring.ai.anthropic
用作属性前缀,允许你连接到 Anthropic。
属性 | 描述 | 默认值 |
---|---|---|
spring.ai.anthropic.base-url | 要连接的 URL | https://api.anthropic.com |
spring.ai.anthropic.completions-path | 要附加到基本 URL 的路径。 | /v1/chat/completions |
spring.ai.anthropic.version | Anthropic API 版本 | 2023-06-01 |
spring.ai.anthropic.api-key | API 密钥 | - |
spring.ai.anthropic.beta-version | 启用新的/实验性功能。如果设置为 max-tokens-3-5-sonnet-2024-07-15 \n输出令牌限制从 4096 增加到 8192 个令牌(仅适用于 claude-3-5-sonnet)。 | tools-2024-04-04 |
配置属性
聊天自动配置的启用和禁用现在通过前缀为
spring.ai.model.chat
的顶级属性进行配置。要启用,spring.ai.model.chat=anthropic
(默认启用)要禁用,spring.ai.model.chat=none
(或任何与 anthropic 不匹配的值)此更改是为了允许配置多个模型。spring.ai.anthropic.chat
是属性前缀,允许你配置 Anthropic 的聊天模型实现。
属性 | 描述 | 默认值 |
---|---|---|
spring.ai.anthropic.chat.enabled (已移除) | 启用 Anthropic 聊天模型。 | true |
spring.ai.model.chat | 启用 Anthropic 聊天模型。 | anthropic |
spring.ai.anthropic.chat.options.model | 这是要使用的 Anthropic 聊天模型。支持:claude-3-7-sonnet-latest 、claude-3-5-sonnet-latest 、claude-3-opus-20240229 、claude-3-sonnet-20240229 、claude-3-haiku-20240307 | claude-3-7-sonnet-latest |
spring.ai.anthropic.chat.options.temperature | 用于控制生成补全的明显创造性的采样温度。较高的值会使输出更随机,而较低的值会使结果更集中和确定。不建议为同一补全请求修改温度和 top_p,因为这两个设置的相互作用很难预测。 | 0.8 |
spring.ai.anthropic.chat.options.max-tokens | 在聊天补全中生成的最大标记数。输入标记和生成标记的总长度受模型上下文长度的限制。 | 500 |
spring.ai.anthropic.chat.options.stop-sequence | 模型将停止生成的自定义文本序列。我们的模型通常会在自然完成其回合时停止,这将导致响应 stop_reason 为”end_turn”。如果你希望模型在遇到自定义文本字符串时停止生成,则可以使用 stop_sequences 参数。如果模型遇到自定义序列之一,则响应 stop_reason 值将为”stop_sequence”,响应 stop_sequence 值将包含匹配的停止序列。 | - |
spring.ai.anthropic.chat.options.top-p | 使用核采样。在核采样中,我们计算后续每个标记的所有选项的累积分布(按概率降序排列),并在达到 top_p 指定的特定概率时将其截断。你应该更改温度或 top_p,但不能同时更改两者。建议仅用于高级用例。通常只需要使用温度。 | - |
spring.ai.anthropic.chat.options.top-k | 仅从后续每个标记的前 K 个选项中采样。用于删除”长尾”低概率响应。在此处了解更多技术细节。建议仅用于高级用例。通常只需要使用温度。 | - |
spring.ai.anthropic.chat.options.toolNames | 在单个提示请求中启用工具调用的工具列表(按其名称标识)。具有这些名称的工具必须存在于 toolCallbacks 注册表中。 | - |
spring.ai.anthropic.chat.options.toolCallbacks | 要注册到 ChatModel 的工具回调。 | - |
spring.ai.anthropic.chat.options.internal-tool-execution-enabled | 如果为 false,Spring AI 将不会在内部处理工具调用,而是将它们代理到客户端。然后由客户端负责处理工具调用,将它们分派到适当的函数,并返回结果。如果为 true(默认值),Spring AI 将在内部处理函数调用。仅适用于具有函数调用支持的聊天模型 | true |
(已弃用) spring.ai.anthropic.chat.options.functions | 在单个提示请求中启用函数调用的函数列表(按其名称标识)。具有这些名称的函数必须存在于 functionCallbacks 注册表中。 | - |
(已弃用) spring.ai.anthropic.chat.options.functionCallbacks | 要注册到 ChatModel 的工具函数回调。 | - |
(已弃用) spring.ai.anthropic.chat.options.proxy-tool-calls | 如果为 true,Spring AI 将不会在内部处理函数调用,而是将它们代理到客户端。然后由客户端负责处理函数调用,将它们分派到适当的函数,并返回结果。如果为 false(默认值),Spring AI 将在内部处理函数调用。仅适用于具有函数调用支持的聊天模型 | false |
spring.ai.anthropic.chat.options.http-headers | 要添加到聊天补全请求的可选 HTTP 标头。 | - |
所有以
spring.ai.anthropic.chat.options
为前缀的属性都可以在运行时通过向 Prompt
调用添加特定于请求的运行时选项来覆盖。运行时选项
AnthropicChatOptions.java 提供模型配置,例如要使用的模型、温度、最大令牌数等。 在启动时,可以使用AnthropicChatModel(api, options)
构造函数或 spring.ai.anthropic.chat.options.*
属性配置默认选项。
在运行时,你可以通过向 Prompt
调用添加新的、特定于请求的选项来覆盖默认选项。
例如,要为特定请求覆盖默认模型和温度:
除了特定于模型的 AnthropicChatOptions之外,你还可以使用通过 ChatOptionsBuilder#builder() 创建的可移植 ChatOptions 实例。
工具/函数调用
你可以使用AnthropicChatModel
注册自定义 Java 工具,并让 Anthropic Claude 模型智能地选择输出一个 JSON 对象,其中包含调用一个或多个已注册函数的参数。
这是将 LLM 功能与外部工具和 API 连接起来的强大技术。
阅读有关工具调用的更多信息。
多模态
多模态是指模型同时理解和处理来自各种来源的信息的能力,包括文本、pdf、图像、数据格式。图像
目前,Anthropic Claude 3 支持base64
源类型的 图像
,以及 image/jpeg
、image/png
、image/gif
和 image/webp
媒体类型。
有关更多信息,请查看视觉指南。
Anthropic Claude 3.5 Sonnet 还支持 application/pdf
文件的 pdf
源类型。
Spring AI 的 Message
接口通过引入 Media 类型来支持多模态 AI 模型。
此类型包含有关消息中媒体附件的数据和信息,使用 Spring 的 org.springframework.util.MimeType
和 java.lang.Object
来获取原始媒体数据。
以下是从 AnthropicChatModelIT.java 中提取的简单代码示例,演示了用户文本与图像的组合。
multimodal.test.png
图像作为输入:

多模态测试图像
application/pdf
媒体类型将 PDF 文件附加到消息:
示例控制器
创建一个新的 Spring Boot 项目,并将spring-ai-starter-model-anthropic
添加到你的 pom (或 gradle) 依赖项中。
在 src/main/resources
目录下添加一个 application.properties
文件,以启用和配置 Anthropic 聊天模型:
将
api-key
替换为你的 Anthropic 凭据。AnthropicChatModel
实现,你可以将其注入到你的类中。
以下是一个简单的 @Controller
类的示例,该类使用聊天模型进行文本生成。
手动配置
AnthropicChatModel 实现了ChatModel
和 StreamingChatModel
,并使用低级 AnthropicApi 客户端连接到 Anthropic 服务。
将 spring-ai-anthropic
依赖项添加到项目的 Maven pom.xml
文件中:
build.gradle
构建文件中。
请参阅依赖管理部分,将 Spring AI BOM 添加到你的构建文件中。
AnthropicChatModel
并将其用于文本生成:
AnthropicChatOptions
为聊天请求提供配置信息。
AnthropicChatOptions.Builder
是流畅的选项构建器。
低级 AnthropicApi 客户端
AnthropicApi 提供了轻量级的 Java 客户端,用于 Anthropic 消息 API。 以下类图说明了AnthropicApi
聊天接口和构建块:

AnthropicApi 聊天 API 图

AnthropicApi 事件模型
低级 API 示例
- AnthropicApiIT.java 测试提供了一些有关如何使用轻量级库的常规示例。
文档有误?请协助编辑
发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!