跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaAIjava

Spring AI 入门:DeepSeek 集成、角色设定与流式输出

综述由AI生成介绍基于 Spring AI 框架集成 DeepSeek 大模型的方法。内容包括 Maven 项目依赖配置、通过 ChatClient 发送请求获取响应、自定义系统角色(System Prompt)以及使用 SSE 流式输出实现前端实时展示。此外,还提供了在本地环境访问外部 API 时配置 HTTP/HTTPS 代理的解决方案。

暖阳发布于 2026/3/30更新于 2026/5/2428 浏览
Spring AI 入门:DeepSeek 集成、角色设定与流式输出

Spring AI 快速入门

官方资源

  • Spring AI 官网

创建项目

1. Maven 配置

引入 Spring Boot 和 Spring AI 依赖。

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.qi</groupId>
    <artifactId>springAI_demo06</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <dependencyManagement>
        <dependencies>
            <!-- Spring Boot BOM -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>3.4.3</version>
                pom
                import
            
            
            
                org.springframework.ai
                spring-ai-bom
                1.0.0
                pom
                import
            
        
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.ai
            spring-ai-starter-model-deepseek
        
    

<type>
</type>
<scope>
</scope>
</dependency>
<!-- Spring AI BOM -->
<dependency>
<groupId>
</groupId>
<artifactId>
</artifactId>
<version>
</version>
<type>
</type>
<scope>
</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>
</groupId>
<artifactId>
</artifactId>
</dependency>
<!-- Spring AI DeepSeek Model -->
<dependency>
<groupId>
</groupId>
<artifactId>
</artifactId>
</dependency>
</dependencies>
</project>

2. 配置文件 (application.yml)

spring:
  ai:
    deepseek:
      api-key: sk-xxxxxxxxx
      base-url: https://api.deepseek.com

3. 基础调用示例

使用 ChatClient 发送用户消息并获取文本响应。

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/my")
class MyController {
    private final ChatClient chatClient;

    public MyController(ChatClient.Builder chatClientBuilder) {
        this.chatClient = chatClientBuilder.build();
    }

    @GetMapping("/ai")
    public String generation(@RequestParam("message") String message) {
        return this.chatClient.prompt()
                .user(message)
                .call()
                .content();
    }
}

预设系统角色

通过自定义 ChatClient Bean 设置 System Prompt,定义 AI 的身份和行为准则。

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Config {
    @Bean
    ChatClient chatClient(ChatClient.Builder builder) {
        return builder.defaultSystem("你现在是斩神神经病院的一个客服,需要为客户解答。我们神经病院的院长叫林七夜,他最擅长的就是精神分裂治疗。").build();
    }
}

流式输出 (SSE)

使用 Flux<String> 实现按 Token 流式返回内容,前端可实时展示。

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@RestController
public class StreamController {
    private final ChatClient chatClient;

    public StreamController(ChatClient.Builder builder) {
        this.chatClient = builder.build();
    }

    @GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> stream(@RequestParam("message") String message) {
        return chatClient.prompt()
                .user(message)
                .stream()
                .content();
    }
}

注意:确保 produces 设置为 MediaType.TEXT_EVENT_STREAM_VALUE 以支持 SSE 协议。

代理配置

若访问外部 API 需经过代理,可在启动类中设置 JVM 属性。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ApplicationProxy {
    public static void main(String[] args) {
        // 代理配置
        String proxyHost = "127.0.0.1";
        int proxyPort = 7897;

        System.setProperty("http.proxyHost", proxyHost);
        System.setProperty("http.proxyPort", String.valueOf(proxyPort));
        System.setProperty("https.proxyHost", proxyHost);
        System.setProperty("https.proxyPort", String.valueOf(proxyPort));
        System.setProperty("socksProxyHost", proxyHost);
        System.setProperty("socksProxyPort", String.valueOf(proxyPort));

        SpringApplication.run(ApplicationProxy.class, args);
    }
}

目录

  1. Spring AI 快速入门
  2. 官方资源
  3. 创建项目
  4. 1. Maven 配置
  5. 2. 配置文件 (application.yml)
  6. 3. 基础调用示例
  7. 预设系统角色
  8. 流式输出 (SSE)
  9. 代理配置
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Linux Shell 脚本中 date 命令常用用法
  • 前端虚拟列表核心原理与 React 实战实现
  • 计算机视觉基础与实战:从图像处理到模型应用
  • Python 函数详解:定义、参数、返回值与作用域
  • 基于 C++11 手写 Promise 实现原理及与 std::promise 对比
  • OpenClaw 本地部署配置飞书机器人指南
  • AnythingLLM:零成本搭建私人 ChatGPT,支持主流大模型
  • OpenClaw 本地部署飞书机器人配置指南
  • FunASR 离线文件转写服务开发指南
  • OpenClaw 安装与飞书机器人接入指南
  • 前端实现 Word 文档在线预览方案
  • 基于 DeepFace 与 OpenCV 的实时情绪分析系统
  • Python Selenium 浏览器自动化基础与实战教程
  • 基于 Cursor 和 Claude 生成 APP 原型 UI 设计稿
  • 前端函数防抖详解:原理、手写与 Lodash 实战
  • 无经验如何转型为 AI 产品经理
  • Windows安装Neo4j保姆级教程(图文详解)
  • AI Agent 架构:基础组成模块深度解析
  • CycleGAN 原理详解与图像转换实现
  • 使用双指针解决链表问题

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online