Spring AI Alibaba 快速开始:5分钟跑通第一个应用

张开发
2026/4/17 21:33:16 15 分钟阅读

分享文章

Spring AI Alibaba 快速开始:5分钟跑通第一个应用
Spring AI Alibaba 快速开始5分钟用智谱 GLM 跑通第一个聊天应用题外话最近因为有功能有上线这几天都忙着在整理投产资料。属实是更新不动了当然还有一个原因就是之前发库存发的太爽了现在地主家也没有余粮了。之前学完spring AI后我其实就想结合我熟悉的领域开源一个项目目前还在开发中…里就有用到spring AI Alibaba于是就有了这个系列。正文说实话Java 开发者接入大模型这事儿门槛早就该降下来了。Spring AI 就是干这个的——让你用写 Spring Boot 的手感直接调大模型。这个系列依旧坚持能白嫖就白嫖原则才不是因为阿里的账户欠了0.3使用智谱的 GLM-4.7 免费调用0 成本就能跑通整条链路。这篇文章就用它来做示范一步一步带你从零搭出一个能聊天、能记住上下文的应用。5 分钟开始。写在前面环境要求就两个硬性条件JDK 17 及以上我用的是 JDK 17一个智谱开放平台的 API Key注册就送免费额度JDK 版本低于 17 的话先升级后面全是白搭。智谱 API Key 去 open.bigmodel.cn 注册获取登录后点右上角钥匙图标进 API Key 管理页面创建一个就行。GLM-4 是免费模型不用担心扣费。第一步创建项目用 IDEA 新建一个 Spring Boot 3.x 项目或者直接用 Spring Initializr。JDK 选 17打包方式选 Maven。项目基本信息随便填关键是 pom.xml 里的依赖和版本。打开pom.xml按下面这个来parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.5.7/versionrelativePath//parentpropertiesjava.version17/java.versionspring-ai.version1.1.2/spring-ai.versionspring-ai-alibaba.version1.1.2.2/spring-ai-alibaba.versionspring-ai-alibaba-extensions.version1.1.2.2/spring-ai-alibaba-extensions.version/properties版本号说明一下spring-ai 1.1.2是 Spring AI 的正式版本spring-ai-alibaba 1.1.2.2是阿里对 Spring AI 的扩展包。虽然这篇文章用的是智谱模型但后续如果想接入通义千问或其他能力扩展包已经提前准备好了。接着是 BOM 管理和仓库配置dependencyManagementdependencies!-- Spring AI 核心依赖管理 --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion${spring-ai.version}/versiontypepom/typescopeimport/scope/dependency!-- Spring AI Alibaba 扩展依赖管理 --dependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-bom/artifactIdversion${spring-ai-alibaba.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud.ai/groupIdartifactIdspring-ai-alibaba-extensions-bom/artifactIdversion${spring-ai-alibaba-extensions.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementrepositoriesrepositoryidspring-milestones/idnameSpring Milestones/nameurlhttps://repo.spring.io/milestone/urlsnapshotsenabledfalse/enabled/snapshots/repositoryrepositoryidsonatype-snapshots/idnameSonatype Snapshot Repository/nameurlhttps://oss.sonatype.org/content/repositories/snapshots/urlsnapshotsenabledtrue/enabled/snapshotsreleasesenabledfalse/enabled/releases/repository/repositoriesBOM 的作用是统一管理版本号不用在各个依赖里手动对齐升级的时候只改properties就行。最后是实际依赖——这次只用两个dependencies!-- 智谱模型支持 --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-model-zhipuai/artifactId/dependency!-- Web 支持 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies就这两个没了。spring-ai-starter-model-zhipuai会通过 Spring Boot 自动装配机制帮你初始化好ChatClient、ChatModel这些核心 Bean不用你手动创建。第二步配置 API Key 和模型在src/main/resources/application.yml里写上server:port:8080spring:application:name:spring-ai-alibaba-helloai:zhipuai:api-key:${ZHIPUAI_API_KEY:your-api-key-here}chat:options:model:glm-4temperature:0.7max-tokens:2000这里有个小细节${ZHIPUAI_API_KEY:your-api-key-here}用的 SpEL 表达式冒号后面是默认值。开发阶段图省事可以直接把 Key 写在默认值里但正式项目别这么干。设置环境变量# macOS / LinuxexportZHIPUAI_API_KEY你的智谱API-KEY# Windows PowerShell$env:ZHIPUAI_API_KEY你的智谱API-KEY第三步写 Controller新建ChatController.javapackagecom.alibaba.cloud.ai.examples.chatbot;importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;importorg.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;importorg.springframework.ai.chat.memory.MessageWindowChatMemory;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;RestControllerRequestMapping(/chat)publicclassChatController{privatestaticfinalStringDEFAULT_PROMPT你是一个博学的智能聊天助手请根据用户提问回答;privatefinalChatClientchatClient;publicChatController(ChatClient.BuilderchatClientBuilder){this.chatClientchatClientBuilder.defaultSystem(DEFAULT_PROMPT)// 支持对话记忆——模型能记住上下文.defaultAdvisors(MessageChatMemoryAdvisor.builder(MessageWindowChatMemory.builder().maxMessages(50).build()).build())// 开启日志方便调试.defaultAdvisors(newSimpleLoggerAdvisor()).build();}GetMapping(/simple)publicStringsimpleChat(RequestParamStringquery){returnchatClient.prompt(query).call().content();}}这段代码核心就一个东西ChatClient。构造方法里通过chatClientBuilder注入配了三个东西System Prompt告诉模型你是一个博学的助手设定角色MessageChatMemoryAdvisor对话记忆用了MessageWindowChatMemorymaxMessages(50)表示保留最近 50 条消息的上下文。这样你连续问多个问题模型能记住之前聊了什么SimpleLoggerAdvisor日志调试时能看到每次请求和响应的详情请求进来时chatClient.prompt(query).call().content()这一行就搞定了——组装请求、调 API、解析响应Spring AI 全自动处理不需要你手写任何 HTTP 调用或 JSON 拼装。第四步启动跑通第一个请求./mvnw spring-boot:run启动成功后会打印 ✅ Application is ready! Chat with you agent: http://localhost:8080/chat/simple?query你好 浏览器打开这个链接或者直接访问http://localhost:8080/chat/simple?query给我讲一个笑话吧模型返回了一个笑话恭喜链路通了。全程 0 费用。再试试连续对话http://localhost:8080/chat/simple?query我叫小明 http://localhost:8080/chat/simple?query我叫什么名字第二个请求如果回答你叫小明说明 ChatMemory 生效了——模型记住了你刚才说过的话。项目结构总览spring-ai-alibaba-hello/ ├── pom.xml ├── src/main/java/.../chatbot/ │ ├── ChatbotApplication.java # 启动类 │ └── ChatController.java # 聊天接口 └── src/main/resources/ └── application.yml # 配置文件就这么简单。一个启动类、一个 Controller、一个配置文件3 个文件跑通 AI 聊天。常见坑依赖拉不下来→ 检查 pom.xml 里有没有补spring-milestones和sonatype-snapshots仓库网络不通配国内镜像。返回 401 Unauthorized→ API Key 没配对。检查环境变量名是ZHIPUAI_API_KEY值是从 open.bigmodel.cn 复制的完整 Key。返回空或报模型不存在→ 模型名写错了。确认是glm-4别写成GLM-4大小写敏感或glm-4.7-flash除非你确实要用这个版本。JDK 版本报错→ 必须 JDK 1714/15/16 直接放弃。想换通义千问→ 把spring-ai-starter-model-zhipuai换成spring-ai-alibaba-starter配置前缀改成spring.ai.dashscope环境变量改成AI_DASHSCOPE_API_KEYController 代码不用动。Spring AI 的 ChatClient 是模型无关的换模型只换配置。下一步可以玩什么基础链路通了之后可以继续往深了走咱们之前用spring AI实现的功能都会重新实现一遍Function Calling— 让模型主动调用你写好的 Java 方法把 AI 嵌进业务流程Prompt 模板— 构造更复杂的提示词告别硬编码RAG 知识库问答— 把自己的文档喂给模型定制专属问答助手流式输出— 用chatClient.prompt(query).stream().content()实现打字机效果说实话Function Calling 才是生产环境里最有价值的部分——让大模型调用你写好的接口而不是简单问答。Spring AI 这套东西的设计思路很清晰ChatClient 抽象把模型选择和业务代码彻底解耦今天用免费 GLM明天换付费 Qwen代码基本不用动。三个文件5 分钟0 费用这就是 Java 开发者接入大模型该有的体验。刚开始按照官方文档拉的示例demo在换模型的过程中遇到了不少坑这不下篇的素材就有了-_-官方文档https://java2ai.com/docs/1.0.0-M6.1/get-started/有问题欢迎评论区见。 收藏关注持续更新如果觉得有帮助请⭐收藏本文—— 方便后续查阅随时回顾核心概念关注同名公众号—— 点击菜单「获取源码」获取完整代码Gitee 仓库分享给同事—— 一起学习 Spring AI Alibaba少走弯路系列更新不迷路下篇推荐[Spring AI Alibaba 报错合集我踩过的坑]

更多文章