一文吃透 SpringAI + VertexAI Gemini:让聊天模型变身超能力助手

271 阅读6分钟



小米这次要打怪升级,需要先把装备准备齐全。启动 springAI 聊天模型前,我们得满足几个前提条件:

1、环境准备

  • Java 环境:需要 JDK 17+,因为我喜欢用最新特性,像 sealed class、record 什么的,代码更简洁;
  • Spring Boot:推荐 spring-boot-starter-parent:2.7.x 或者 3.x,这次用 3.x 吧,用起来更现代;
  • 依赖库:主要是 spring-boot-starter-web + spring-boot-starter-json,再加上 Vertex AI 相关 SDK,比如 com.google.cloud:google-cloud-aiplatform;

2、权限准备

在 GCP(谷歌云)那儿,开启 Vertex AI API

  • 创建一个 Service Account,给它一个 JSON key,让它拥有调用 Vertex AI 的权限(aiplatform.user 或者更高);
  • 如果想用 Storage、Vision、Audio 等,那还得给权限,比如 storage.objectViewer、vision.visionApiUser 等;

3、Spring 配置

Spring Boot 中添加一些配置项,比如 application.yml 里:

这样我们的小米就有一张通往云端的 VIP 门票啦!

自动配置——魔法初现,Model Bean 自动现身!

自动配置是 Spring Boot 精华之一,魔法般帮我们省去大量重复代码。我们只要定义个 @Configuration 类,让它判断当前类路径中有没有 Vertex AI SDK,一切准备就绪后便可自动装配:

对,Spring 自动判断好环境、有 Bean 就自己下定单……多省心!日常使用时,只要在你的类里:

就能拿来用啦,Spring 自动注入,太方便!

聊天属性——为 AI 聊天加点性格

每个聊天模型都有自己的“性格”,springAI 中也没落下,咱们可以通过 ChatModel 定制对话属性:

  • emperature 控制回答的“发散程度”,温度高,回答更天马行空;温度低,回答更保守靠谱;
  • top_p 控制答案多样性,组合使用才能“调音”;
  • maxTokens 防止回答太长,让响应速度更快;
  • stopSequences 帮我们控制结束方式,按需中断对话。

小米我喜欢给聊天加点活力,于是 temperature 设 0.8,top_p 0.95,maxTokens 300,让聊天更自然、更有生命力。

运行时选项——调节游戏中运行参数

“我这个模型太嗨了,需要控制一下运行时的资源使用。”这时,我们还可以通过运行时配置做调节,比如:

一、超时时间控制

代码里结合 HTTP client 并设置超时,保证服务可靠不坑爹。

二、并发配置

配置一个线程池,避免同时发多个请求把自己累垮。

三、错误重试机制:

加个指数退避重试,网络抖动来两次都不怕,紧要关头可以自动再来一次。

工具调用——让聊天模型会“用工具”

最炫酷的是,聊天模型不仅能聊天,还会“拿工具”。比如调用图像识别接口、访问计算器、查询天气……springAI 中允许在对话中嵌入一段“工具调用”的请求:

于是模型会去 Vision API 调用标签检测,再把结果整合进对话:

  • 用户: “请告诉我这张图片里的内容。”
  • AI: “正在识别图片内容…”(调用 vision.detectLabels)
  • 回答: “我识别出以下标签:猫、宠物、可爱、动物。”

你不必手动写调用逻辑,模型说“我要用这个工具”,springAI 会拦截,把请求发送给对应的工具,再把结果带回来给模型,简直像一台智能小助手!

多模态——让聊天不再“只有文字”

好玩又灵活的交互,文字当然是基础,但图像、音频、视频、PDF 等多模态内容,才是 springAI 的终极形态。

1. 图像、音频、视频

图像

用户上传图片,模型调用 Vision API:

  • 图像生成(比如 DALL·E/Imagen):根据 Prompt 生成图片;
  • 图像理解:识别文字、标签、场景等;
  • 目标检测:检测人脸 / 物体 / QR code 等。

交互案例:

用户: “这张图里是不是有个笑脸?”

AI:通过调用 Vision,告诉你: “我看到了一个明显的笑脸,置信度 95%。”

音频

  • 语音识别(Speech-to-Text):把用户语音转成文字;
  • 语音合成(Text-to-Speech):把文字读出来;
  • 音频分析:语言检测、情绪识别等。

场景笔记:用户上传一段语音,springAI 帮转写、识别情绪,再反馈“你说的是开心”——聊天变得有温度。

视频

  • 关键帧提取+分析:识别场景变化、人脸出现、字幕识别;
  • 文本–视频生成:从描述生成短视频(如果有支持)。

用户丢个短视频过来,模型能分析内容、识别出关键词、甚至自动说“你今年夏天穿的这件蓝色 T 恤看起来真酷!”

2. PDF

文档内容理解利器:上传 PDF,模型自动调用 Document AI/OCR:

  • 提取文本:把 PDF 中的文字提取出来;
  • 结构识别:表格、标题、段落等样式保留;
  • 问答能力:比如你问“第三页讲了什么?”,模型直接回答核心内容。

想象一下:用户上传一份合同 PDF,AI 能告诉你:“第 5 条是关于违约责任的,罚款标准是 USD 5000。”

示例控制器——给你留下代码“干货”印象

小米最喜欢的就是代码示例了!下面从 controller 视角,给你一个完整示例:

再做个文件上传的 controller,让模型识别图片、音频、PDF:

这样一整套机制下来,用户的上传文件就会引发模型调用相应工具,然后把识别结果包装成响应返回——超实用!

让 AI 聊天更聪明、更生动、更贴心

回头看看,我们跟着小米一起闯关:

  • 准备装备:JDK、Spring Boot、Vertex AI 权限文件
  • 自动配置:Spring 自动生成 ChatModel Bean
  • 聊天性格:温度 (temperature)、采样 (top_p)、最大长度、结束符
  • 运行时控制:超时、并发、重试等稳定措施
  • 工具调用:让模型能调用 Vision、Speech、Document 等工具
  • 多模态交互:处理图像、音频、视频、PDF,让聊天更有温度和层次
  • 控制器示例:Spring Controller 实现 end-to-end 聊天与工具调用逻辑

如果你想让你的 AI 助手“会看图、能听话、能读文档”,springAI + VertexAI Gemini 通通帮你搞定!

END

小米我一路讲得飞起,100 行不到的 Java 就能让聊天模型跳动起来。希望你喜欢这篇“技术为主的故事”,如果你有什么特别想聊的模块,比如“记忆管理”“插件系统”“多轮对话场景优化”,随时来撩我呀!

我们下次见,别忘了对 AI 聊天模型保持好奇和热情,让代码和创意一起飞起来!

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