news 2026/7/15 1:18:11

轻松入门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/6/28 22:23:35

轻松入门SpringAI-SpringAI实现RAG

轻松入门 Spring AI RAG&#xff08;Retrieval-Augmented Generation&#xff09;实现 &#xff08;2026年主流实用写法 从最简单到生产可用&#xff09; RAG 是目前使用大模型最常见、最有效的增强方式之一&#xff1a; 让模型“先查资料&#xff0c;再回答”&#xff0c;大…

作者头像 李华
网站建设 2026/7/14 12:30:33

Python+Vue的笔记管理系统的设计与实现 django Pycharm flask

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

作者头像 李华
网站建设 2026/7/2 5:06:30

Python+Vue的 第三方物流管理系统 django Pycharm flask

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

作者头像 李华
网站建设 2026/6/26 8:30:49

Python+Vue的河南省红色文化旅游管理服务平台 django Pycharm flask

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

作者头像 李华
网站建设 2026/7/9 3:53:08

小程序计算机毕设之基于springboot+微信小程序的服装购物平台的设计与实现小程序(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/9 22:05:30

ESP8266-01S学习笔记

这里写目录标题传模式 vs 非透传模式解析JSON的差异一、透传模式 vs 非透传模式的JSON解析1.1 两种模式下的串口数据格式对比非透传模式&#xff08;默认模式&#xff09;透传模式1.2 两种模式对比表1.3 透传模式设置代码二、堆栈设置问题详解2.1 为什么需要调整堆栈大小&#…

作者头像 李华