作者:技文侠 | AI Agent 实战系列 Day 2从这一篇开始,我们正式动手写代码。不管你是 Spring 老手还是刚入门,跟着走就能跑通。一、为什么是 Spring AI?1.1 痛点:Java 工程师调用大模型太折腾先看看不用框架直接调用 OpenAI API 是什么体验:// 原生 HTTP 调用 —— 又臭又长HttpClientclient=HttpClient.newHttpClient();Stringjson=""" { "model": "gpt-4o", "messages": [{"role": "user", "content": "你好"}] } """;HttpRequestrequest=HttpRequest.newBuilder().uri(URI.create("https://api.openai.com/v1/chat/completions")).header("Content-Type","application/json").header("Authorization","Bearer "+apiKey).POST(HttpRequest.BodyPublishers.ofString(json)).build();HttpResponseStringresponse=client.send(request,HttpResponse.BodyHandlers.ofString());// 还要手动解析 JSON... 手动处理流式... 手动重试...光是一个"调用",就要写 50 行代码。还没算上错误处理、重试、超时、流式响应。1.2 Spring AI 的价值Spring AI = Spring 生态的 AI 统一抽象层就像 Spring Data 统一了数据库访问(JPA、JDBC、MongoDB 换着玩),Spring AI 统一了大模型访问。// Spring AI 调用 —— 一行搞定Stringanswer=chatClient.prompt().user("你好").call().content();核心价值:特性说明统一抽象换模型只改配置,不改代码Spring 生态集成自动装配、依赖注入、配置管理多模型支持OpenAI、Ollama、通义千问、豆包、Claude企业级特性重试、熔断、流式、结构化输出1.3 Spring AI vs LangChain4j很多人会问:Spring AI 和 LangChain4j 该选哪个?维度Spring AILangChain4j定位Spring 生态的 AI 抽象层Java 版的 LangChain学习曲线低(熟悉 Spring 即可)中等(有独立 API 设计)生态集成Spring Boot 原生框架无关Agent 能力基础支持更成熟(多种 Agent 模式)RAG 能力基础支持更完善(多种检索策略)适合场景快速接入、Spring 项目复杂 Agent、独立 AI 应用本系列的结论:两个都用。简单调用大模型 → Spring AI(简洁优雅)复杂 Agent 编排 → LangChain4j(功能强大)两者可以共存于同一项目二、快速入门:5 分钟接入大模型2.1 创建项目!-- pom.xml --parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.4.3/version/parentdependencies!-- Spring AI OpenAI Starter --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-openai-spring-boot-starter/artifactId/dependency!-- Spring Boot Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion1.0.0/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement避坑提示:Spring AI 版本迭代很快,务必使用 BOM 统一版本管理,避免依赖冲突。2.2 配置文件# application.ymlspring:ai:openai:api-key:${OPENAI_API_KEY}chat:options:model:gpt-4otemperature:0.72.3 第一个对话接口@RestController@RequestMapping("/api/chat")publicclassChatController{privatefinalChatClientchatClient;// Spring AI 自动注入 ChatClientpublicChatController(ChatClientchatClient){this.chatClient=chatClient;}@GetMappingpublicStringchat(@RequestParamStringmessage){returnchatClient.prompt().user(message).call().content();}}启动项目,访问http://localhost:8080/api/chat?message=你好,你就能看到大模型的回复。就这么简单。5 分钟,搞定。三、Spring AI 架构深度解析3.1 核心抽象层
Spring AI 入门——Java 接入大模型的第一步
作者:技文侠 | AI Agent 实战系列 Day 2从这一篇开始,我们正式动手写代码。不管你是 Spring 老手还是刚入门,跟着走就能跑通。一、为什么是 Spring AI?1.1 痛点:Java 工程师调用大模型太折腾先看看不用框架直接调用 OpenAI API 是什么体验:// 原生 HTTP 调用 —— 又臭又长HttpClientclient=HttpClient.newHttpClient();Stringjson=""" { "model": "gpt-4o", "messages": [{"role": "user", "content": "你好"}] } """;HttpRequestrequest=HttpRequest.newBuilder().uri(URI.create("https://api.openai.com/v1/chat/completions")).header("Content-Type","application/json").header("Authorization","Bearer "+apiKey).POST(HttpRequest.BodyPublishers.ofString(json)).build();HttpResponseStringresponse=client.send(request,HttpResponse.BodyHandlers.ofString());// 还要手动解析 JSON... 手动处理流式... 手动重试...光是一个"调用",就要写 50 行代码。还没算上错误处理、重试、超时、流式响应。1.2 Spring AI 的价值Spring AI = Spring 生态的 AI 统一抽象层就像 Spring Data 统一了数据库访问(JPA、JDBC、MongoDB 换着玩),Spring AI 统一了大模型访问。// Spring AI 调用 —— 一行搞定Stringanswer=chatClient.prompt().user("你好").call().content();核心价值:特性说明统一抽象换模型只改配置,不改代码Spring 生态集成自动装配、依赖注入、配置管理多模型支持OpenAI、Ollama、通义千问、豆包、Claude企业级特性重试、熔断、流式、结构化输出1.3 Spring AI vs LangChain4j很多人会问:Spring AI 和 LangChain4j 该选哪个?维度Spring AILangChain4j定位Spring 生态的 AI 抽象层Java 版的 LangChain学习曲线低(熟悉 Spring 即可)中等(有独立 API 设计)生态集成Spring Boot 原生框架无关Agent 能力基础支持更成熟(多种 Agent 模式)RAG 能力基础支持更完善(多种检索策略)适合场景快速接入、Spring 项目复杂 Agent、独立 AI 应用本系列的结论:两个都用。简单调用大模型 → Spring AI(简洁优雅)复杂 Agent 编排 → LangChain4j(功能强大)两者可以共存于同一项目二、快速入门:5 分钟接入大模型2.1 创建项目!-- pom.xml --parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.4.3/version/parentdependencies!-- Spring AI OpenAI Starter --dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-openai-spring-boot-starter/artifactId/dependency!-- Spring Boot Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion1.0.0/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement避坑提示:Spring AI 版本迭代很快,务必使用 BOM 统一版本管理,避免依赖冲突。2.2 配置文件# application.ymlspring:ai:openai:api-key:${OPENAI_API_KEY}chat:options:model:gpt-4otemperature:0.72.3 第一个对话接口@RestController@RequestMapping("/api/chat")publicclassChatController{privatefinalChatClientchatClient;// Spring AI 自动注入 ChatClientpublicChatController(ChatClientchatClient){this.chatClient=chatClient;}@GetMappingpublicStringchat(@RequestParamStringmessage){returnchatClient.prompt().user(message).call().content();}}启动项目,访问http://localhost:8080/api/chat?message=你好,你就能看到大模型的回复。就这么简单。5 分钟,搞定。三、Spring AI 架构深度解析3.1 核心抽象层