前两天,我在项目组群里说:“咱们接下来的 IM 模块用 AI 聊天吧,顺手集成一下 Azure OpenAI。”结果大家一脸懵,我知道,得用点故事带大家飞一圈。
所以今天,小米带你从头到尾梳理一遍:如何用 Spring AI 整合 Azure OpenAI 聊天模型,不但能跑,还能飞。无论你是刚接触 AI 的萌新,还是调模型调得头秃的老司机,看完这一篇,至少能跑通一个高颜值的 Chat 应用!
开工之前要备齐材料
就像做红烧肉之前得有肉、有酱油、有锅……用 Azure OpenAI 聊天模型,也得先备好下面这些「调料」:
1. Azure API 密钥和终结点
先去 Azure 门户创建一个 OpenAI 资源,获取你的:
- API Key(类似 abcd1234 的访问密码)
- Endpoint(形如 xxx.openai.azure.com/)
把它们记下来,别忘了后面 .yml 配置里要用。
2. OpenAI 密钥(可选)
如果你不走 Azure,而是直接用 OpenAI,也行,但这篇主要聚焦 Azure 场景。
3. Microsoft Entra ID(前身叫 Azure AD)
如果你需要用身份验证和权限管理,可以开通 Microsoft Entra ID 来做授权。
不过普通用法下,用 API Key 更简单,适合快速落地。
4. 部署名称
Azure OpenAI 不像 OpenAI 那么「自由散漫」,它要求你先部署一个模型实例。比如你部署了一个 gpt-4,命名为 chat-gpt4,这个名字等下也要填到配置里。
别填错,Azure 就是这么「严谨」。
5. 添加仓库和 BOM
在 pom.xml 中加入 Spring AI 的 BOM 管理,像这样:
同时别忘了引入依赖:
自动配置,轻松上手
Spring AI 的 Starter 很贴心,大部分配置只要填 .yml 就能生效。
在 application.yml 里,你只需要这样写:
启动后,AzureOpenAiChatClient 就会自动注入,直接调用就行,是不是很「Spring 味」?
聊天属性详解
Spring AI 聊天模型支持各种自定义属性,比如:
- temperature 控制创意程度
- max-tokens 控制回复字数
- top-p 控制词汇多样性
- stop 设置终止词
这些可以通过配置文件写死,也可以在代码里动态设置,非常灵活。
比如你想让它“说话稳重点”:
运行时选项(Runtime Options)
Spring AI 的 ChatClient 是接口式的,你可以在运行时传入不同的 prompt、上下文历史、消息类型等。
举个例子:
支持多轮对话,自动维持上下文,一句话:很像 ChatGPT!
函数调用(Function Call)
是的,Spring AI 也支持 Azure OpenAI 的函数调用功能!
你可以注册一个函数,AI 就会判断是不是调用它。比如你定义一个天气查询的函数:
然后注册这个函数,AI 就能动态调用啦!
多模态支持(图片、音频也能聊)
Spring AI 的多模态支持也开始慢慢丰富,结合 Azure OpenAI 的 Vision 模型,你可以:
- 上传一张图,让 AI 看图说话
- 或者传语音、让它自动转文字再回答
目前多模态还不如文本成熟,但未来潜力无限。
示例控制器,立马跑起来!
说了这么多,小米当然得给你安排个 Demo Controller,让它真·跑起来。
你启动项目,POST 一个 JSON 给 /chat,它就能把 OpenAI 的回答返回给你。
手动配置(如果你想 DIY)
不想用自动注入?OK,Spring AI 也支持你全手动创建客户端:
自己控制更加灵活,但要记得别漏配参数哦!
从一杯茶开始的对话 AI
其实整合 Azure OpenAI 和 Spring AI,没你想的那么复杂。就像泡茶,水温合适、茶叶准备好,静下心来,一杯香浓自然泡成。
这次我们用故事梳理了一遍完整流程,从密钥配置到自动注入,从函数调用到 Controller 示例,再到多模态展望。如果你也想在项目里整合个智能客服、聊天助手、代码生成工具,现在就是个好机会。
END
记得点赞+收藏,别让你的 AI 聊天项目卡在第一步~
我们下篇再见~
我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!