初识Spring AI框架及Alibaba的实现
摘要:SpringAI是Spring官方推出的AI开发框架,于2024-2025年发布正式版本,提供ChatModel、RAG等核心功能。SpringAI Alibaba(SAA)基于SpringAI深度集成阿里百炼平台,支持快速开发AI应用。开发流程包括:1)获取百炼平台APIKey;2)添加Maven依赖;3)配置application.yml指定模型参数;4)通过@Autowired注入Da
一、SpringAI
Spring AI 是 Spring 官方社区维护的开源框架,最初于 2024 年 5 月发布首个 Milestone 版本,在 2025 年 5 月正式发布首个 1.0 GA 版本。Spring AI 侧重 AI 能力构建的底层原子能力抽象以及与 Spring Boot 生态的无缝集成,如模型通信(ChatModel)、提示词(Prompt)、检索增强生成(RAG)、记忆(ChatMemory)、工具(Tool)、模型上下文协议(MCP)等,帮助 Java 开发者快速构建 AI 应用。
Spring AI Alibaba(SAA) 是一款以 Spring AI 为基础,深度集成百炼平台,支持 ChatBot、工作流、多智能体应用开发模式的 AI 框架。
二、开发一个Spring AI Alibaba的应用
1. 首先登录阿里云的百炼开发平台
地址:https://bailian.console.aliyun.com/#/home
如果有阿里云的账号可以直接登录,然后创建APIKey, 示例如下:

2. 得到APIKey之后,我们就可以使用它来进行开发了
添加maven引用
<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-bom</artifactId><version>1.0.0.2</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter-dashscope</artifactId></dependency></dependencies>
3. application.yml的配置如下:
spring:ai:dashscope:api-key: sk-xxxxxxxchat:options:model: qwen-plustemperature: 0.5base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
这里我们使用qwen-plus模型,更多模型请参考如下链接:
https://bailian.console.aliyun.com/?tab=doc#/doc/?type=model&url=2840914
4. 通过以上的配置,会自行自定义一个chatModel, 其实现是DashScopeChatModel, 其实Spring AI支持各种大模型,通过引用不同的starter,简单配置一下可以生成不同的Model, 如DeepSeekChatModel,这里主要使用阿里的DashScopeChatModel.
@SpringBootApplicationpublic class AiApp {@Autowiredprivate DashScopeChatModel dashScopeChatModel;@Beanpublic ChatClient dashScopeChatClient(){return ChatClient.builder(dashScopeChatModel).build();}}
这里使用了ChatClient, ChatClient 提供了与 AI 模型通信的 Fluent API,使用 ChatClient 可以将与 LLM 及其他组件交互的复杂性隐藏在背后,因为基于 LLM 的应用程序通常要多个组件协同工作(例如,提示词模板、聊天记忆、LLM Model、输出解析器、RAG 组件:嵌入模型和存储),并且通常涉及多个交互,因此协调它们会让编码变得繁琐。当然使用 ChatModel 等原子 API 可以为应用程序带来更多的灵活性,成本就是您需要编写大量样板代码。
5. 使用ChatClient
@RestController@RequestMapping("/test")public class TestController {@Autowiredprivate ChatClient dashScopeChatClient;@GetMapping("/chat1")public String chat1(String message){return dashScopeChatClient.prompt(message).call().content();}}
运行应用程序,可以看到结果如下:

6. 使用Flux生成增量内容的效果, stream 方法是一种异步的、持续的获得模型响应的方式:
@GetMapping("/chat2")public Flux<String> chat2(String message){return dashScopeChatClient.prompt(message).stream().content();}
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)