news 2026/4/16 2:34:14

轻松入门SpringAI-SpringAI综合案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
轻松入门SpringAI-SpringAI综合案例

轻松入门 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小产品~ 🚀

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:28:20

轻松入门SpringAI-SpringAI实战入门案例

Spring AI 实战入门案例 &#xff08;2026年初 零基础到能跑完整小应用的路径&#xff09; 目标&#xff1a;用最短时间让你能自己跑通一个包含以下功能的 Spring AI 小应用&#xff1a; 普通聊天流式输出&#xff08;打字机效果&#xff09;带记忆的对话简单 RAG&#xff0…

作者头像 李华
网站建设 2026/4/16 14:33:25

导师严选2026继续教育TOP10一键生成论文工具测评

导师严选2026继续教育TOP10一键生成论文工具测评 学术写作工具测评&#xff1a;2026年继续教育用户如何高效选型 在继续教育领域&#xff0c;论文撰写已成为许多学员必须面对的挑战。从选题构思到文献整理&#xff0c;再到内容创作与格式规范&#xff0c;每一步都可能成为阻碍进…

作者头像 李华
网站建设 2026/4/16 10:41:16

GPU 单挑 CPU:从矩阵乘法到并行计算的入门

为什么神经网络离不开 GPU&#xff1f; 我们已经在现实中见过太多神经网络的应用了&#xff1a;图像识别、语音转文字、大模型推理。这些看起来“很智能”的任务&#xff0c;底层其实并不神秘。 本质上&#xff0c;它们都是一连串的矩阵乘法。 前一次运算的输出&#xff0c;…

作者头像 李华
网站建设 2026/4/16 14:33:14

吐血推荐9个AI论文工具,助本科生轻松写毕业论文!

吐血推荐9个AI论文工具&#xff0c;助本科生轻松写毕业论文&#xff01; AI工具让论文写作不再难 在如今的学术环境中&#xff0c;越来越多的学生开始借助AI工具来提升论文写作的效率和质量。尤其是在面对毕业论文时&#xff0c;时间紧迫、内容繁杂&#xff0c;很多同学都感到无…

作者头像 李华
网站建设 2026/4/16 14:28:20

Python+Vue的 美食分享论坛的设计和实现 django Pycharm flask

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 …

作者头像 李华
网站建设 2026/4/16 15:51:05

提示工程质量保证体系:如何保证Prompt的一致性?

提示工程质量保证&#xff1a;构建Prompt一致性的系统方法论 元数据框架 标题&#xff1a;提示工程质量保证&#xff1a;构建Prompt一致性的系统方法论 关键词&#xff1a;提示工程, Prompt一致性, 质量保证体系, 语义对齐, 模型输出稳定性, 反馈迭代, 大模型应用 摘要&#xf…

作者头像 李华