Bedrock Converse API
Amazon Bedrock Converse API 为对话式 AI 模型提供统一接口,具有增强功能,包括函数/工具调用、多模态输入和流式响应。
Bedrock Converse API 具有以下高级功能:
工具/函数调用
支持对话期间的函数定义和工具使用
多模态输入
能够在对话中处理文本和图像输入
流式支持
模型响应的实时流式传输
系统消息
支持系统级指令和上下文设置
Bedrock Converse API 在多个模型提供商之间提供统一接口,同时处理特定于 AWS 的身份验证和基础设施问题。
目前,Converse API 支持的模型包括:
Amazon Titan
、Amazon Nova
、AI21 Labs
、Anthropic Claude
、Cohere Command
、Meta Llama
、Mistral AI
。
根据 Bedrock 的建议,Spring AI 正在过渡到使用 Amazon Bedrock 的 Converse API 来实现 Spring AI 中的所有聊天对话。 虽然现有的 InvokeModel API 支持对话应用程序,但我们强烈建议为所有聊天对话模型采用 Converse API。
Converse API 不支持嵌入操作,因此这些操作将保留在当前 API 中,并且现有 InvokeModel API
中的嵌入模型功能将得到维护。
前提条件
有关设置 API 访问权限,请参阅Amazon Bedrock 入门。
获取 AWS 凭证
如果你还没有 AWS 账户和配置好的 AWS CLI,此视频指南可以帮助你进行配置:不到 4 分钟完成 AWS CLI 和 SDK 设置!。你应该能够获取你的访问密钥和安全密钥。
启用要使用的模型
转到 Amazon Bedrock 并从左侧的模型访问菜单中,配置对要使用的模型的访问权限。
自动配置
Spring AI 自动配置、启动器模块的构件名称发生了重大变化。 有关更多信息,请参阅升级说明。
将 spring-ai-starter-model-bedrock-converse
依赖项添加到项目的 Maven pom.xml
或 Gradle build.gradle
构建文件中:
请参阅依赖管理部分,将 Spring AI BOM 添加到你的构建文件中。
聊天属性
前缀 spring.ai.bedrock.aws
是用于配置与 AWS Bedrock 连接的属性前缀。
属性 | 描述 | 默认值 |
---|---|---|
spring.ai.bedrock.aws.region | 要使用的 AWS 区域。 | us-east-1 |
spring.ai.bedrock.aws.timeout | 要使用的 AWS 超时。 | 5m |
spring.ai.bedrock.aws.access-key | AWS 访问密钥。 | - |
spring.ai.bedrock.aws.secret-key | AWS 秘密密钥。 | - |
spring.ai.bedrock.aws.session-token | 用于临时凭证的 AWS 会话令牌。 | - |
聊天自动配置的启用和禁用现在通过前缀为 spring.ai.model.chat
的顶级属性进行配置。
要启用,spring.ai.model.chat=bedrock-converse
(默认启用)
要禁用,spring.ai.model.chat=none
(或任何与 bedrock-converse 不匹配的值)
此更改是为了允许配置多个模型。
前缀 spring.ai.bedrock.converse.chat
是配置 Converse API 聊天模型实现的属性前缀。
属性 | 描述 | 默认值 |
---|---|---|
spring.ai.bedrock.converse.chat.enabled (已移除) | 启用 Bedrock Converse 聊天模型。 | true |
spring.ai.model.chat | 启用 Bedrock Converse 聊天模型。 | bedrock-converse |
spring.ai.bedrock.converse.chat.options.model | 要使用的模型 ID。你可以使用支持的模型和模型功能 | 无。从 AWS Bedrock 控制台选择你的 modelId。 |
spring.ai.bedrock.converse.chat.options.temperature | 控制输出的随机性。值范围为 [0.0,1.0] | 0.8 |
spring.ai.bedrock.converse.chat.options.top-p | 采样时要考虑的最大累积概率标记。 | AWS Bedrock 默认值 |
spring.ai.bedrock.converse.chat.options.top-k | 用于生成下一个标记的标记选项数。 | AWS Bedrock 默认值 |
spring.ai.bedrock.converse.chat.options.max-tokens | 生成响应中的最大标记数。 | 500 |
运行时选项
使用可移植的 ChatOptions
或 ToolCallingChatOptions
可移植构建器来创建模型配置,例如温度、最大令牌数、topP 等。
在启动时,可以使用 BedrockConverseProxyChatModel(api, options)
构造函数或 spring.ai.bedrock.converse.chat.options.*
属性配置默认选项。
在运行时,你可以通过向 Prompt
调用添加新的、特定于请求的选项来覆盖默认选项:
工具调用
Bedrock Converse API 支持工具调用功能,允许模型在对话期间使用工具。 以下是如何定义和使用基于 @Tool 的工具的示例:
你也可以使用 java.util.function bean 作为工具:
在工具文档中查找更多信息。
多模态
多模态是指模型同时理解和处理来自各种来源的信息的能力,包括文本、图像、视频、pdf、doc、html、md 和更多数据格式。
Bedrock Converse API 支持多模态输入,包括文本和图像输入,并且可以根据组合输入生成文本响应。
你需要一个支持多模态输入的模型,例如 Anthropic Claude 或 Amazon Nova 模型。
图像
对于支持视觉多模态的模型(例如 Amazon Nova、Anthropic Claude、Llama 3.2),Bedrock Converse API Amazon 允许你在有效负载中包含多个图像。这些模型可以分析传递的图像并回答问题、对图像进行分类,以及根据提供的说明对图像进行总结。
目前,Bedrock Converse 支持 image/jpeg
、image/png
、image/gif
和 image/webp
mime 类型的 base64
编码图像。
Spring AI 的 Message
接口通过引入 Media
类型来支持多模态 AI 模型。
它包含有关消息中媒体附件的数据和信息,使用 Spring 的 org.springframework.util.MimeType
和 java.lang.Object
来获取原始媒体数据。
以下是一个简单的代码示例,演示了用户文本与图像的组合。
它将 test.png
图像作为输入:
多模态测试图像
以及文本消息“解释一下你在这张图片上看到了什么?”,并生成如下响应:
视频
Amazon Nova 模型允许你在有效负载中包含单个视频,该视频可以以 base64 格式或通过 Amazon S3 URI 提供。
目前,Bedrock Nova 支持 video/x-matros
、video/quicktime
、video/mp4
、video/video/webm
、video/x-flv
、video/mpeg
、video/x-ms-wmv
和 image/3gpp
mime 类型的图像。
Spring AI 的 Message
接口通过引入 Media
类型来支持多模态 AI 模型。
它包含有关消息中媒体附件的数据和信息,使用 Spring 的 org.springframework.util.MimeType
和 java.lang.Object
来获取原始媒体数据。
以下是一个简单的代码示例,演示了用户文本与视频的组合。
它将 test.video.mp4
图像作为输入:
多模态测试视频
以及文本消息“解释一下你在这段视频中看到了什么?”,并生成如下响应:
文档
对于某些模型,Bedrock 允许你通过 Converse API 文档支持在有效负载中包含文档,这些文档可以以字节形式提供。 文档支持有两种不同的变体,如下所述:
文本文档类型
(txt、csv、html、md 等),重点是文本理解。这些用例包括基于文档的文本元素进行回答。
媒体文档类型
(pdf、docx、xlsx),重点是基于视觉的理解来回答问题。这些用例包括基于图表、图形等回答问题。
目前,Anthropic PDF 支持(测试版)和 Amazon Bedrock Nova 模型支持文档多模态。
以下是一个简单的代码示例,演示了用户文本与媒体文档的组合。
它将 spring-ai-reference-overview.pdf
文档作为输入:
多模态测试 PDF
以及文本消息“你是一位非常专业的文档摘要专家。请总结给定的文档。”,并生成如下响应:
示例控制器
创建一个新的 Spring Boot 项目,并将 spring-ai-starter-model-bedrock-converse
添加到你的依赖项中。
在 src/main/resources
下添加一个 application.properties
文件:
以下是使用聊天模型的示例控制器: