Spring AI 与阿里云 AI 快速入门:从零搭建智能应用

引言

之前在SpringCloud微服务与大模型之间有一个隔阂,而Spring AI AIibaba的出现就是为了把这两个贯通起来。废话不多说,直接快速入门。

开发手册:SpringAI AIibaba

1. 环境与工具准备

在开始编码之前,请确保你的开发环境已满足以下要求:

  • Java: JDK 17 或更高版本。
  • 构建工具: Maven 3.6+ 或 Gradle 7.x+。本文将以 Maven 为例。
  • IDE: 推荐使用 IntelliJ IDEA、VS Code 或 Eclipse。
  • 阿里云账号: 你需要一个阿里云账号,并开通 DashScope(灵积)模型服务平台,以获取 API Key。

3. 配置阿里云 AI 连接

Spring AI 通过 application.properties 或 application.yml 文件来配置与 AI 服务的连接。我们需要添加阿里云 DashScope 的配置。

  1. 获取阿里云 API Key:

    • 登录 阿里云控制台。
    • 进入 DashScope(灵积) 控制台。
    • 在 API-KEY 管理 页面,创建一个新的 API Key 并妥善保存。
  2. 配置项目 :

    打开 src/main/resources/application.properties 文件,添加以下配置:

properties 复制代码
#springailibaba
spring.ai.dashscope.api-key=${qianwen}
spring.ai.dashscope.chat.options.model=qwen-plus

配置说明:

  • spring.ai.alibaba.dashscope.api-key: 填入你从阿里云获取的 API Key。这个建议直接配置在环境变量中可以避免泄露
  • spring.ai.alibaba.dashscope.chat.options.model: 指定默认使用的模型。qwen-plus
  • 之前可能还有个baseURL,但是目前看开发手册中好像不需要再写了。

4. Maven依赖

4.1父代Maven

1.我们需要创建一个父子模块来进行后续的学习,结构如下:

2.接下来我们在父模块中导入依赖进行版本控制

java 复制代码
<?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.ai</groupId>
    <artifactId>SpringAI</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>SAA-01HelloWord</module>
    </modules>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-boot.version>3.5.13</spring-boot.version>
        <spring-ai.version>1.1.2</spring-ai.version>
        <spring-ai-alibaba.version>1.1.2.1</spring-ai-alibaba.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.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
            <!-- Source: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


</project>

注意三者的版本兼容如下:

spring-ai-alibaba-bom

java 复制代码
<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>
  • spring-ai-alibaba-bom:阿里对 Spring AI 的扩展实现,兼容并依赖 Spring AI,专门对接阿里大模型(通义千问、通义万相等)。

spring-ai-bom

java 复制代码
dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
  • spring-ai-bom:Spring 官方 AI 框架,基于 Spring Boot 构建,统一管理 Spring AI 核心组件

spring-boot-dependencies

java 复制代码
<dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
  • Spring-boot-dependencies:最底层基石,管理所有 Spring Boot 官方组件的版本。

4.2子代Maven

java 复制代码
<?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.ai</groupId>
        <artifactId>SpringAI</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>SAA-01HelloWord</artifactId>
    <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>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

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

</project>

5.Controller

java 复制代码
package com.ai.controller;

import jakarta.annotation.Resource;
import org.springframework.ai.chat.model.ChatModel;
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
public class ChatHelloController {
    @Resource
    ChatModel dashScopeChatModel;

    /**
     * 普通调用
     * **/
    @RequestMapping("/chat/call")
    public String chatHello(@RequestParam(value = "msg",defaultValue = "你是谁") String msg){
        return dashScopeChatModel.call(msg);


    }
    /**
     * 流式调用
     * **/
    @RequestMapping("/chat/stream")
    public Flux<String> chatHelloFlux(@RequestParam(value = "msg",defaultValue = "你是谁") String msg){
      return  dashScopeChatModel.stream(msg);


    }
}
  • call()是普通调用等 AI 把所有内容全部想完,一次性给你返回一整段文字。
  • stream()是流式调用:像 ChatGPT 那样一个字一个字往外蹦,边思考边输出。

6.测试

相关推荐
ViperL12 分钟前
[智能计算]AutoDiffusion-基于进化NAS的扩散模型
人工智能·深度学习·计算机视觉
FITA阿泽要努力28 分钟前
用 Hooks 给 Claude Code 加规矩
人工智能·agent
摩尔元数40 分钟前
制造业AI落地难?摩尔元数用智能体破局
人工智能
Data-Miner1 小时前
人工智能怎么做数据分析?从准备到出报告的实操指南
人工智能·数据挖掘·数据分析
数字会议深科技1 小时前
会议方案设计应如何融入 AI 和物联网等领先会议技术
人工智能·物联网·会议解决方案·会议设计方案
专业程序开发源1 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
Alinket1 小时前
不训练模型也能加 AI:5 套可直接量产的组合方案
人工智能·物联网·ai·健康医疗·无线通信·智能硬件·iot
林伽一1 小时前
推理链路与资本成本同时收紧,AI 工程进入算细账阶段|2026年10月21日
人工智能·科技·ai·架构
天远API1 小时前
零信任架构实战:基于天远运营商二要素V即时版构建自动化分时租赁出行会员身份一致性审核网关
运维·人工智能·架构·自动化