Spring AI Alibaba零基础速成(1) ---- 项目创建与配置

1. 创建父项目

2. 配置依赖版本

XML 复制代码
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <packaging>pom</packaging>
    <groupId>com.ting.study</groupId>
    <artifactId>SpringAiAlibaba</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringAiAlibaba</name>
    <description>SpringAiAlibaba</description>

    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>21</java.version>
        <spring-boot.version>3.5.14</spring-boot.version>
        <spring.cloud.version>2025.0.0</spring.cloud.version>
        <spring.cloud.alibaba.version>2025.0.0.0</spring.cloud.alibaba.version>
        <spring-ai.version>1.1.2</spring-ai.version>
        <springAIAlibaba.version>1.1.2.0</springAIAlibaba.version>
        <springAIAlibaba.extensions.version>1.1.2.1</springAIAlibaba.extensions.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- spring boot-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- AI 主 BOM -->
            <dependency>
                <groupId>com.alibaba.cloud.ai</groupId>
                <artifactId>spring-ai-alibaba-bom</artifactId>
                <version>${springAIAlibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- AI 扩展 BOM  -->
            <dependency>
                <groupId>com.alibaba.cloud.ai</groupId>
                <artifactId>spring-ai-alibaba-extensions-bom</artifactId>
                <version>${springAIAlibaba.extensions.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- 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>
            <!-- ====================== 微服务相关 ====================== -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

3. 创建服务

4. 编写配置与依赖

XML 复制代码
server:
  port: 8001
  #大模型对话中文乱码UTF8处理
  servlet:
    encoding:
      enabled: true
      force: true
      charset: UTF-8


spring:
  application:
    name: SAA-01HelloWorld

  # Spring AI 核心配置(对接阿里云百炼DashScope大模型)
  ai:
    #阿里云通义千问专属配置
    dashscope:
      # 🔥 阿里云API-KEY(必须,身份鉴权,从阿里云百炼平台获取)
      api-key: sk-d237a698e877577a8

      # ---------------- 聊天对话模型配置 ----------------
      chat:
        # 模型调用参数配置
        options:
          # 指定使用的模型名称(必须正确,否则调用失败)
          model: qwen-plus
      # SDK调用的基础地址(兼容OpenAI格式接口,固定写法)
      base-url: https://dashscope.aliyuncs.com/

注意:API-KEY通常不会明文配置,可以配置在系统环境变量中:

以如下形式使用

XML 复制代码
<?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.ting.study</groupId>
        <artifactId>SpringAiAlibaba</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>SAA-01HelloWorld</artifactId>

    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</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>
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
        </dependency>
    </dependencies>

</project>

5. 使用示例

创建配置类:

java 复制代码
package com.ting.saa01.config;

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

@Configuration
public class SaaLLMConfig {
    @Value("${spring.ai.dashscope.api-key}")
    public String apiKey;

    @Bean
    public DashScopeApi dashScopeApi() {
        return DashScopeApi.builder().apiKey(apiKey).build();
    }

}

DashScopeApi = 客户端连接工具(身份证 + 通行证)代表阿里云百炼的 HTTP 客户端

  • 只干一件事:发送 请求
  • 携带你的 apiKey(身份凭证)
  • 管理 请求地址、请求头、认证
  • 不关心你用什么模型
  • 不关心你问什么问题
  • 它就是一个通用的请求工具

使用示例:

java 复制代码
@RestController
public class ChatHelloController {
    @Autowired
    ChatModel chatModel;
    /**
     * 通用调用
     * @param msg
     * @return
     */
    @GetMapping("/hello/call")
    public String call(@RequestParam(name = "msg", defaultValue = "你是谁") String msg) {
        String result = chatModel.call(msg);
        return result;
    }

    /**
     * 流式返回
     * @param msg
     * @return
     */
    @GetMapping("/hello/stream")
    public Flux<String> stream(@RequestParam(name = "msg", defaultValue = "你是谁") String msg) {
        return chatModel.stream(msg);
    }
}

ChatModel = 对话模型(真正用来聊天的对象)

  • 调用 DashScopeApi 发请求
  • 组装对话消息
  • 解析 AI 返回的结果

6.切换其它大模型

百炼平台也兼容了第三方大模型,我们可以通过,同一套api进行调用:

这里我们使用质谱ai的大模型,只需修改模型名称即可:

7. 如何使用百炼平台不支持的大模型

如果要使用百炼平台不支持的代码需要使用原生Spring AI接口:

引入依赖:

XML 复制代码
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
        </dependency>

配置:

java 复制代码
spring:
  application:
    name: SAA-01HelloWorld

#  # Spring AI 核心配置(对接阿里云百炼DashScope大模型)
  ai:
    dashscope:
      # SDK调用的基础地址(兼容OpenAI格式接口,固定写法)
      base-url: https://dashscope.aliyuncs.com/
      # 阿里云API-KEY(必须,身份鉴权,从阿里云百炼平台获取)
      api-key: ${AliQWenAPIKey}
      # ---------------- 聊天对话模型配置 ----------------
      chat:
        # 模型调用参数配置
        options:
          # 指定使用的模型名称(必须正确,否则调用失败)
          model: glm-5.1
    #spring ai
    openai:
      base-url: https://ark.cn-beijing.volces.com/api
      api-key: ${doubaoAPIKey}
      chat:
        options:
          model: doubao-seed-2-0-pro-260215

此时要注意,spring ai alibaba 和 spring ai 都会实现 CharModel接口,会导致Spring容器中有两个bean:

需要指定使用哪一个:

java 复制代码
    @Autowired
    @Qualifier("openAiChatModel")
    ChatModel chatModel;
相关推荐
松果财经2 小时前
灵尾科技拿下四场全球大展,开拓爬宠市场新蓝海
人工智能·科技
喜欢coding的谢同学2 小时前
ArthasClaw:用自然语言诊断 JVM 的 AI 助手,告别繁琐的 Arthas 命令
java·人工智能·arthas
淡海水2 小时前
ComfyUI全面掌握-知识点详解——基础示例:文生图与图生图实操(参数+案例)
大数据·人工智能·算法·comfyui
T_Wang_Lab2 小时前
可计算元认知文本分析:癌症经济学语义基线的构建与边界信号检测
人工智能·知识图谱·数字人文·deepseek百万token
belldeep2 小时前
CSR座席模块 如何结合AI 大模型应用?
人工智能·ai·大模型·csr坐席
后端小肥肠3 小时前
漫画工坊续篇 | Coze+Skill 实现老纪漫画完整制作全流程
人工智能·aigc·agent
收放扳机3 小时前
PCB收放板取放方式对比:吸盘与夹板边的技术差异与选型分析
人工智能·科技·自动化·制造·pcb工艺
小黄人软件3 小时前
写一个最小AI Agent智能体真实能用的示例,分别调用mcp和skill
人工智能
Freak嵌入式3 小时前
WIZnet-EVB-Pico2开始,用MicroPython玩转以太网开发
arm开发·人工智能·python·嵌入式硬件·机器人·嵌入式·micropython