Spring AI 2.0:Hello World

一、简介

Spring Boot 4 + Spring 7 + IDEA 2025 + JDK17 ,Spring AI 的定位是:大模型基础对话 + RAG + MCP + Tool + Memory等基础功能。

Spring AI 2.0 新特性

  1. 传输协议发生了变化:去掉了Spring AI 1.0中的SSE模式(Server Send Events 单向长连接),使用新的模式(MCP Streamable HTTP)。
  2. 在上层ChatClient增加日志拦截器
  3. 增加了Agent的模式:观察思考 - 执行工具 - 反思迭代 - 验证确认

应用场景

  1. 智能客服:在项目中嵌入一个聊天窗,然后通过Tool调用系统内部的Java方法以及通过MCP调用系统外部的功能(如网络搜索、地图、天气等第三方发布的API),原来通过用户点点点来实现的,现在通过聊天完成。
  2. RAG知识库。

二、项目打架

1. 添加依赖 pom.xml

SpringWeb + Spring AI + 第三方厂商(如 DeepSeek 、OpenAI、 Ollama):要考虑性能、成本、以及行业评分。

2. 配置application.properties

获取API Key(创建API Key): https://bailian.console.aliyun.com/cn-beijing?tab=model#/api-key

获取API Host: https://bailian.console.aliyun.com/cn-beijing?tab=api#/api/?type=app&url=2782167

示例代码(获取模型名称、base_url) https://bailian.console.aliyun.com/cn-beijing?tab=model#/model-market/detail/qwen3.7-plus?serviceSite=asia-pacific-china&ref=suggest

API Key配置在环境变量中。

properties 复制代码
# 阿里百炼平台
spring.ai.deepseek.api-key=${DASHSCOPE_API_KEY}
spring.ai.deepseek.chat.model= qwen3.7-plus
spring.ai.deepseek.chat.base-url=https://llm-x2l5ucz6vk2xupzh.cn-beijing.maas.aliyuncs.com/compatible-mode/v1

logging.level.org.springframework.ai=DEBUG

环境变量配置完成后需要重启一下IDEA,否则环境变量加载不到。

3. Bean Configuration

java 复制代码
@Configuration
public class SpringAiConfig {

    @Bean
    public ChatClient chatClient(DeepSeekChatModel deepSeekChatModel) {
        return ChatClient.builder(deepSeekChatModel)
        	.defaultSystem("""
        	# 角色
        	你是一个教育行业的只能小助手
			# 要求
			1. 永远讲中文
			""")
        	.build();
    }
}

4. Controller测试

java 复制代码
@RestController
public class SpringAIController {

    @Autowired
    private ChatClient chatClient;

    @GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> chat(@RequestParam("message") String message) {
        Flux<String> content = chatClient.prompt()
                .user(message)
                .stream()
                .content()
                .withConcat(Flux.just("[complete]"));  // 自定义一个结束标记,前端解析到就不会再请求,表示本轮会话全部结束
        return content;
    }
}
相关推荐
IT_陈寒4 小时前
React Hooks闭包陷阱差点让我加班到凌晨
前端·人工智能·后端
揽秀亭长4 小时前
视频转文字工具对比:从字幕生成到文本整理
人工智能·音视频
工业甲酰苯胺4 小时前
AI低代码破局:制造业数智转型落地实战
大数据·人工智能·低代码·制造
黑马程序员毕设4 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
CaseyWei4 小时前
Harness 架构 Multi‑Agent(多智能体)完整深度解析
人工智能·ai·架构·harness
木井巳4 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
白山编程大哥4 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
devpotato5 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
eaglewgs5 小时前
关于AI书写测试用例,谈一下我的思考
人工智能·测试开发·ai·测试用例·agent·测试经验·agent测试开发
熊野君5 小时前
第 4 章 技术产品经理核心能力模型
大数据·人工智能·产品经理