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
相关推荐
guodingdingh35 分钟前
软件开发工作问题总结0718
java·开发语言·数据库
To_OC1 小时前
大模型蒸馏是啥?说白了就是大厨带徒弟的学问
人工智能·llm·agent
新手来了@click2 小时前
JAVA+AI 简化开发操作|文章被 AI Agent 技术社区收录分享
人工智能
咖啡八杯2 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
GuWenyue2 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
GuWenyue2 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
优橙教育2 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
老云讲算力市场3 小时前
WAIC首日观察:国产算力与机器人加速落地,奇点算力迎来产业新机遇
人工智能·科技
糖果店的幽灵3 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
小林ixn3 小时前
大模型随机说话的秘密:Temperature 和 Top K 深度解析,LangChain 实战调优
人工智能·langchain