菏泽市网站建设_网站建设公司_在线客服_seo优化
2026/1/18 21:24:29 网站建设 项目流程

Spring AI 实战入门案例
(2026年初 · 零基础到能跑完整小应用的路径)

目标:用最短时间让你能自己跑通一个包含以下功能的 Spring AI 小应用:

  • 普通聊天
  • 流式输出(打字机效果)
  • 带记忆的对话
  • 简单 RAG(知识库问答)
  • 结构化输出(JSON → Java 对象)

推荐起点技术栈(2026年1月最友好组合)

Spring Boot 3.3.x / 3.4.x Spring AI 1.0.x ~ 1.1.x (稳定版已发布很久) 模型选择 DeepSeek-V3 / DeepSeek-R1(硅基流动中转)或 Ollama 本地 向量存储 内存(SimpleVectorStore)→ 先体验,后面可换 PGVector/Redis/Chroma

极简起步项目(5分钟能跑起来)

  1. 使用 start.spring.io 创建项目

    • Dependencies:Spring Web + Spring AI OpenAI Starter(后面改配置即可兼容 DeepSeek)
    • Java 21(推荐)/ 17
  2. application.yml 最简配置(硅基流动 + DeepSeek-R1 示例)

spring:ai:openai:base-url:https://api.siliconflow.cn/v1# 硅基流动(性价比最高)api-key:sk-你的硅基流动key(新用户送很多免费token)chat:options:model:deepseek-ai/DeepSeek-R1# 强推理# model: deepseek-ai/DeepSeek-V3 # 更万能/快temperature:0.7max-tokens:4096

综合入门案例 - 单文件 Controller(复制粘贴就能跑)

@RestController@RequestMapping("/ai/easy")@RequiredArgsConstructorpublicclassEasyAiController{privatefinalChatClientchatClient;privatefinalEmbeddingModelembeddingModel;// 用于 RAG// 内存向量存储(最简单,启动即有)privatefinalVectorStorevectorStore=newSimpleVectorStore(embeddingModel);// 启动时自动加载一点知识(模拟知识库)@PostConstructpublicvoidloadSomeKnowledge(){vardocs=List.of("Spring AI 是 Spring 官方出品的大模型集成框架,目标让 Java 开发者用最熟悉的方式玩 AI。","ChatClient 是核心高层抽象,像 RestClient 一样好用。","目前最受欢迎的国内模型组合:DeepSeek-R1(推理强)+ DeepSeek-V3(综合最强)。","2025年下半年 Spring AI 正式 1.0,2026年已经非常稳定成熟。");vectorStore.add(docs.stream().map(content->newDocument(content,Map.of("type","spring-ai-intro"))).toList());}// 1. 最基础聊天@GetMapping("/chat")publicStringchat(@RequestParamStringq){returnchatClient.prompt().user(q).call().content();}// 2. 流式输出(前端打字机神器)@GetMapping(value="/stream",produces=MediaType.TEXT_EVENT_STREAM_VALUE)publicFlux<String>stream(@RequestParamStringq){returnchatClient.prompt().user(q).stream().content();}// 3. 带记忆 + 系统角色(最实用写法)privatefinalChatMemorymemory=newMessageWindowChatMemory(8);// 保留最近8轮@GetMapping("/memory")publicStringmemoryChat(@RequestParamStringsession,// 区分不同会话@RequestParamStringq){returnchatClient.prompt().system(""" 你是一个说话很幽默、爱用表情、非常接地气的「资深Java老鸟」 尽量用 markdown 排版,喜欢用生活化比喻 """).user(q).advisors(MessageChatMemoryAdvisor.builder().chatMemory(memory).sessionId(session)// 重要:按会话隔离记忆.build()).call().content();}// 4. 简单 RAG(基于上面加载的知识库)@GetMapping("/rag")publicStringrag(@RequestParamStringquestion){// 检索最相似的3段知识varresults=vectorStore.similaritySearch(SearchRequest.query(question).withTopK(3));Stringcontext=results.stream().map(Document::getContent).collect(Collectors.joining("\n\n---\n\n"));returnchatClient.prompt().system("你现在是基于以下文档知识回答问题的专家助手:\n\n"+context+"\n\n只用给出的信息回答,不要编造。如果不知道就说不知道。").user(question).call().content();}// 5. 结构化输出(最推荐的生产用法之一)publicrecordJokeResponse(Stringsetup,Stringpunchline,Stringemoji,Integerdifficulty// 1~10){}@GetMapping("/joke")publicJokeResponsestructuredJoke(@RequestParam(defaultValue="程序员")Stringtheme){varconverter=newBeanOutputConverter<>(JokeResponse.class);StringjsonSchema=converter.jsonSchema;Stringprompt=""" 请讲一个关于「%s」的笑话。 必须严格按照以下 JSON Schema 输出,不要多一个字: %s """.formatted(theme,jsonSchema);Stringjson=chatClient.prompt(prompt).call().content();returnconverter.convert(json);}}

快速进阶方向建议(按实用度排序)

顺序功能大概难度建议练习项目预计耗时
1Function Calling★★☆写一个「查天气+查汇率+生成周报」的工具助手4~8h
2更好的 RAG★★★用 PGVector/Redis + 上传 pdf/docx 问答8~15h
3Agent / ReAct★★★★写一个「程序员小助手」能自己思考调用工具15~30h+
4多模态(图片理解)★★★☆接入通义千问/智谱GLM-4V 做图片描述/OCR6~12h
5语音输入输出★★★★Whisper + TTS 语音聊天机器人20h+

最快上手口诀(2026版)

先跑通ChatClient + 流式 + 记忆→ 再加简单 RAG→ 再学结构化输出→ 再玩Function Calling→ 最后冲Agent

需要我帮你把上面某个功能再展开成更详细的完整小项目(带依赖、配置、测试页面)吗?
直接说你最想先做哪一块~ 😄

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

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

立即咨询