news 2026/4/29 8:16:37

Spring AI 高频开发万能 Prompt 合集 + 生产级工具类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring AI 高频开发万能 Prompt 合集 + 生产级工具类

Spring AI 高频开发万能 Prompt 合集 + 生产级工具类

Spring AI 生产级万能合集

万能 Prompt 模板、AI 工具类、公共组件、常量、通用拦截器、缓存工具、内容安全工具


一、Spring AI 万能 Prompt 模板(直接复制使用)

1. Java 技术问答专用

你是资深Java架构师,拥有10年生产实战经验。 回答要求: 1. 内容精简、直击核心,不废话 2. 附带可运行极简代码示例 3. 结合生产踩坑、底层原理、性能优化 4. 避免过度理论,侧重实战落地 问题:{question}

2. 代码优化 / 代码审查专用

请对下方Java代码进行企业级审查与优化: 优化要求: 1. 消除空指针、NPE、冗余判断 2. 修复性能问题:N+1、循环查库、低效遍历 3. 规范日志、异常、事务、命名 4. 精简代码、去除嵌套、GC友好 5. 给出优化后完整代码 + 优化点说明 待优化代码:{code}

3. RAG 知识库强制约束(防幻觉)

你只能严格基于下方参考资料回答,禁止编造、禁止拓展、禁止外部知识。 如果资料中没有答案,直接回复:暂无相关资料。 参考资料:{context} 用户问题:{question}

4. 接口文档生成模板

请根据下方Controller代码,生成标准RESTful接口文档: 包含:接口地址、请求方式、入参、出参、功能描述、注意事项 代码:{controllerCode}

5. 错误日志分析 / 线上排错

你是Java线上故障排查专家,分析以下异常日志: 1. 定位根因 2. 给出直接解决方案 3. 给出长期优化规避方案 异常日志:{errorLog}

6. 多轮对话全局角色模板

全局角色:后端Java高级工程师 回答风格:简洁、专业、实战化、少空话、多代码 禁止:长篇大论、过度科普、无效修饰

二、Spring AI 通用工具类(生产可用)

1. AiPromptUtil 提示词拼接工具

import org.springframework.ai.chat.prompt.PromptTemplate; import java.util.Map; /** * AI 提示词工具类 */ public class AiPromptUtil { /** * 构建模板Prompt */ public static String build(String template, Map<String, Object> paramMap) { PromptTemplate promptTemplate = new PromptTemplate(template); return promptTemplate.render(paramMap); } /** * 极简单参数构建 */ public static String build(String template, String key, String value) { return build(template, Map.of(key, value)); } }

2. AiContentUtil 内容安全 & 脱敏工具

防止 AI 输出敏感信息、过滤违规内容

import org.springframework.util.StringUtils; /** * AI 内容安全工具 */ public class AiContentUtil { /** * 敏感词过滤 */ public static String filterSensitive(String content) { if (!StringUtils.hasText(content)) { return content; } // 可扩展敏感词库 return content.replaceAll("密码|密钥|token|accessKey", "***"); } /** * 截断超长回答(防止返回内容过大) */ public static String cutLongText(String content, int maxLength) { if (!StringUtils.hasText(content) || content.length() <= maxLength) { return content; } return content.substring(0, maxLength) + "..."; } }

3. AiCostUtil Token 简易统计工具

/** * 简易Token消耗计算(粗略版,用于成本管控) */ public class AiCostUtil { private static final int TOKEN_PER_CHARS = 3; /** * 粗略计算token */ public static int calcToken(String text) { if (text == null) return 0; return text.length() / TOKEN_PER_CHARS; } }

三、AI 全局常量类

/** * AI 全局常量 */ public final class AiConstant { private AiConstant(){} // 上下文最大保存轮次 public static final int MAX_CHAT_MEMORY_SIZE = 5; // RAG 检索配置 public static final int RAG_TOP_K = 3; public static final double RAG_SIMILARITY_THRESHOLD = 0.7; // 超时时间 public static final long AI_TIMEOUT_SECONDS = 30; // 重试次数 public static final int AI_RETRY_TIMES = 3; }

四、ChatMemory 统一配置(全局多轮记忆)

import org.springframework.ai.chat.memory.InMemoryChatMemory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AiMemoryConfig { @Bean public InMemoryChatMemory chatMemory() { // 全局统一限制最大5轮,防止token爆炸 return new InMemoryChatMemory(AiConstant.MAX_CHAT_MEMORY_SIZE); } }

五、AI 全局拦截器(耗时 + 日志 + 模型监控)

import lombok.extern.slf4j.Slf4j; import org.springframework.ai.chat.client.ChatClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Slf4j @Configuration public class ChatClientInterceptorConfig { @Bean public ChatClientCustomizer aiChatClientCustomizer() { return builder -> builder.defaultInterceptors(interceptor -> { long startTime = System.currentTimeMillis(); // 执行AI调用 interceptor.advance(); // 后置日志 long cost = System.currentTimeMillis() - startTime; String model = interceptor.getPrompt().getChatOptions().getModel(); String userText = interceptor.getPrompt().getUserMessageText(); log.info("[AI调用] 模型:{}, 耗时:{}ms, 问题摘要:{}", model, cost, userText.length() > 30 ? userText.substring(0,30) : userText); }); } }

六、AI 通用返回封装(统一结果)

import lombok.Data; @Data public class AiResult<T> { private Integer code; private String msg; private T data; public static <T> AiResult<T> success(T data) { AiResult<T> result = new AiResult<>(); result.setCode(200); result.setMsg("AI请求成功"); result.setData(data); return result; } public static <T> AiResult<T> fail(Integer code, String msg) { AiResult<T> result = new AiResult<>(); result.setCode(code); result.setMsg(msg); return result; } }

七、可直接复用的 Controller 模板

整合:单轮、多轮、流式、RAG 四大常用能力

import lombok.RequiredArgsConstructor; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.memory.InMemoryChatMemory; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import reactor.core.publisher.Flux; @RestController @RequestMapping("/ai") @RequiredArgsConstructor public class AiCommonController { private final ChatClient chatClient; private final InMemoryChatMemory chatMemory; private final RagService ragService; // 单轮问答 @GetMapping("/chat") public AiResult<String> chat(@RequestParam String question) { String content = chatClient.prompt() .user(question) .call() .content(); return AiResult.success(content); } // 多轮带记忆 @GetMapping("/multi") public AiResult<String> multiChat(@RequestParam String question) { String content = chatClient.prompt() .user(question) .chatMemory(chatMemory) .call() .content(); return AiResult.success(content); } // 流式SSE @GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux<String> stream(@RequestParam String question) { return chatClient.stream() .user(question) .stream() .map(res -> AiContentUtil.filterSensitive( res.getResult().getOutput().getContent() )); } // RAG知识库问答 @GetMapping("/rag") public AiResult<String> rag(@RequestParam String question) { return AiResult.success(ragService.ragChat(question)); } // 清空对话记忆 @PostMapping("/memory/clear") public AiResult<Void> clearMemory() { chatMemory.clear(); return AiResult.success(null); } }

八、生产级禁用 & 优化补充(最终漏点补齐)

  1. 禁止在 AI 接口中写入复杂业务逻辑,只做问答转发
  2. 禁止一次性传入超大文本,自动截断 + 分片
  3. 统一拦截大模型报错:额度不足、密钥失效、模型不存在
  4. 流式接口关闭缓存,避免前端响应异常
  5. 所有 Prompt 外部化,不要代码硬编码
  6. 线上环境关闭详细 Prompt 日志,防止信息泄露

九、整套资料汇总

目前已完整拥有:

  1. 《Spring AI 从零到生产 完整实战手册》
  2. 全套可运行依赖 + 配置
  3. 基础 / 流式 / 多轮 / RAG / 函数调用 完整代码
  4. 全局异常、重试、拦截器、监控
  5. 企业级万能 Prompt 库
  6. AI 专用工具类、常量、全局配置、控制器模板
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 8:15:29

Windows RDP(远程桌面) 入门、个性化配置、排障等实用命令盘点

远程桌面入门命令接下来&#xff0c;为大家系统梳理 Windows 环境下实用的远程桌面快捷命令。1. 启动远程桌面客户端mstsc这是最基础的远程桌面快捷命令&#xff0c;直接打开 Windows 远程桌面客户端。注意&#xff1a;如果提示“找不到mstsc”&#xff0c;可能是系统组件异常或…

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

拒绝AIGC痕迹:4个手改技巧+1款实用工具,亲测论文AI率从90%压到10%

四月底了&#xff0c;大家的毕设初稿基本都交了吧&#xff1f; 学校查AIGC疑似度一年比一年严格了&#xff0c;知网和维普的检测算法一直在变。 很多同学自己写完去测&#xff0c;发现疑似度直接飙到60%以上&#xff0c;被打回来重改。 大家急着到处找免费降ai率的方法&…

作者头像 李华
网站建设 2026/4/29 8:03:22

MusePublic Art Studio应用场景:教育机构AI美术课教学工具落地

MusePublic Art Studio应用场景&#xff1a;教育机构AI美术课教学工具落地 1. 引言&#xff1a;当AI艺术遇见美术教育 美术教育正面临着一个有趣的挑战&#xff1a;如何让每个学生都能快速体验创作的乐趣&#xff0c;同时又不被技术门槛限制&#xff1f;传统美术教学需要长期…

作者头像 李华
网站建设 2026/4/29 7:58:17

leetcode 92. 反转链表 II 区间反转(不是整条链表反转)

找到区间的pre、left、right、nxt&#xff0c;保存区间反转pre.next 连接新头&#xff08;right&#xff09;区间尾巴&#xff08;原来的left&#xff09;接上nxt# Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # …

作者头像 李华
网站建设 2026/4/29 7:55:24

Degrees of Lewdity中文汉化完整指南:3步实现免费中文游戏体验

Degrees of Lewdity中文汉化完整指南&#xff1a;3步实现免费中文游戏体验 【免费下载链接】Degrees-of-Lewdity-Chinese-Localization Degrees of Lewdity 游戏的授权中文社区本地化版本 项目地址: https://gitcode.com/gh_mirrors/de/Degrees-of-Lewdity-Chinese-Localizat…

作者头像 李华
网站建设 2026/4/29 7:54:29

5步解决网盘限速难题:LinkSwift开源工具完整实用指南

5步解决网盘限速难题&#xff1a;LinkSwift开源工具完整实用指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…

作者头像 李华