仙桃市网站建设_网站建设公司_内容更新_seo优化
2026/1/18 21:20:40 网站建设 项目流程

轻松入门 Spring AI 综合案例
(2025-2026 比较实用且完整的入门组合示例)

以下是一个相对完整的、适合初学者到中级的 Spring AI 综合案例,包含目前最常用的几种核心能力:

功能清单: 1. 普通对话(ChatClient 最基础用法) 2. 流式回答(打字机效果) 3. 会话记忆(短期记忆) 4. 系统提示词工程 5. RAG 简单实现(基于内存向量存储) 6. 函数调用(Function Calling / Tools) 7. 结构化输出(JSON模式 + Bean转换)

完整综合案例代码(单文件版)

@RestController@RequestMapping("/ai/demo")@RequiredArgsConstructor@Slf4jpublicclassAiDemoController{privatefinalChatClientchatClient;// 1. 最基础聊天@GetMapping("/chat")publicStringsimpleChat(@RequestParamStringmessage){returnchatClient.prompt().user(message).call().content();}// 2. 流式回答(前端最推荐)@GetMapping(value="/stream",produces=MediaType.TEXT_EVENT_STREAM_VALUE)publicFlux<String>streamChat(@RequestParamStringmessage){returnchatClient.prompt().user(message).stream().content();}// 3. 带记忆 + 系统角色(最常用的组合写法)privatefinalChatMemorychatMemory=newMessageWindowChatMemory(10);// 保留最近10条@GetMapping("/memory")publicStringchatWithMemory(@RequestParamStringsessionId,@RequestParamStringmessage){returnchatClient.prompt().system(""" 你是一位友善、幽默、说话很接地气的「资深Java架构师」 用中文回答,尽量使用 markdown 格式排版 喜欢用表情和生活化比喻解释复杂概念 """).user(message).advisors(newMessageChatMemoryAdvisor(chatMemory,sessionId)).call().content();}// 4. 简单 RAG (内存向量存储版 - 适合快速体验)privatefinalEmbeddingModelembeddingModel;privatefinalVectorStorevectorStore=newSimpleVectorStore(embeddingModel);@PostConstructpublicvoidinitKnowledgeBase(){List<String>docs=List.of("Spring AI 是 Spring 家族推出的官方大模型集成框架,目标是让 Java 开发者用最熟悉的方式使用大语言模型。","目前支持 OpenAI、Azure、Ollama、HuggingFace、阿里通义、百度文心、智谱、Moonshot、DeepSeek 等多种模型。","ChatClient 是 Spring AI 提供的核心高层抽象,类似 RestTemplate 在 HTTP 时代的地位。","2025年下半年开始,Spring AI 正式进入 1.0 阶段,API 基本稳定。");List<Document>documents=docs.stream().map(content->newDocument(content,Map.of("source","spring-ai-doc"))).toList();vectorStore.add(documents);}@GetMapping("/rag")publicStringsimpleRag(@RequestParamStringquestion){List<Document>similarDocs=vectorStore.similaritySearch(SearchRequest.query(question).withTopK(3));Stringcontext=similarDocs.stream().map(Document::getContent).collect(Collectors.joining("\n\n"));returnchatClient.prompt().system("你现在是一个基于给定上下文回答问题的专家助手。\n上下文:\n"+context).user(question).call().content();}// 5. 函数调用(工具调用) - 经典天气例子@GetMapping("/tools")publicStringweatherWithTools(@RequestParamStringcity){recordWeatherInfo(@JsonProperty("city")Stringcity,@JsonProperty("temperature")doubletemperature,@JsonProperty("condition")Stringcondition,@JsonProperty("humidity")inthumidity){}Function<WeatherRequest,WeatherInfo>fakeWeatherFunction=req->newWeatherInfo(req.city(),24.5,"多云转晴",65);returnchatClient.prompt().user("请告诉我"+city+"现在的天气怎么样?").functions(List.of(FunctionCallbackContext.builder().function("get_weather",fakeWeatherFunction).description("获取指定城市的当前天气信息").responseConverter(newBeanOutputConverter<>(WeatherInfo.class)).build())).call().content();}// 6. 结构化输出(最推荐的写法之一)publicrecordTravelPlan(@JsonProperty("destination")Stringdestination,@JsonProperty("days")intdays,@JsonProperty("budget_level")StringbudgetLevel,// low/medium/high@JsonProperty("highlights")List<String>highlights,@JsonProperty("tips")List<String>tips){}@GetMapping("/structured")publicTravelPlanstructuredTravelPlan(@RequestParamStringdestination,@RequestParam(defaultValue="3")intdays,@RequestParam(defaultValue="medium")Stringbudget){BeanOutputConverter<TravelPlan>converter=newBeanOutputConverter<>(TravelPlan.class);StringjsonSchema=converter.jsonSchema;Stringprompt=""" 你是一位专业的旅行规划师。 请为用户规划一份 %d 天的%s预算%s旅行计划。 请严格按照以下 JSON Schema 输出,不要输出任何多余的文字: %s 目的地:%s """.formatted(days,budget,destination,jsonSchema,destination);StringrawJson=chatClient.prompt(prompt).call().content();returnconverter.convert(rawJson);}}

推荐学习路径(难度递增)

阶段重点掌握内容建议耗时推荐练习题目
第1天ChatClient基本用法 + 流式 + 系统提示词2~4小时写一个AI聊天室(带历史记录)
第2天会话记忆 + PromptTemplate3~5小时实现多角色对话(客服/面试官/女友等)
第3天简单RAG(内存/文件/PGVector)6~10小时做一个个人简历/知识库问答机器人
第4~5天Function Calling + 结构化输出8~15小时实现:天气+汇率+查快递+生成周报
第6天+多Agent协作 / ReAct / 工具链编排持续学习中写一个「程序员小助手」Agent(写代码+查资料+写文档)

一句话总结当前(2026年初)最舒服的入门技术栈建议:

Spring Boot 3.3.x + Spring AI 1.0.x + 硅基流动/DeepSeek官方 OpenAI兼容接口 + deepseek-r1:free / deepseek-v3:free(推理最强) + ChatClient流式 + Memory + 简单RAG + Function Calling + 结构化输出

祝你玩得开心,早日做出属于自己的AI小产品~ 🚀

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询