Spring AI 集成 Amazon Bedrock Converse API 技术博客
随着生成式 AI 应用的爆发,企业亟需安全、可扩展、多模态、可调用工具的 LLM 服务。Amazon Bedrock 提供多家主流模型统一接入,Converse API 更支持工具调用和多模态输入。Spring AI 作为开源 Java AI 框架,已原生支持 Bedrock Converse,帮助开发者快速构建智能应用。Bedrock Converse API 让 Java 应用具备主流 LLM
·
Spring AI 集成 Amazon Bedrock Converse API 技术博客
本文全面梳理 Amazon Bedrock Converse API 与 Spring AI 的集成方案,系统讲解其核心能力、配置方法、常见用例,结合项目背景与发展历史,附权威参考资料,并用多种 Mermaid 图表辅助理解。内容结构化,便于开发者速记和系统认知。
一、概述
随着生成式 AI 应用的爆发,企业亟需安全、可扩展、多模态、可调用工具的 LLM 服务。Amazon Bedrock 提供多家主流模型统一接入,Converse API 更支持工具调用和多模态输入。Spring AI 作为开源 Java AI 框架,已原生支持 Bedrock Converse,帮助开发者快速构建智能应用。
二、名词解释
- LLM(Large Language Model):大语言模型,能理解和生成自然语言。
- 多模态输入:支持文本、图片、视频、文档等多种数据格式。
- 工具/函数调用:模型可在对话中自动调用后端 Java 方法或 Bean,实现智能工具集成。
- 流式响应:模型输出可实时推送,适合长文本和交互场景。
- Spring AI:Spring 生态下的 AI 框架,简化 Java 应用与 AI 服务集成。
- Bedrock Converse API:Amazon Bedrock 的对话式 API,支持多模态、工具调用等高级功能。
三、项目背景与发展历史
发展脉络
- 2022:Amazon Bedrock 发布,致力于成为多模型统一入口,支持 Titan、Claude 等主流模型。
- 2023:Bedrock Converse API 推出,支持多模态、工具调用,推动企业级智能应用落地。
- 2024:Spring AI 集成 Bedrock Converse,Java 社区可无缝接入主流 LLM 服务,促进生产级 AI 应用开发。
行业权威资料
四、核心功能速记口
| 能力 | 关键词速记 | 说明 |
|---|---|---|
| 工具调用 | “函数Bean” | 对话可自动调用 Java 方法/Bean |
| 多模态输入 | “图文视频文档” | 支持图片、视频、PDF、Word 等多格式 |
| 流式响应 | “边说边发” | 实时推送文本,适合长对话 |
| 多模型支持 | “随心切换” | Titan、Claude、Llama 等统一接入 |
| 系统消息 | “指令上下文” | 支持系统级 prompt 指令和上下文管理 |
五、Spring AI 集成步骤详解
1. 依赖配置
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-bedrock-converse</artifactId>
</dependency>
<!-- 推荐引入 BOM 进行版本统一 -->
2. application.properties 配置
spring.ai.bedrock.aws.region=eu-central-1
spring.ai.bedrock.aws.timeout=10m
spring.ai.bedrock.aws.access-key=${AWS_ACCESS_KEY_ID}
spring.ai.bedrock.aws.secret-key=${AWS_SECRET_ACCESS_KEY}
spring.ai.bedrock.aws.session-token=${AWS_SESSION_TOKEN}
spring.ai.bedrock.converse.chat.options.model=anthropic.claude-3-5-sonnet-20240620-v1:0
spring.ai.bedrock.converse.chat.options.temperature=0.8
spring.ai.bedrock.converse.chat.options.top-k=15
3. 代码用例
工具调用
public class WeatherService {
@Tool(description = "Get the weather in location")
public String weatherByLocation(@ToolParam(description= "City or state name") String location) {
return "Amsterdam 22C";
}
}
String response = ChatClient.create(chatModel)
.prompt("What's the weather like in Boston?")
.tools(new WeatherService())
.call()
.content();
多模态输入
图片:
String response = ChatClient.create(chatModel)
.prompt()
.user(u -> u.text("Explain what do you see on this picture?")
.media(Media.Format.IMAGE_PNG, new ClassPathResource("/test.png")))
.call()
.content();
视频:
String response = ChatClient.create(chatModel)
.prompt()
.user(u -> u.text("Explain what do you see in this video?")
.media(Media.Format.VIDEO_MP4, new ClassPathResource("/test.video.mp4")))
.call()
.content();
PDF:
String response = ChatClient.create(chatModel)
.prompt()
.user(u -> u.text("请总结一下这份 PDF 文档。")
.media(Media.Format.DOC_PDF, new ClassPathResource("/spring-ai-reference-overview.pdf")))
.call()
.content();
流式响应
@GetMapping("/ai/generateStream")
public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return chatClient.prompt(message).stream().content();
}
六、Controller 示例
@RestController
public class ChatController {
private final ChatClient chatClient;
@Autowired
public ChatController(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", chatClient.prompt(message).call().content());
}
@GetMapping("/ai/generateStream")
public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return chatClient.prompt(message).stream().content();
}
}
七、注意事项速记
- 嵌入式(Embedding)操作:Converse API 暂不支持,需用原有 InvokeModel API。
- 多模型切换:通过
spring.ai.model.chat灵活配置。 - 多模态需支持:仅 Claude、Nova 等支持多模态。
- AWS 权限:需在 Bedrock 控制台开通目标模型权限。
八、结构化知识图表
1. 流程图(flowchart)
2. 状态图(stateDiagram-v2)
3. 时序图(sequenceDiagram)
九、参考文献
- Spring AI 官方文档
- Amazon Bedrock 官方文档
- Gartner, 2023. “Generative AI Is the Most Disruptive Technology in Decades” Press Release.
十、系统性认知总结
- Bedrock Converse API 让 Java 应用具备主流 LLM 的多模态、工具调用、流式能力,统一接口,极大提升企业级 AI 应用开发效率。
- Spring AI 作为桥梁,自动化依赖管理、模型切换、工具集成,降低门槛。
- 多模态与工具调用是未来企业智能应用的核心竞争力,建议优先选用支持相关能力的模型。
- 权限和配置是常见踩坑点,务必在 AWS 控制台提前配置好模型访问权限。
- Mermaid 图表能帮助开发者快速梳理架构与流程,提升系统认知。
速记口:依赖引入、配置模型、工具调用、多模态输入、流式输出、权限开通,六步走,企业级 AI 应用即刻拥有!
如果你有具体业务场景或遇到技术难题,欢迎留言,我会结合代码与架构图为你定制解决方案!
更多推荐


所有评论(0)