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

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

Spring AI 生产级万能合集

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


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

1. Java 技术问答专用

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

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

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

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

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

4. 接口文档生成模板

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

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

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

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

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

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

1. AiPromptUtil 提示词拼接工具

java 复制代码
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 输出敏感信息、过滤违规内容

java 复制代码
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 简易统计工具

java 复制代码
/**
 * 简易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 全局常量类

java 复制代码
/**
 * 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 统一配置(全局多轮记忆)

java 复制代码
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 全局拦截器(耗时 + 日志 + 模型监控)

java 复制代码
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 通用返回封装(统一结果)

java 复制代码
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 四大常用能力

java 复制代码
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 专用工具类、常量、全局配置、控制器模板
相关推荐
Jmayday1 小时前
NLP第一章:自然语言处理入门
人工智能·自然语言处理
HuDie3401 小时前
prompt构建
大数据·人工智能·prompt
小罗和阿泽1 小时前
简单认识一下大模型!
人工智能·语言模型
TTGGGFF1 小时前
深度学习如何重塑三维重建:从任务定义到工程落地全流程解析
人工智能·深度学习
财经资讯数据_灵砚智能1 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月29日
大数据·人工智能·python·信息可视化·自然语言处理
JAVA面经实录9171 小时前
如何选择适合项目的「限流 / 熔断 / 降级」方案
java·spring·kafka·sentinel·guava
天天讯通1 小时前
OKCC 海外落地最简配置:助力海外业务高效运营
人工智能
AI技术增长1 小时前
Pytorch图像去噪实战(七):Noise2Noise自监督图像去噪实战,没有干净图也能训练模型
人工智能·pytorch·python
广州灵眸科技有限公司2 小时前
瑞芯微(EASY EAI)RV1126B AI算法开发流程
人工智能·算法·机器学习