一、SpringAI

Spring AI 是 Spring 官方社区维护的开源框架,最初于 2024 年 5 月发布首个 Milestone 版本,在 2025 年 5 月正式发布首个 1.0 GA 版本。Spring AI 侧重 AI 能力构建的底层原子能力抽象以及与 Spring Boot 生态的无缝集成,如模型通信(ChatModel)、提示词(Prompt)、检索增强生成(RAG)、记忆(ChatMemory)、工具(Tool)、模型上下文协议(MCP)等,帮助 Java 开发者快速构建 AI 应用。

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

二、开发一个Spring AI Alibaba的应用

1. 首先登录阿里云的百炼开发平台

地址:https://bailian.console.aliyun.com/#/home

如果有阿里云的账号可以直接登录,然后创建APIKey, 示例如下:

图片

2. 得到APIKey之后,我们就可以使用它来进行开发了

添加maven引用

    <dependencyManagement>  <dependencies>    <dependency>      <groupId>com.alibaba.cloud.ai</groupId>      <artifactId>spring-ai-alibaba-bom</artifactId>      <version>1.0.0.2</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>

    3. application.yml的配置如下:

      spring:  ai:    dashscope:      api-key: sk-xxxxxxx      chat:        options:          model: qwen-plus          temperature0.5      base-url: https://dashscope.aliyuncs.com/compatible-mode/v1

      这里我们使用qwen-plus模型,更多模型请参考如下链接:

      https://bailian.console.aliyun.com/?tab=doc#/doc/?type=model&url=2840914

      4. 通过以上的配置,会自行自定义一个chatModel, 其实现是DashScopeChatModel, 其实Spring AI支持各种大模型,通过引用不同的starter,简单配置一下可以生成不同的Model, 如DeepSeekChatModel,这里主要使用阿里的DashScopeChatModel.

        @SpringBootApplicationpublic class AiApp {  @Autowired  private DashScopeChatModel dashScopeChatModel;
          @Bean  public ChatClient dashScopeChatClient(){      return ChatClient.builder(dashScopeChatModel)              .build();  }}
        

        这里使用了ChatClient, ChatClient 提供了与 AI 模型通信的 Fluent API,使用 ChatClient 可以将与 LLM 及其他组件交互的复杂性隐藏在背后,因为基于 LLM 的应用程序通常要多个组件协同工作(例如,提示词模板、聊天记忆、LLM Model、输出解析器、RAG 组件:嵌入模型和存储),并且通常涉及多个交互,因此协调它们会让编码变得繁琐。当然使用 ChatModel 等原子 API 可以为应用程序带来更多的灵活性,成本就是您需要编写大量样板代码。

        5. 使用ChatClient

          @RestController@RequestMapping("/test")public class TestController {
              @Autowired    private ChatClient dashScopeChatClient;
          
              @GetMapping("/chat1")    public String chat1(String message){        return dashScopeChatClient                .prompt(message)                .call()                .content();    }}

          运行应用程序,可以看到结果如下:

          图片

          6. 使用Flux生成增量内容的效果, stream 方法是一种异步的、持续的获得模型响应的方式:

            @GetMapping("/chat2")public Flux<Stringchat2(String message){    return dashScopeChatClient                .prompt(message)                .stream()                .content();}
            Logo

            火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

            更多推荐