news 2026/7/14 22:22:45

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

作者头像

张小明

前端开发工程师

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

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱: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 为什么需要调整堆栈大小&#…

作者头像 李华