Spring AI Alibaba

Spring AI Alibaba是一款Spring AI为基础,深度集成百炼平台,支持多种大模型开发的AI框架。

所以Spring AI Alibaba开源项目就是基于Spring AI构建,是阿里云百炼平台,在Java AI应用领域开发的最佳实践,提供高层次的AI API抽象与云原生基础设施集成方案。

Spring AI Alibaba的官网:Spring AI Alibaba 官网_快速构建 JAVA AI 应用

对于Spring AI Alibaba的学习文档:https://java2ai.com/docs/1.0.0.2/tutorials/basics/concepts/?spm=0.29160081.0.0.25a974b1WVFya0

我们对比一下三者的区别,我们看一下。

对比维度 Spring AI Spring AI Alibaba LangChain4j
定位 AI 应用开发底层框架,提供 AI 开发需要的底层原子抽象 AI 智能体开发框架,提供从 Agent 构建到 workflow 编排、RAG 检索、模型适配等能力 简化将 LLM 集成到 Java 应用程序中的过程,提供统一 API 和全面的工具箱
Spring Boot 集成 原生支持 原生支持 社区适配
模型支持 支持 OpenAI、Azure OpenAI、Amazon Bedrock 等主流模型,包括聊天、文生图、音频转录等多种类型 支持 OpenAI、Ollama、阿里云 Qwen 等多种大模型,模型类型丰富 支持 15 + 个流行的 LLM 提供商,如 OpenAI、Google Vertex AI 等
向量数据库 支持 Azure Vector Search、Chroma、Milvus 等主流向量数据库 支持阿里云 ADB、OpenSearch 等主流向量数据库 支持 20 + 个嵌入存储,如 Pinecone、Milvus 等
函数调用 支持,可声明 Java.util.function 实现供 OpenAI 模型使用 支持,有 20 + 官方工具集成 支持,提供函数调用工具
提示词管理 无专门的提示词管理功能 通过 Nacos 配置中心进行提示词管理 无专门的提示词管理功能
Chat Memory 支持 JDBC、Neo4j、Cassandra 等 支持优化版的 JDBC、Redis、ElasticSearch 等 有多种实现适配,如消息窗口和令牌窗口等
工作流 支持,使用 Spring AI Alibaba Graph 编排包含 LLM、工具等节点的工作流
多智能体 支持,可创建多个相互协作的智能体,解决复杂业务场景
可观测性 支持 支持,可接入阿里云 ARMS 部分支持
社区活跃度与文档健全性 官方社区,活跃度高,有丰富的文档、示例应用等 官方社区,活跃度高,提供详细的文档和丰富的示例仓库 个人发起社区,有一定的活跃度和丰富的示例

我们首先要想使用SSA的话,首先我们需要接入阿里百炼平台的通义模型https://bailian.console.aliyun.com

获取我们需要的三件套

我们需要先获取api key

然后获取模型,在大模型广场选择自己喜欢的即可。qwen-plus

获取模型名之后然后获取baseURL开发地址:https://dashscope.aliyuncs.com/compatible-mode/v1

通过idea进行模型的调用。

我们只需要简单的创建一个项目即可,在maven的文件里面引入:

XML 复制代码
<properties>
  <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>
​
<dependencies>
  <dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
  </dependency>
</dependencies>

当我们的配置进行好设置之后,我们就需要编写启动类,然后定义约束:

注意我们的api-key不应该直接写入配置文件当中,可以定义一个Config类进行单独的设置,

java 复制代码
@Configuration
public class SAAConfig {
​
​
    @Value("${spring.ai.dashscope.api-key}")
    private String apiKey;
​
    @Bean
    public DashScopeApi dashScopeApi() {
        return DashScopeApi.builder().apiKey(apiKey).build();
    }
}

我们进行设置之后,就可以将我们的配置文件里面的值进行替换掉,这样更加的安全。当我们设置好之后现在我们就可以开始调用大模型了,但是我们怎么进行交互呢,对于和大模型进行对话交互我们可以使用ChatModel接口进行使用。我们在学习文档里面就可以找到,我们只进行对话的交互,所以我们使用ChatModel即可

我们对于控制台的使用可以这样使用:

java 复制代码
@RestController
public class ChatHelloController {
​
    @Resource
    private ChatModel chatModel;
​
    @GetMapping("/hello")
    public String hello(@RequestParam(name = "message",defaultValue= "hello")
                            String message) {
        String result = chatModel.call(message);
        System.out.println(result);
        return  result;
    }
    //流式输出,也就是慢慢的进行输出。
     @GetMapping("/hello/stream")
    public Flux<String> helloStream(@RequestParam(name = "message",defaultValue= "hello")
                            String message) {
         return chatModel.stream(message);
    }
​
}

这样我们就可以进行简单的调用大模型了,输出结果就是

现在我们已经可以进行简单的使用了,当然了如果我们现在需要进行简单大模型替换的话,我们应该怎么办呢?只需要进行这样的简单替换我们就可以使用了。

当我们进行配置的时候,如果不进行指定,那么我们会默认使用通义千问,只需要保留API-key即可。当我们想使用spring ai的时候只需要换一下dashScope的依赖即可,然后三件套改成以下形式也是一样的。

XML 复制代码
#通过openai协议调用通义千问
#spring.ai.openai.api-key=$faliOwen-api}
#spring.ai.openai.base-url=https://dashscope.aliyuncs.com/compatible-mode
#spring.ai.openai.chat.options.model=qwen-plus
相关推荐
whaosoft-1432 小时前
51c自动驾驶~合集36
人工智能
Psycho_MrZhang2 小时前
丢弃法-Dropout
人工智能·深度学习·机器学习
yueyuebaobaoxinx2 小时前
2025 AI 图景:从工具革命到生态重构的生存逻辑
人工智能·重构
拉一次撑死狗2 小时前
TensorFlow(1)
人工智能·python·tensorflow
m0_650108242 小时前
【论文精读】Group Collaborative Learning for Co-Salient Object Detection
人工智能·计算机视觉·论文精读·gam·共显著性目标检测·组协同学习·gcm
老华带你飞2 小时前
学生信息管理系统|基于Springboot的学生信息管理系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·学生信息管理系统
聪明的笨猪猪3 小时前
Java SE “泛型 + 注解 + 反射”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
磨十三3 小时前
C++ 类型转换全面解析:从 C 风格到 C++ 风格
java·c语言·c++
董厂长3 小时前
SubAgent的“指令漂移 (Instruction Drift)“困境
人工智能·agent·mcp·subagent