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 会自动通过 region 和 credentials 创建对应的 Converse ChatModel 实例,不用你手动对接 SDK,简直不要太香!
聊天属性详解(真的很灵活)
每个聊天模型都有自己的个性化属性,Bedrock 支持的模型包括:
- Anthropic Claude
- Meta Llama 3
- AI21 Jurassic-2
- Cohere Command R+
- Amazon Titan
Spring AI 允许我们通过 ChatModelRequest 配置各种参数,比如:
对于不同模型,还可以配置“系统提示词”、“历史消息”、“是否流式输出”等细节,全部支持!
运行时选项(RunTime Options)
如果你不想在代码里死写这些参数,Spring AI 允许你在运行时动态注入:
像 maxTokens、temperature、stopSequences、topK、topP 这些在 Bedrock 模型里都能调,用起来贼灵活!
工具调用(Tool Call & Function Call)
这个是我最喜欢的功能之一!
Converse API 本身支持 Tool calling(相当于 OpenAI 的 function calling),在 Spring AI 中我们可以像这样注册一个函数:
模型可以在聊天中“主动”调用这个函数。Spring AI 会自动匹配函数签名,调用完成后再把结果发送给模型处理后续回答。
是不是有点“智能助手”的味道了?就是这么牛!
多模态支持(图、文、视频通吃)
现在 AI 聊天不止是文字游戏,越来越多需求要求支持“发张图,让模型识别”、“给段视频,说出里面讲了啥”。
别担心,Spring AI + Bedrock 全都安排上了!
1. 图像支持(Claude 3 + Titan)
Claude 3 支持图片作为上下文输入。Spring AI 允许你直接传图片 Base64:
你甚至可以发图+提问,实现视觉问答能力。
2. 视频支持(间接支持)
虽然 Bedrock 模型本身不支持视频直接输入,但你可以做个变通:
- 把视频音频提取文字(通过 Whisper 等工具)。
- 把视频截图转图像输入。
- 最终用 Spring AI 把文本/图像传给模型回答。
我试过上传一个讲课视频,提问“老师讲到哪一章了”,模型结合截图和提取的文字给出非常准确的判断!
3. 文档支持(PDF、Word、TXT)
Spring AI 的 EmbeddingModel + Retriever 模块可以实现 RAG(检索增强生成)。
你可以先把文档向量化,再通过上下文加到对话中。典型代码如下:
是不是已经有点 ChatPDF 那味儿了?
实战来一套
说了这么多,最后咱来一个完整的 Spring Boot 控制器,模拟对话接口:
你只需要启动项目,POST 一条消息到 /chat,模型马上就能回答。
可以对接前端 Web 聊天窗口,也可以集成到小程序、企业微信,随你发挥!
总结
如果你问我 2025 年最值得尝试的企业级 AI 接口是哪一个,我会毫不犹豫地告诉你:
Amazon Bedrock Converse API + Spring AI,绝配!
不管你要对接 Claude 3、Meta、Titan,还是搞多模态、工具调用、RAG 检索,Spring AI 全部搞定,代码少、配置少、能力强!
END
希望这篇文章能帮你少走点弯路,也欢迎留言分享你在集成 Bedrock 的踩坑/奇遇!
我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!