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
相关推荐
一点程序10 分钟前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
梁辰兴10 分钟前
百亿美元赌注变数,AI军备竞赛迎来转折点?
人工智能·ai·大模型·openai·英伟达·梁辰兴·ai军备竞赛
C雨后彩虹12 分钟前
计算疫情扩散时间
java·数据结构·算法·华为·面试
PaperRed ai写作降重助手12 分钟前
智能写作ai论文生成软件推荐
人工智能·aigc·ai写作·智能降重·paperred
龙山云仓15 分钟前
No140:AI世间故事-对话康德——先验哲学与AI理性:范畴、道德律与自主性
大数据·人工智能·深度学习·机器学习·全文检索·lucene
2601_9498095916 分钟前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter
IT·小灰灰39 分钟前
30行PHP,利用硅基流动API,网页客服瞬间上线
开发语言·人工智能·aigc·php
vx_BS813301 小时前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计
2601_949868361 小时前
Flutter for OpenHarmony 电子合同签署App实战 - 已签合同实现
java·开发语言·flutter
新缸中之脑1 小时前
编码代理的未来
人工智能