Spring-Ai-Alibaba [04] 04-llm-platform-custom-demo

Spring-Ai-Alibaba 04 04-llm-platform-custom-demo

概述

本文是 Spring AI Alibaba 框架学习系列第四篇,

介绍 如何调用其他平台的大模型,

当前 Demo 中,同时使用 DeepSeek 平台大模型、官网地址:https://api-docs.deepseek.com/zh-cn/。

代码上传至 Gitee:https://gitee.com/xbjct/spring-ai-alibaba-demo

开发环境

  • 基础框架: Spring Boot 3.5.14
  • AI 框架: Spring AI 1.1.2 + Spring AI Alibaba 1.1.2.2
  • 大模型: 阿里云通义千问 (qwen-plus)
  • 构建工具: Maven 3.9.11
  • JDK 版本: 21.0.10

项目结构

pom.xml 文件

xml 复制代码
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.junjiu.spring.ai.alibaba.demo</groupId>
        <artifactId>Spring-AI-Alibaba-Demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>04-llm-platform-custom-demo</artifactId>
    <packaging>jar</packaging>
    <description>
        Demo01 ~ Demo03 的LLM 选用的一直是百炼平台,
        当前 Demo04 选用 DeepSeek:https://api-docs.deepseek.com/zh-cn/
    </description>

    <name>04-llm-platform-custom-demo</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-deepseek</artifactId>
        </dependency>
    </dependencies>
</project>

config 配置类

java 复制代码
package com.junjiu.spring.ai.alibaba.demo.config;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.deepseek.DeepSeekChatModel;
import org.springframework.ai.deepseek.DeepSeekChatOptions;
import org.springframework.ai.deepseek.api.DeepSeekApi;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * program: Spring-AI-Alibaba-Demo
 * ClassName: LLMConfig
 * description:
 *
 * @author: 君九
 * @create: 2026-05-22 22:39
 * @version: 1.0
 **/
@Configuration
public class LLMConfig {

    // 从配置文件读取
    @Value("${spring.ai.dashscope.base-url}")
    private String baseUrl;

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

    @Value("${spring.ai.dashscope.chat.options.model}")
    private String model;


    @Bean
    public DeepSeekChatModel deepSeekChatModel() {
        return DeepSeekChatModel.builder()
                .deepSeekApi(DeepSeekApi.builder()
                        .baseUrl(baseUrl)
                        .apiKey(apiKey)
                        .build())
                .defaultOptions(
                        DeepSeekChatOptions.builder()
                                .model(model)
                                .build()
                )
                .build();
    }
    @Bean(name = "deepSeekChatClient")
    public ChatClient deepSeekChatClient() {
        return ChatClient.create(deepSeekChatModel());
    }
}

控制层

java 复制代码
package com.junjiu.spring.ai.alibaba.demo.controller;

import jakarta.annotation.Resource;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

/**
 * program: Spring-AI-Alibaba-Demo
 * ClassName: DeepSeekController
 * description:
 *
 * @author: 君九
 * @create: 2026-05-22 22:50
 * @version: 1.0
 **/
@RestController
@RequestMapping("/deepseek")
public class DeepSeekController {

    @Resource(name = "deepSeekChatClient")
    ChatClient deepSeekChatClient;

    /**
     * 聊天对话
     * @param message
     * @return
     */
    @RequestMapping("/chat")
    public Flux<String> chat(@RequestParam(name = "message", defaultValue = "你是谁?") String message) {
        return deepSeekChatClient.prompt()
                .user(message)
                .stream()
                .content();
    }
}

启动类

java 复制代码
package com.junjiu.spring.ai.alibaba.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.core.env.Environment;

/**
 * program: Spring-AI-Alibaba-Demo
 * ClassName: LlmPlatformApplication
 * description:
 *
 * @author: 君九
 * @create: 2026-05-22 22:35
 * @version: 1.0
 **/
@SpringBootApplication
public class LlmPlatformApplication {

    public static void main(String[] args) {
        SpringApplication.run(LlmPlatformApplication.class, args);
    }

    public ApplicationListener<ApplicationReadyEvent> readyEventApplicationListener(Environment env) {
        return event -> {
            System.out.println("\n🎉========================================🎉");
            System.out.println("✅ Application is ready!");
            System.out.println("AIALI_API_KEY=" + System.getenv("AIALI_API_KEY"));
            System.out.println("🎉========================================🎉\n");
        };
    }
}

验证

打开浏览器访问:http://localhost:5826/deepseek/chat

代码上传至 Gitee:https://gitee.com/xbjct/spring-ai-alibaba-demo

若有转载,请标明出处:https://blog.csdn.net/CharlesYuangc/article/details/161344688

相关推荐
机器人零零壹27 分钟前
技术白皮书:iRobotCAM如何解决机器人激光切割应用中的核心难点,从CAD离线编程到双目视觉定位与轨迹自适应提升复杂空间曲线切割的精度、效率与柔性化水平
人工智能·算法
电子元件小说家1 小时前
2026年四季度电感市场观察:AI算力与汽车电子驱动下的选型与验证建议智能硬件
人工智能·汽车
网易CodeWave-小码哥2 小时前
支持多模块 Java 微服务导入|CodeWave SDD V4.5.10 上线
人工智能
AI你一生一世2 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
belldeep2 小时前
python:genesis-world, Genesis-Embodied-AI
人工智能·python·ai·genesis
云-缩影2 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
怕浪猫2 小时前
小程序成长计划上新:10 亿 Token 现在能调 DeepSeek-v4.1-flash了
人工智能·aigc·ai编程
ss2732 小时前
为什么PostgreSQL适合AI场景?
数据库·人工智能·postgresql
瑞克-桑切斯2 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
七牛云行业应用3 小时前
DeepSeek Super-agent 与 Grok Bot:开源 Agent 架构和聊天助手有何区别
人工智能·ai·架构·ai编程