《Spring AI × Alibaba 入门:3 分钟搭建你的第一个 “Hello World”》

212 阅读5分钟

AI技术已经崛起 我们要紧跟潮流 学习AI相关知识

一 Spring AI Alibaba框架学习

spring ai能做的,Spring AI Alibaba都能做且更厉害 有百炼平台 是一套生态。

前置知识: JDK 17 spring boot3 maven redis 大模型入门概念: DeepSeek 通义千问等

Spring AI Alibaba 为什么出现

before : 微服务 springboot after: 大模型 模型推理 模型训练 AI迅猛发展,我们要将目光投入AI应用开发。 Langchain4J、Spring Ai、Spring AI Alibaba介于微服务和大模型之间的框架模型。

Spring AI Alibaba是什么

简化开发者开发智能体应用的过程,方便开发者可以非常方便的开发AI智能体应用。以Spring AI为基础,深度集成百炼平台,支持chatbot、工作流、多智能体应用开发模式的AI框架。

Spring AI Alibaba能干什么

  • 专属于spring 开发的AI工具
  • Model prompt RAG Tools组件
  • 阿里云大模型与云原生最佳实践

Spring AI Alibaba 去哪里下载 / 学习

Spring AI官网:spring.io/projects/sp…

Spring AIAlibaba官网:java2ai.com

SpringAIAlibaba仓库:github.com/alibaba/spr…

SpringAIAlibaba官方示例仓库:github.com/springaiali…

Spring AI1.0 GA 文章:java2ai.com/blog/spring…

SpringAI仓库:github.com/spring-proj…

Spring AI VS Spring AI Alibaba VS LangChain4J 对比

Spring AI Alibaba > Spring AI > LangChain4J

📊 核心对比表格

维度Spring AI (Spring 官方)Spring AI Alibaba (阿里云扩展)LangChain4J (LangChain Java版)
开发方Spring 官方团队(Pivotal)阿里云(Spring AI 二方库)社区开源项目(非官方)
核心定位Spring 生态原生 AI 框架阿里云服务深度集成LangChain 的 Java 实现
技术栈Spring Boot 2.7+/3.xSpring Boot 2.7+/3.x + 阿里云SDKJava 11+ (兼容 Spring)
AI 服务支持OpenAI、Azure OpenAI、HuggingFace、本地模型阿里云百炼/通义千问、OpenAI、AzureOpenAI、Anthropic、HuggingFace、本地模型
Spring 集成✅ 原生支持(自动配置、Bean 管理)✅ 阿里云服务深度集成⚠️ 需手动集成 Spring(无官方支持)
开发体验🌟 极致流畅(@Autowired 直接注入)🌟 阿里云用户无缝衔接⚠️ 需适配 Java 风格(非 Python 思维)
文档/社区✅ Spring 官方文档 + 社区活跃✅ 阿里云文档 + 企业级支持⚠️ 社区较小,依赖 LangChain 中文资料
典型场景Spring Boot 项目集成 AI阿里云生态项目(如钉钉/飞书集成)需跨语言(Python 业务)的 Java 项目

二 Spring AI Alibaba案例 永远的hello world

前置约定

模型: 阿里云百炼模型 / DeepSeek / OpenAI ...

Spring Ai Alibaba 和 Spring AI、Spring Boot的版本兼容问题

依赖项版本要求兼容性说明
Spring Boot3.2.12+✅ 严格兼容仅支持 Spring Boot 3.2.x(最低 3.2.0)
Spring AI0.8.0✅ 必须匹配Spring AI Alibaba 0.8.0 必须依赖 Spring AI 0.8.0
阿里云百炼服务2025 年 4 月后✅ 完美支持通义千问模型(qwen-maxqwen-plus)原生调用
其他版本1.0.0 / 0.9.0❌ 不兼容1.0.0 为谣言,0.9.0 为测试版(已废弃)

配置门道和关键点: OpenAI协议或者Spring AI Alibaba官网推荐模型服务灵积(DashScope) 整合规则 实现一致接口设计和规范。

阿里云百炼平台入口官网

模型地址(专门卖大模型): bailian.console.aliyun.com/

大模型调用三件套

  • 1 获取api-key

image.png

  • 2 获取模型名 模型广场 - 选择模型 - 获取模型名

image.png

  • 3 获取base URL 开发地址

SDK 调用配置的base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1

HTTP 请求地址:POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions image.png

IDEA 建立Project父项目

创建project

image.png

添加bom依赖版本

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.miao</groupId>
    <artifactId>SpringAIAlibaba-test01</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <!--   主干     -->
        <spring-ai.version>1.0.0</spring-ai.version>
        <!--   生态-->
        <spring-ai-alibaba.version>1.0.0.2</spring-ai-alibaba.version>
        <spring-boot.version>3.4.5</spring-boot.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- 1. 先导入Spring Boot核心BOM(基础依赖版本) -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- 2. 再导入官方Spring AI BOM -->
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- 3. 最后导入阿里云Spring AI BOM(覆盖官方版本,保证适配) -->
            <dependency>
                <groupId>com.alibaba.cloud.ai</groupId>
                <artifactId>spring-ai-alibaba-bom</artifactId>
                <version>${spring-ai-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

开发五步骤

1 建Module

image.png

2 改POM

Dashscope 灵积服务协议

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.miao</groupId>
        <artifactId>SpringAIAlibaba-test01</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>SAA-01HelloWorld</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--  模型服务灵积  调用alibaba生态的协议 对标openai协议   -->
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
            <version>1.0.0.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.38</version>
        </dependency>
    </dependencies>
</project>

3 写YML

server.port=8081

#大模型对话中文UTF8编码处理
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8

spring.application.name=SAA-01HelloWorld

#spring-ai-alibaba config
#百炼大模型的api-key
spring.ai.dashscope.api-key=sk-6d5c7b3b89097f
spring.ai.dashscope.url=https://dashscope.aliyuncs.com/compatible-mode/v1
spring.ai.dashscope.model=qwen3-vl-flash

4 主启动

package com.miao.saa;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SAA01HelloWordApplication {
    public static void main(String[] args) {
        SpringApplication.run(SAA01HelloWordApplication.class, args);
    }
}

5 业务类

api-key不可以明文配置进入环境变量

1.k-v键值对设置

image.png

2.修改环境变量

image.png

3.需要重启IDEA

配置类SaaLLMConfig
package com.miao.saa.config;

import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SaaLLMConfig {

    /**
     * 方式一 : 通过配置文件注入 API Key
     */
    @Value("${spring.ai.dashscope.api-key}")
    private String apiKey;


    @Bean
    public DashScopeApi dashScopeApi() {
        return DashScopeApi.builder()
                .apiKey(apiKey)
                .build();
    }
}
对话模型 Chat Model

ChatModel: 交互聊天模型

Spring AI(Spring Artificial Intelligence)框架中,ChatModel 是一个核心接口,用于与大语言模型(LLM, Large Language Model)进行对话式交互。它抽象了与不同 AI 服务商(如 OpenAI、Anthropic、Ollama、Google Vertex AI 等)的聊天 API 的调用细节,使开发者能以统一的方式构建 AI 应用

ChatModel 是 Spring AI 提供的一个高层次抽象接口,代表一个支持多轮对话(chat-style)的 AI 模型。与传统的“单次提示-响应”模型(如 TextModel)不同,ChatModel 支持:

  • 多轮上下文对话(包含系统消息、用户消息、助手回复等)
  • 结构化消息输入(Message 列表)
  • 流式响应(可选)
  • 工具调用(Function Calling / Tool Use)
package com.miao.saa.controller;

import jakarta.annotation.Resource;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@RestController
@RequestMapping(value = "chat")
public class ChatModelController {

    /**
     * 文生文对话模型 ChatModel 调用阿里云的百炼平台
     */
    @Resource
    private ChatModel chatModel;

    /**
     * 普通通用调用 一次性返回
     */
    @GetMapping(value = "call")
    public String doChatCall(@RequestParam(name = "msg", defaultValue = "你是谁") String message) {
        return chatModel.call(message);
    }


    /**
     * 流式调用 有多少返回多少 挤牙膏式返回
     */
    @GetMapping(value = "steam")
    public Flux<String> doChatStream(@RequestParam(name = "msg", defaultValue = "你是谁") String message) {
        return chatModel.stream(message);
    }


}

总结 拓展

如何切换其它模型

直接更改 大模型名称和base-api

image.png

省略配置

可以 省略配置 ,有默认配置alibaba的通义千问

spring.ai.dashscope.model=qwen3-vl-flash 可以省略,有默认
spring.ai.dashscope.url=https://dashscope.aliyuncs.com/compatible-mode/v1 可以省略,有默认

与OpenAI协议对比

openai依赖:

<!--spring-ai-openai-->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>

spring-ai-alibaba依赖:

<!--  模型服务灵积  调用alibaba生态的协议 对标openai协议   -->
<dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
    <version>1.0.0.2</version>
</dependency>

openai配置:

#百炼大模型的api-key
spring.ai.openai.api-key=${qwen-api-key}
spring.ai.openai.url=https://dashscope.aliyuncs.com/compatible-mode/v1
spring.ai.openai.model=qwen3-vl-flash

yml配置文件修改V2

System.getEnv("环境变量")

@Bean
public DashScopeApi dashScopeApi() {
    return DashScopeApi.builder()
            // 从系统环境变量中读取配置
            .apiKey(System.getenv("qwen-api-key"))
            .build();
}