当前位置: 首页 > news >正文

spring ai alibaba 使用 SystemPromptTemplate 很方便的集成 系统提示词

系统提示词可以是.st 文件了,便于修改和维护

1提示词内容:

你是一个有用的AI助手。
你是一个帮助人们查找信息的人工智能助手。
您的名字是{name}
你应该用你的名字和{voice}的风格回复用户的请求。
每一次回答的时候都要增加一个65字以内的标题形如:【这是标题】
然后在展开回答用户的问题

在这里插入图片描述

2赋值方式

    @Value("classpath:/prompts/system-message.st")private Resource systemResource;@PostMapping(value = "/askQuestion" ,produces = MediaType.TEXT_EVENT_STREAM_VALUE)public Flux<ServerSentEvent<String>> streamForSystemMessage(@RequestBodyQuestionVO questionVO, HttpServletRequest request) {String prompt=questionVO.getPrompt();String platform=questionVO.getPlatform();UserMessage userMessage = new UserMessage(prompt);SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemResource);//这里是赋值 也可以从前端页面传递过来Message systemMessage = systemPromptTemplate.createMessage(Map.of("name", "张三", "voice", "鲁迅"));return  ChatClient.builder(dashScopeChatModel).build().prompt(new Prompt(List.of(userMessage,systemMessage))).stream().content().map(content -> {stringBuffer.append(content);System.out.println(stringBuffer.toString());JSONObject  jsonObject=new  JSONObject();jsonObject.put("content",content);String jobject=jsonObject.toString();return ServerSentEvent.builder(jobject).event("message").build();})//问题回答结速标识,以便前端消息展示处理.concatWithValues(ServerSentEvent.builder("[DONE]").build()).onErrorResume(e -> Flux.just(ServerSentEvent.builder("Error: " +e.getMessage()).event("error").build()));}   

解释: Message systemMessage = systemPromptTemplate.createMessage(Map.of(“name”, “张三”, “voice”, “鲁迅”)); 张三和 鲁迅都可以从页面传递过来

3 展示结果

在这里插入图片描述

4:ollama openAI qwen deepseek 等大模型都支持

5、总结

  1. 核心步骤

    • 使用 SystemPromptTemplate 直接加载 .st 模板文件。
  2. 优势

    • 代码简洁:无需手动解析模板,直接使用 Spring AI 提供的工具类。
    • 灵活性高:支持动态变量、条件逻辑和多模板管理。
    • 维护方便:模板与代码分离,修改提示词无需重新编译。
  3. 注意事项

    • 变量名需与模板中的占位符一致(如 {name} 对应 `Map.of(“name”, “张三”, “voice”, “鲁迅”))。

通过这种方式,可以高效地在 Spring AI 中集成各大模型,并实现高度可配置的系统提示词管理。

相关文章:

  • 2025.05.08-得物春招算法岗-第二题
  • com.fasterxml.jackson.dataformat.xml.XmlMapper把对象转换xml格式,属性放到标签<>里边
  • 2.MySQL数据库操作
  • PMIC电源管理模块的PCB设计
  • PostgreSQL冻结过程
  • 使用零样本LLM在现实世界环境中推广端到端自动驾驶——论文阅读
  • Windows远程访问Ubuntu的方法
  • IBM BAW(原BPM升级版)使用教程第六讲
  • YOLOv8 优化:基于 Damo-YOLO 与 DyHead 检测头融合的创新研究
  • Android系统架构模式分析
  • Redis 8.0携新功能,重新开源
  • 从 AGI 到具身智能体:解构 AI 核心概念与演化路径全景20250509
  • 切比雪夫不等式专题习题
  • DevExpressWinForms-布局容器之StackPanel
  • 拆分sql数据,(shop_backup)sql文档过大(>5G)
  • 在另一个省发布抖音作品,IP属地会随之变化吗?
  • TCP/IP协议的体系结构
  • 关于大数据的基础知识(一)——定义特征结构要素
  • 单调栈模版型题目(3)
  • 图像泊松融合(convpyr_small版本)
  • 兵韬志略|美2026国防预算未达1万亿,但仍寻求“暗度陈仓”
  • 洗冤录|县令遇豪强:黄榦处理的一起地产纠纷案
  • 面对非专业人士,科学家该如何提供建议
  • 重温经典|《南郭先生》:不模仿别人,不重复自己
  • 比特币价格时隔三个月再度站上10万美元
  • 马上评|比余华与史铁生的友情更动人的是什么