news 2026/4/23 5:02:13

轻松入门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/4/23 10:11:08

提示工程架构师避坑手册:用户旅程映射的4个误解

提示工程架构师避坑手册&#xff1a;拆解用户旅程映射的4个常见误解 副标题&#xff1a;从线性流程到动态对话——AI系统的用户体验设计实战修正指南 1. 引言&#xff1a;为什么用户旅程映射是提示工程的“隐形陷阱”&#xff1f; 在AI产品设计中&#xff0c;提示工程架构师…

作者头像 李华
网站建设 2026/4/22 18:10:06

vue基于Python 新疆特色美食电商平台设计与实现flask django Pycharm

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

作者头像 李华
网站建设 2026/4/23 11:31:29

Flutter × OpenHarmony 跨端开发之汇率转换与汇率卡片展示

文章目录Flutter OpenHarmony 跨端开发之汇率转换与汇率卡片展示前言背景Flutter Harmony OpenHarmony 跨端开发介绍开发核心代码代码解析&#xff1a;心得总结Flutter OpenHarmony 跨端开发之汇率转换与汇率卡片展示 前言 随着全球化经济的发展&#xff0c;汇率的实时查询…

作者头像 李华
网站建设 2026/4/23 11:31:33

Flutter × OpenHarmony 汇率转换应用中的智能货币选择器实现

文章目录Flutter OpenHarmony 汇率转换应用中的智能货币选择器实现前言背景Flutter OpenHarmony 跨端开发介绍开发核心代码代码解析心得总结Flutter OpenHarmony 汇率转换应用中的智能货币选择器实现 前言 在现代移动应用中&#xff0c;货币转换功能是出境旅游、跨境电商及…

作者头像 李华
网站建设 2026/4/23 11:30:53

后劲大到离谱 董子健导演首作看完缓了两天!

刚看完《我的朋友安德烈》那晚&#xff0c;我没事&#xff1b;结果第二天上班路上&#xff0c;脑子里突然闪过一个画面&#xff0c;鼻头一酸——坏了&#xff0c;这电影的后劲又上来了&#xff01;董子健第一次当导演&#xff0c;简直是个“隐藏高手”&#xff0c;片子没刻意煽…

作者头像 李华