Spring AI Alibaba 从入门到实战:一站式掌握企业级 AI 应用开发

一、前言

随着大模型技术的普及,企业级 AI 应用开发需求激增。Spring AI Alibaba 作为基于 Spring AI 扩展的企业级 AI 开发框架,兼具 Spring 生态原生优势与阿里云生态深度适配能力,成为国内企业开发 AI 应用的首选。本文将从框架选型、快速入门、核心功能到实战案例,全方位讲解 Spring AI Alibaba 的使用,帮助开发者快速落地 AI 应用。

二、AI 应用开发框架与大模型选型

2.1 主流 AI 开发框架对比

企业级 Java AI 应用开发框架主要有 Spring AI、Spring AI Alibaba、LangChain4j 三类,核心能力对比如下:

能力点 Spring AI Spring AI Alibaba LangChain4j
统一 LLM 调用接口 ✅(兼容 + 增强)
RAG(检索增强生成) ✅(集成阿里云向量库) ✅(功能更全)
基础 Agent / 工具调用 ✅(核心能力)
企业级工作流 / Graph
多 Agent 协作
Human-in-the-Loop
Spring 生态原生集成 ✅(核心) ✅(继承 + 增强) ❌(需手动)
阿里云生态深度适配
可观测性(监控 / 日志) ✅(基础) ✅(企业级)

选型建议

  • 快速搭建基础 AI 应用(标准聊天、简单 RAG)→ 选 Spring AI;
  • 国内企业 / 阿里云用户(客服机器人、企业知识库)→ 选 Spring AI Alibaba(强烈推荐);
  • 复杂 AI 应用(无 Spring 依赖)→ 选 LangChain4j。

2.2 大模型部署方案对比

大模型使用主要分「云端(阿里云百炼)」和「本地(Ollama)」两种方案,核心差异如下:

对比维度 阿里云百炼(云端) Ollama 本地部署
部署成本 低(零硬件投入) 中(需本地硬件)
数据隐私 依赖云平台 完全本地可控
使用成本 按调用量付费 一次性硬件投入,免费使用
响应速度 依赖网络 本地极速响应
模型能力 满血版大模型 轻量化模型(受硬件限制)
适用场景 企业级应用、公网服务、快速原型 隐私敏感场景、离线使用、个人开发

三、Spring AI Alibaba 快速入门

3.1 核心概念

  • Spring AI Alibaba:基于 Spring AI 开源项目,完全兼容其核心 API(ChatClient、EmbeddingClient),支持无缝迁移,同时扩展企业级特性;
  • 阿里云百炼 :一站式企业级大模型 MaaS 平台,可理解为 "大模型超市",官网:https://bailian.console.aliyun.com

3.2 环境准备

  • 基础环境:Spring Boot 3 + JDK 17 + Maven;
  • 阿里云百炼配置:
    1. 充值并创建 API Key;
    2. 复制目标模型名(如 qwen3-max、deepseek-v3.2);
    3. 复制调用地址(默认:https://dashscope.aliyuncs.com/compatible-mode/v1)。

3.3 父工程搭建(统一依赖版本)

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>

    <groupId>com.itszb</groupId>
    <artifactId>ssa_parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <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>
            <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>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

3.4 基础对话示例(以 Qwen 为例)

3.4.1 子工程依赖

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">
    <parent>
        <artifactId>ssa_parent</artifactId>
        <groupId>com.itszb</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>01_ssa_hello</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </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>
3.4.2 配置文件(application.yml)

yaml

复制代码
spring:
  ai:
    dashscope:
      api-key: sk-fbf61689d0434296a3c274b02f81**** # 替换为自己的API Key
      base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
      chat:
        options:
          model: qwen3-max
3.4.3 核心代码

Controller

java

复制代码
package com.itszb.controller;

import org.springframework.ai.chat.model.ChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CharController {

    @Autowired
    private ChatModel chatModel;

    @GetMapping("/hello")
    public String hello(
            @RequestParam(value = "msg", defaultValue = "给我讲个笑话") String msg) {
        return chatModel.call(msg);
    }
}

启动类

java

复制代码
package com.itszb;

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

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

访问 http://localhost:8080/hello?msg=欢迎用户,即可获取大模型响应。

3.5 流式响应优化体验

流式响应可逐字符返回结果,提升用户体验,核心代码如下:

java

复制代码
@GetMapping(value="/stream", produces="text/html;charset=UTF-8")
public Flux<String> stream(
        @RequestParam(value = "msg", defaultValue = "你是谁") String msg) {
    return chatModel.stream(msg);
}

四、Spring AI Alibaba 调用本地 Ollama

4.1 Ollama 安装与配置

  1. 下载地址:https://ollama.com/

  2. 自定义安装路径(以 Windows 为例): shell

    复制代码
    # 将OllamaSetup.exe放到D:\Ollama,执行以下命令
    .\OllamaSetup.exe /DIR="D:\Ollama"
  3. 配置模型存储路径:新增系统环境变量 OLLAMA_MODELS=D:\Deepseek,重启 Ollama;

  4. 拉取本地模型(如 deepseek-r1:1.5b): 选择适合自己的版本 : https://ollama.com/library/deepseek-r1

    shell

    复制代码
    ollama run deepseek-r1:1.5b

启动Ollama服务测试,默认会监听 http://localhost:11434 编辑

4.2 调用本地模型

4.2.1 依赖配置

xml

复制代码
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
4.2.2 配置文件

yaml

复制代码
spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: deepseek-r1:1.5b
4.2.3 核心代码

java

复制代码
package com.itszb.controller;

import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ChatController {
    @Autowired
    private OllamaChatModel ollamaChatModel;

    @GetMapping("/ollama/chat")
    public String chat(@RequestParam(value = "msg", defaultValue = "你是谁") String msg) {
        return ollamaChatModel.call(msg);
    }
}

五、核心进阶功能

5.1 ChatClient:更优雅的交互方式

ChatClient 基于 ChatModel 封装,支持链式调用、上下文记忆、Prompt 模板化,核心配置与使用如下:

ChatClient基于ChatModel构建,通过流式API隐藏底层复杂性,提供链式调用的便捷接口

5.1.1 配置 ChatClient Bean

java

复制代码
package com.itszb.config;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ModelConfig {
    @Bean
    public ChatClient chatClient(ChatModel dashScopeChatModel) {
        return ChatClient.builder(dashScopeChatModel).build();
    }
}
5.1.2 调用示例

java

复制代码
@GetMapping("/chatClient/chat2")
public String chat2(
        @RequestParam(value = "msg", defaultValue = "给我讲个笑话") String msg) {
    return chatClient
            .prompt()
            .user(msg)
            .call()
            .content();
}

5.2 多模型配置与切换

在一个应用中同时集成多个大模型,灵活调用:

5.2.1 配置多模型 ChatClient

java

java 复制代码
package com.hg.config;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.ChatOptions;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ModelConfig {
    @Bean
    public ChatClient qwenClient(ChatModel chatModel){
        return ChatClient.builder(chatModel)
                .defaultOptions(ChatOptions.builder().model("qwen3.7-max").build())
                .build();
    }
    @Bean
    public ChatClient deepseekClient(ChatModel chatModel){
        return ChatClient.builder(chatModel)
                .defaultOptions(ChatOptions.builder().model("deepseek-v4-pro").build())
                .build();
    }
}
5.2.2 调用多模型

java

java 复制代码
package com.hg.controller;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ChatController {
    @Autowired
    @Qualifier("qwenClient")
    private ChatClient qwenClient;

    @Autowired
    @Qualifier("deepseekClient")
    private ChatClient deepseekClient;

    @RequestMapping("/qwenChat")
    public String qwenChat(@RequestParam(value = "msg",defaultValue = "你是谁") String msg) {
        return qwenClient
                .prompt()
                .user(msg)
                .call()
                .content();
    }
    @RequestMapping("/deepseekChat")
    public String deepseekChat(@RequestParam(value = "msg",defaultValue = "你是谁") String msg) {
        return deepseekClient
                .prompt()
                .user(msg)
                .call()
                .content();
    }
}

5.3 提示词工程:精准控制 AI 响应

5.3.1 角色预设(系统提示词)

java

复制代码
@Bean
public ChatClient chatClient(ChatModel dashScopeChatModel) {
    return ChatClient.builder(dashScopeChatModel)
        .defaultSystem("你是一名老中医,你精通望闻问切,回答简洁、专业,只讲技术,不闲聊。")
        .build();
}
5.3.2 提示词

java

java 复制代码
@GetMapping("/prompt/chat2")
    public String chat2(
        		@RequestParam(value = "msg", defaultValue = "给我讲个笑话") String msg) {
        return chatClient
                .prompt()
                .system(
                "你是电商平台客服,语气亲切、耐心,会安抚用户,解决订单问题,不闲聊。") //这里设置的提示词会覆盖掉系统提示词(预设模板)
                .user(msg) //用户提示词
                .call()
                .content();
    }

5.4 函数调用:连接 AI 与业务逻辑

函数调用允许大模型触发外部函数(如查数据库、调 API),核心流程:定义函数 → 模型决策调用 → 执行函数 → 返回结果生成最终回答。

六、总结

Spring AI Alibaba 凭借 Spring 生态原生集成、阿里云深度适配、企业级特性全覆盖等优势,成为国内企业开发 AI 应用的最优解。本文从框架选型、环境搭建、基础调用到进阶功能(多模型、ChatClient、提示词、函数调用),覆盖了开发全流程。后续还将讲解 RAG 实现、综合案例等内容,帮助开发者真正落地企业级 AI 应用。

附:版本兼容参考

Spring AI Alibaba Spring AI Spring Boot
1.0.0.2 1.0.0 3.4.5
1.0.0-M6.1 1.0.0-M6 3.4.2
相关推荐
tianxiaxue11 小时前
企微如何使用AI生成推荐话术?
人工智能·企业微信
团象科技1 小时前
梳理中小出海独立站落地阶段关于WordPress 海外主机的实操参考路径
人工智能·深度学习
Arrom2 小时前
DLNA 渲染端排障实战:从 20s 卡顿到 stale subscriber 的两周追凶之旅
android·java
朴马丁2 小时前
构建日化数字创新平台:PLM如何融合AI、物联网数据,驱动智能研发与精准营销
人工智能·物联网·流程行业plm·日化行业
我不介意孤独2 小时前
04-记忆系统为什么向量数据库不够用
数据库·人工智能·资源隔离·agent infra
小程故事多_802 小时前
从人工编写到自主迭代进化,SkillEvolver重构大模型智能体技能生成新范式
人工智能·重构
J-Tony112 小时前
【JVM】三色标记法
java·jvm·算法
wengad2 小时前
机器学习实践理论基础|算法、模型和数据集
人工智能·算法·机器学习
kishu_iOS&AI2 小时前
LLM —— Prompt提示词工程
人工智能·prompt