2026/4/6 4:12:36
网站建设
项目流程
企业营销网站案例,杭州好的vi设计公司,公司新产品开发项目属于公司创业吗,网站代码如何优化轻松入门 Spring AI 综合案例 #xff08;2025-2026 比较实用且完整的入门组合示例#xff09;
以下是一个相对完整的、适合初学者到中级的 Spring AI 综合案例#xff0c;包含目前最常用的几种核心能力#xff1a;
功能清单#xff1a;
1. 普通对话#xff08;ChatCli…轻松入门 Spring AI 综合案例2025-2026 比较实用且完整的入门组合示例以下是一个相对完整的、适合初学者到中级的 Spring AI 综合案例包含目前最常用的几种核心能力功能清单 1. 普通对话ChatClient 最基础用法 2. 流式回答打字机效果 3. 会话记忆短期记忆 4. 系统提示词工程 5. RAG 简单实现基于内存向量存储 6. 函数调用Function Calling / Tools 7. 结构化输出JSON模式 Bean转换完整综合案例代码单文件版RestControllerRequestMapping(/ai/demo)RequiredArgsConstructorSlf4jpublicclassAiDemoController{privatefinalChatClientchatClient;// 1. 最基础聊天GetMapping(/chat)publicStringsimpleChat(RequestParamStringmessage){returnchatClient.prompt().user(message).call().content();}// 2. 流式回答前端最推荐GetMapping(value/stream,producesMediaType.TEXT_EVENT_STREAM_VALUE)publicFluxStringstreamChat(RequestParamStringmessage){returnchatClient.prompt().user(message).stream().content();}// 3. 带记忆 系统角色最常用的组合写法privatefinalChatMemorychatMemorynewMessageWindowChatMemory(10);// 保留最近10条GetMapping(/memory)publicStringchatWithMemory(RequestParamStringsessionId,RequestParamStringmessage){returnchatClient.prompt().system( 你是一位友善、幽默、说话很接地气的「资深Java架构师」 用中文回答尽量使用 markdown 格式排版 喜欢用表情和生活化比喻解释复杂概念 ).user(message).advisors(newMessageChatMemoryAdvisor(chatMemory,sessionId)).call().content();}// 4. 简单 RAG 内存向量存储版 - 适合快速体验privatefinalEmbeddingModelembeddingModel;privatefinalVectorStorevectorStorenewSimpleVectorStore(embeddingModel);PostConstructpublicvoidinitKnowledgeBase(){ListStringdocsList.of(Spring AI 是 Spring 家族推出的官方大模型集成框架目标是让 Java 开发者用最熟悉的方式使用大语言模型。,目前支持 OpenAI、Azure、Ollama、HuggingFace、阿里通义、百度文心、智谱、Moonshot、DeepSeek 等多种模型。,ChatClient 是 Spring AI 提供的核心高层抽象类似 RestTemplate 在 HTTP 时代的地位。,2025年下半年开始Spring AI 正式进入 1.0 阶段API 基本稳定。);ListDocumentdocumentsdocs.stream().map(content-newDocument(content,Map.of(source,spring-ai-doc))).toList();vectorStore.add(documents);}GetMapping(/rag)publicStringsimpleRag(RequestParamStringquestion){ListDocumentsimilarDocsvectorStore.similaritySearch(SearchRequest.query(question).withTopK(3));StringcontextsimilarDocs.stream().map(Document::getContent).collect(Collectors.joining(\n\n));returnchatClient.prompt().system(你现在是一个基于给定上下文回答问题的专家助手。\n上下文\ncontext).user(question).call().content();}// 5. 函数调用工具调用 - 经典天气例子GetMapping(/tools)publicStringweatherWithTools(RequestParamStringcity){recordWeatherInfo(JsonProperty(city)Stringcity,JsonProperty(temperature)doubletemperature,JsonProperty(condition)Stringcondition,JsonProperty(humidity)inthumidity){}FunctionWeatherRequest,WeatherInfofakeWeatherFunctionreq-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/highJsonProperty(highlights)ListStringhighlights,JsonProperty(tips)ListStringtips){}GetMapping(/structured)publicTravelPlanstructuredTravelPlan(RequestParamStringdestination,RequestParam(defaultValue3)intdays,RequestParam(defaultValuemedium)Stringbudget){BeanOutputConverterTravelPlanconverternewBeanOutputConverter(TravelPlan.class);StringjsonSchemaconverter.jsonSchema;Stringprompt 你是一位专业的旅行规划师。 请为用户规划一份 %d 天的%s预算%s旅行计划。 请严格按照以下 JSON Schema 输出不要输出任何多余的文字 %s 目的地%s .formatted(days,budget,destination,jsonSchema,destination);StringrawJsonchatClient.prompt(prompt).call().content();returnconverter.convert(rawJson);}}推荐学习路径难度递增阶段重点掌握内容建议耗时推荐练习题目第1天ChatClient基本用法 流式 系统提示词2~4小时写一个AI聊天室带历史记录第2天会话记忆 PromptTemplate3~5小时实现多角色对话客服/面试官/女友等第3天简单RAG内存/文件/PGVector6~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小产品