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
相关推荐
top_designer3 小时前
Firefly 样式参考:AI 驱动的 UI 资产“无限”生成
前端·人工智能·ui·aigc·ux·设计师
q***21603 小时前
springboot中配置logback-spring.xml
spring boot·spring·logback
强盛小灵通专卖员3 小时前
Airsim仿真、无人机、无人车、Lidar深度相机应用研究!
人工智能·无人机·sci·深度强化学习·airsim·小论文
Kuo-Teng4 小时前
LeetCode 139: Word Break
java·算法·leetcode·职场和发展·word·动态规划
MatrixOrigin4 小时前
矩阵起源成功登陆深圳“专精特新”专板,加速 AI 数据智能新进程!
人工智能
陈天伟教授4 小时前
人工智能技术- 语音语言- 02 机器诗人
人工智能
却道天凉_好个秋4 小时前
OpenCV(二十九):高通滤波-索贝尔算子
人工智能·opencv·计算机视觉
百***35514 小时前
Tomcat10下载安装教程
java
脸大是真的好~5 小时前
尚硅谷 SpringCloud 01 分布式概念-工程创建-nacos安装-nacos服务注册与发现-远程调用-负载均衡注解版-配置中心-动态刷新-环境隔离
分布式·spring·spring cloud