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;
    }
}
相关推荐
qq_589666051 小时前
Java继承
java·开发语言
AI产品测评官1 小时前
从技术选型视角:AI招聘寻源类Agent的技术架构与落地实测分析
人工智能·架构·求职招聘
HIT_Weston1 小时前
173、【Agent】【OpenCode】TuiThreadCmd(cmd工厂)
人工智能·agent·opencode
八角.。1 小时前
面向对象-多态
java·开发语言
政采云技术1 小时前
工单处理的智能革命:钉钉AI助理辅助系统探索
人工智能·后端·ai编程
qq_422152571 小时前
Token到底是什么?Tokenizer分词机制与中文token开销入门科普
人工智能·python·深度学习
盗理者1 小时前
AI Agent 技能分享|从零实现一个 MCP Server,让 AI Agent 安全调用内部系统
网络·人工智能·安全·agent
@卓越俊逸_角立杰出@1 小时前
快速学会 Java 实现意图识别:从规则匹配到 BiLSTM 分类器
java·开发语言·人工智能