Spring AI Alibaba 学习day01

AI应用开发框架,spring ai alibaba 与阿里云百炼和通义千问有深度集成

Spring AI Alibaba 基于 Spring AI 构建,因此 SAA 继承了 SpringAI 的所有原子能力抽象并在此基础上扩充丰富了模型、向量存储、记忆、RAG 等核心组件适配,让其能够接入阿里云的 AI 生态

使用步骤:

1.获取api key

2.获取模型名称

3.获取baseUrl

4.父工程pom

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.leot</groupId>
        <artifactId>SSA-leot</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <!-- lookup parent from repository -->
    </parent>
    <groupId>com.leot</groupId>
    <artifactId>SSA-OLLAMA</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SSA-OLLAMA</name>
    <description>SSA-OLLAMA</description>

    <properties>
        <java.version>21</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-ollama</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Ollama 使用

1.依赖引入

复制代码
<dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-ollama</artifactId>
            <version>1.0.0</version>
        </dependency>

2.yaml

复制代码
spring:
  application:
    name: SSA-OLLAMA
  ai:
    dashscope:
        api-key: youapikey
    ollama:
      base-url: http://localhost:11434
      chat:
        model: deepseek-r1:7b
server:
  port: 8080
  servlet:
    encoding:
      charset: UTF-8
      force: true
      enabled: true

3.使用

复制代码
   @Resource
    @Qualifier(value = "ollamaChatModel")
    private ChatModel chatModel;

    @GetMapping("/hello/chatmodel")
    public String hello(@RequestParam(name = "msg",defaultValue = "你是谁") String msg) {
        return chatModel.call(msg) ;
    }
    @GetMapping("/hello/streamodel")
    public Flux<String> helloa(@RequestParam(name = "msg",defaultValue = "你是谁") String msg) {
        return chatModel.stream(msg) ;
    }

chatModel 和chatClient

ChatClient是高级封装,基于ChatModel构建,适合快速构建标准化复杂AI服务,支持同步和流式交互,集成多种高级功能。

ChatClient 不支持依赖注入 ,而chatmodel是支持依赖注入的

复制代码
@RestController
public class ChatClientDemo {
    private final ChatClient dashScopechatClient;

    public ChatClientDemo(@Qualifier("dashscopeChatModel") ChatModel dashScopechatModel) {
        this.dashScopechatClient = ChatClient
                .builder(dashScopechatModel)
                .build();
    }

    @GetMapping("/hello/chatclient")
    public ChatResponse hello(@RequestParam(name = "msg",defaultValue = "你是谁") String msg) {
        return dashScopechatClient.prompt()
                .user(msg)
                .call()
                .chatResponse();
    }
}

SSE流式输出

服务器发送事件

持续推送数据片段到前端

SSE 的核心思想是:客户端发起一个请求,服务器保持这个连接打开并在有新数据时,通过这个连接将数据发送给客户端。这与传统的请求 - 响应模式(客户端请求一次,服务器响应一次,连接关闭)有本质区别。

|--------|------------------------------|---------------------------|
| 特性 | Server-Sent Events (SSE) | WebSocket |
| 通信方向 | 单向(服务器 -> 客户端) | 双向 |
| 协议 | 基于 HTTP | 独立的 ws://wss:// 协议 |
| 数据类型 | 文本 | 文本和二进制 |
| 复杂性 | 简单 | 相对复杂 |
| 连接开销 | 较低 | 较高 |
| 自动重连 | 是 | 需要手动实现 |
| 浏览器支持 | 广泛支持(除 IE) | 广泛支持 |

多模型共存

复制代码
@Configuration
public class SseConfig {

    @Value("${spring.ai.dashscope.api-key}")
    private String apiKey;



    private String DEEPSEEK_MODEL="deepseek-v3.2";
    private String QWEN_MODEL="qwen3-max";

    @Bean(name = "deepseek")
    public ChatModel DeepSeekChatModel( ){
        return DashScopeChatModel.builder()
                .dashScopeApi(DashScopeApi.builder().apiKey(apiKey).build())
                .defaultOptions(DashScopeChatOptions.builder().withModel(DEEPSEEK_MODEL).build())
                .build();
    }
    @Bean(name = "qwen")
    public ChatModel QwenChatModel( ){
        return DashScopeChatModel.builder()
                .dashScopeApi(DashScopeApi.builder().apiKey(apiKey).build())
                .defaultOptions(DashScopeChatOptions.builder().withModel(QWEN_MODEL).build())
                .build();
    }
     @Bean(name = "deepSeekChatClient")
    public ChatClient chatClientdeepseek(@Qualifier("deepseek") ChatModel deepseekChatModel){
        return ChatClient.builder(deepseekChatModel) .build();
    }
    @Bean(name = "qwenChatClient")
    public ChatClient chatClientqwen(@Qualifier("qwen") ChatModel qwenChatModel){
        return ChatClient.builder(qwenChatModel) .build();
    }
相关推荐
回眸&啤酒鸭1 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
AI的探索之旅1 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein1 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
XiHongShi20161 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
美狐美颜SDK开放平台1 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
爱吃苹果的日记本1 天前
离散数学第六课
学习·离散数学
wukangjupingbb1 天前
智能网联汽车安全能力框架
人工智能