当前位置: 首页 > 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 中集成各大模型,并实现高度可配置的系统提示词管理。

http://www.dtcms.com/a/180069.html

相关文章:

  • 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版本)
  • <uniapp><HBuilder><故障>HBuilder真机运行时,报“同步资源失败”故障解决
  • CET中电技术:变配电智能运维方案为工业安全与效率保驾护航
  • 124549-23-1,PBFI AM,测定细胞内区隔的钾离子水平变化
  • DNS DDoS攻击:网络世界中的“洪水猛兽”
  • 对PyTorch模块进行性能分析
  • k8s存储类型:emptyDir、hostPath、nfs、pvc及存储类storageclass的静态/动态创建pv
  • android 媒体框架
  • iOS App 安全性探索:源码保护、混淆方案与逆向防护日常
  • 操作系统基础知识
  • C#字段、属性、索引器、常量