Spring AI Alibaba入门学习(一)

一、概念

Spring AI Alibaba是一款以Spring AI为基础,深度集成百炼平台,支持ChatBot、工作流、多智能体应用开发模式的AI框架。

Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案和企业级 AI 应用生态集成。Agentic AI Framework for Java Developers。

SpringAI官网:https://spring.io/projects/spring-ai#learn

Spring AI Alibaba:https://java2ai.com/

阿里云百炼平台:https://bailian.console.aliyun.com/console?tab=model#/model-market

我个人的简单理解就是通过java构建ai应用的桥梁。

附上官网一张图:

二、第一个Demo

2.1 前置工作(大模型调用三件套)

  • 获取平台api-key
  • 获取模型名

在模型广场-全部模型里找到要调用的模型,点进去,复制模型code

  • 获取baseurl

2.2 配置及编码

  • 新建maven父工程


    4.0.0

    com.wx
    spring-ai-alibaba
    1.0-SNAPSHOT
    pom
    SpringAIAlibaba-Maven

    demo1

    复制代码
      <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <maven.compiler.source>21</maven.compiler.source>
      <maven.compiler.target>21</maven.compiler.target>
      <java.version>21</java.version>
      <spring-boot.version>3.5.5</spring-boot.version>
      <spring-ai.version>1.0.0</spring-ai.version>
      <SpringAIAlibaba.version>1.0.0.2</SpringAIAlibaba.version>
    org.springframework.boot spring-boot-dependencies ${spring-boot.version} pom import com.alibaba.cloud.ai spring-ai-alibaba-bom ${SpringAIAlibaba.version} pom import org.springframework.ai spring-ai-bom ${spring-ai.version} pom import org.springframework.boot spring-boot-maven-plugin ${spring-boot.version} spring-milestones Spring Milestones https://repo.spring.io/milestone false

主要版本:

复制代码
<java.version>21</java.version>
    <spring-boot.version>3.5.5</spring-boot.version>
    <spring-ai.version>1.0.0</spring-ai.version>
    <SpringAIAlibaba.version>1.0.0.2</SpringAIAlibaba.version>
  • 新建子工程

pom如下,主要引入灵积服务依赖

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

    <artifactId>demo1</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>
        <!-- 引入 springai alibaba DashScope 模型适配的 Starter -->
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--hutool-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.22</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.9.0</version>
                <configuration>
                    <compilerArgs>
                        <arg>-parameters</arg>
                    </compilerArgs>
                    <source>21</source>
                    <target>21</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>


</project>
  • 添加yml配置文件

    server:
    port: 8001
    servlet:
    encoding:
    enabled: true
    force: true
    charset: UTF-8

    spring:
    application:
    name: demo1

    复制代码
    # SpringAI Alibaba 配置
    ai:
      dashscope:
        api-key: ${aliQwen-api}
        base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
        chat:
          options:
            model: qwen-plus

    大模型对话中文乱码UTF8编码处理(已在server.servlet.encoding中配置)

其中,api-key配置系统环境变量,如下,key是自己命名的aliQwen-api,值就是 百炼平台获取的秘钥。秘钥,base-url和model名均从以上前置工作中获取。

  • 配置类

    package com.wx.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;

    /**

    • @Description

    • @author: wangxin

    • @date: 2026/3/7 20:40
      */
      @Configuration
      public class LLMConfig {

      /**

      • 方式1:${}
      • 持有yml文件配置:spring.ai.dashscope.api-key={aliQwen-api} */ @Value("{spring.ai.dashscope.api-key}")
        private String apiKey;

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

    }

  • controller

    package com.wx.controller;

    import jakarta.annotation.Resource;
    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;
    import reactor.core.publisher.Flux;

    /**

    • @Description

    • @author: wangxin

    • @date: 2026/3/7 20:42
      */
      @RestController
      public class ChatController {

      @Resource
      private ChatModel chatModel;

      @GetMapping("/test/chat")
      public String testChat(@RequestParam(name = "msg", defaultValue = "你是谁") String msg) {

      复制代码
       String call = chatModel.call(msg);
       System.out.println("大模型返回:" + call);
       return call;

      }

      @GetMapping("/test/stream")
      public Flux testStream(@RequestParam(name = "msg", defaultValue = "你是谁") String msg) {

      复制代码
       return chatModel.stream(msg);

      }

    }

  • 测试

chat和stream输出的区别就是一个是一次性返回,一个是像挤牙膏一样一点一点返回。

  • 切换大模型

类似千问,切换deepseek其他大模型,只需要替换base-url和model名称即可。

以上内容基于尚硅谷视频学习后总结。

相关推荐
kirk_wang2 小时前
Agent Plan:从“模型订阅“到“Agent能力订阅“,火山引擎如何重新定义AI Agent开发范式
人工智能·火山引擎·agent plan
云和数据.ChenGuang2 小时前
深度学习在鲲鹏HPC下的学习
人工智能·深度学习·学习·机器学习·数据挖掘
百度Geek说3 小时前
电商搜索H1提升AI-Coding质量实践 RD & QA
人工智能
学习要积极3 小时前
Spring AI Alibaba-ChatClient
java·人工智能·spring
MartinYeung53 小时前
[论文学习]使用使用者层级差分隐私(User-Level DP)微调大型语言模型(LLM)
人工智能·学习·语言模型
财经资讯数据_灵砚智能3 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年5月29日
人工智能·python·信息可视化·自然语言处理·ai编程
智慧景区与市集主理人3 小时前
巨有科技联营分账系统|多业态统一管控,破解景区分账结算难题
大数据·人工智能·科技
触底反弹3 小时前
从数据结构到 Prompt 设计:前端工程师的 AI 时代进阶指南
javascript·人工智能·python
好好风格3 小时前
这个开源项目,把本地大模型做成会说话的 Live2D 桌宠
人工智能·python·开源
程序猿阿伟3 小时前
《OpenClaw远程网关:密钥体系与长连接的深度拆解》
人工智能