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
相关推荐
GitCode官方14 分钟前
从大语言模型到具身智能:百度百舸 LoongForge 入驻 AtomGit
人工智能·react native·百度·harmonyos·atomgit
Easy_API7 小时前
2.8万亿参数,编程反超GPT-6 Astra:Kimi K3.1 Pro把开源模型推到了哪一步
大数据·人工智能·gpt·深度学习
GlobalInfo7 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
紧跟先前的步伐8 小时前
Go AI Agent 实战 24|工具系统工程化收尾与阶段验收
人工智能·ai·golang·1024程序员节
学长毕设8 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
释厄6238 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
老金带你玩AI9 小时前
集万家所长,一键复制的Agent.md!
人工智能
ZhuoAIStage9 小时前
舞台工艺多专业审图提速:用 AI 智能体编排 A+B+C+G 四段读图流水线
人工智能·自动化·工作流编排·舞台工艺·审图智能体
zzu123zsw9 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
小奶包他干奶奶9 小时前
AI学习——1、机器学习概念
人工智能·机器学习