Hi,大家好,我是小米,一个每天都在研究新技术、折腾各种 AI 接口、边学边分享的 31 岁程序员。

今天我要和大家聊点不一样的:Amazon Bedrock Converse API + Spring AI!是不是听着就有点“高大上”?其实,这玩意真没你想的那么难,而且真的——超!好!用!

你是不是也有过这种体验:

“客户说想加个对话机器人,结果你调了一堆 OpenAI,Anthropic,还得区分平台 API,最后发现还不支持图文、多模态?”

那今天这篇文章,咱们就来一次“端到端”的实践,帮你用上 Spring AI 的聊天模型对接 Bedrock Converse API,再配上图像、视频、文档多模态,让你轻轻松松搞定企业级 AI 聊天需求!

故事从 Amazon Bedrock 开始

先说个真实的项目故事。

我们部门最近接了个智慧客服项目,老板说想支持多个大模型:Claude、Titan、Command R+,还得统一接口,最好能灵活切换、支持多模态。

我当时第一反应就是:Amazon Bedrock!

Bedrock 是 AWS 出的“多大模型平台”,就像个“模型百宝箱”,支持一堆 LLM,而且最近新出了 Converse API ——统一聊天接口,简直就是 Spring AI 最理想的伙伴!

先别急,基础配置不能少

你得先满足几个前提才能用上 Bedrock Converse API:

  • AWS 账号必须开启 Bedrock:默认账号是没权限的,需要在控制台中申请使用。
  • Region 选对了没? 目前 Converse API 主要在 us-east-1。
  • 权限别忘了:你得绑定 AmazonBedrockFullAccess 或至少 InvokeModel 类权限给 IAM 用户。
  • 模型访问授权:比如 Claude 3、Command R+、Titan,你得在 AWS Console 中勾选“允许访问”。

PS:Converse API 对应的 endpoint 和以前的 invoke-model API 是不同的!记得更新 SDK 配置!

自动配置(Spring AI 真香)

用过 Spring Boot 的同学都知道,Spring 家的东西有个共同特点:一行配置就能跑起来

Spring AI 集成 Bedrock 也不例外,我们只需要引入依赖,配置如下:

Spring AI 聊天模型:Bedrock Converse API 超详细实践指南!_API

然后你只需要这样写:

Spring AI 聊天模型:Bedrock Converse API 超详细实践指南!_API_02

自动配置就搞定了。Spring AI 会自动通过 region 和 credentials 创建对应的 Converse ChatModel 实例,不用你手动对接 SDK,简直不要太香!

聊天属性详解(真的很灵活)

每个聊天模型都有自己的个性化属性,Bedrock 支持的模型包括:

  • Anthropic Claude
  • Meta Llama 3
  • AI21 Jurassic-2
  • Cohere Command R+
  • Amazon Titan

Spring AI 允许我们通过 ChatModelRequest 配置各种参数,比如:

Spring AI 聊天模型:Bedrock Converse API 超详细实践指南!_Amazon_03

对于不同模型,还可以配置“系统提示词”、“历史消息”、“是否流式输出”等细节,全部支持!

运行时选项(RunTime Options)

如果你不想在代码里死写这些参数,Spring AI 允许你在运行时动态注入:

Spring AI 聊天模型:Bedrock Converse API 超详细实践指南!_Amazon_04

像 maxTokens、temperature、stopSequences、topK、topP 这些在 Bedrock 模型里都能调,用起来贼灵活!

工具调用(Tool Call & Function Call)

这个是我最喜欢的功能之一!

Converse API 本身支持 Tool calling(相当于 OpenAI 的 function calling),在 Spring AI 中我们可以像这样注册一个函数:

Spring AI 聊天模型:Bedrock Converse API 超详细实践指南!_模态_05

模型可以在聊天中“主动”调用这个函数。Spring AI 会自动匹配函数签名,调用完成后再把结果发送给模型处理后续回答。

是不是有点“智能助手”的味道了?就是这么牛!

多模态支持(图、文、视频通吃)

现在 AI 聊天不止是文字游戏,越来越多需求要求支持“发张图,让模型识别”、“给段视频,说出里面讲了啥”。

别担心,Spring AI + Bedrock 全都安排上了!

1. 图像支持(Claude 3 + Titan)

Claude 3 支持图片作为上下文输入。Spring AI 允许你直接传图片 Base64:

Spring AI 聊天模型:Bedrock Converse API 超详细实践指南!_API_06

你甚至可以发图+提问,实现视觉问答能力。

2. 视频支持(间接支持)

虽然 Bedrock 模型本身不支持视频直接输入,但你可以做个变通:

  • 把视频音频提取文字(通过 Whisper 等工具)。
  • 把视频截图转图像输入。
  • 最终用 Spring AI 把文本/图像传给模型回答。

我试过上传一个讲课视频,提问“老师讲到哪一章了”,模型结合截图和提取的文字给出非常准确的判断!

3. 文档支持(PDF、Word、TXT)

Spring AI 的 EmbeddingModel + Retriever 模块可以实现 RAG(检索增强生成)。

你可以先把文档向量化,再通过上下文加到对话中。典型代码如下:

Spring AI 聊天模型:Bedrock Converse API 超详细实践指南!_模态_07

是不是已经有点 ChatPDF 那味儿了?

实战来一套

说了这么多,最后咱来一个完整的 Spring Boot 控制器,模拟对话接口:

Spring AI 聊天模型:Bedrock Converse API 超详细实践指南!_Amazon_08

你只需要启动项目,POST 一条消息到 /chat,模型马上就能回答。

可以对接前端 Web 聊天窗口,也可以集成到小程序、企业微信,随你发挥!

总结

如果你问我 2025 年最值得尝试的企业级 AI 接口是哪一个,我会毫不犹豫地告诉你:

Amazon Bedrock Converse API + Spring AI,绝配!

不管你要对接 Claude 3、Meta、Titan,还是搞多模态、工具调用、RAG 检索,Spring AI 全部搞定,代码少、配置少、能力强!

END

希望这篇文章能帮你少走点弯路,也欢迎留言分享你在集成 Bedrock 的踩坑/奇遇!

我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!