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

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.xdnf.cn/news/4864.html

相关文章:

  • U9C-SQL-采购订单视图
  • RGB矩阵照明系统详解及WS2812配置指南
  • 机器学习-无量纲化与特征降维(一)
  • flask开启https服务支持
  • 基于WSL用MSVC编译ffmpeg7.1
  • O2OA(翱途)服务器故障排查
  • 【AI提示词】蝴蝶效应专家
  • 【wpf】12 在WPF中实现HTTP通信:封装HttpClient的最佳实践
  • 【递归,搜索与回溯算法篇】专题(一) - 递归
  • 初学python的我开始Leetcode题8-4
  • vue教程(vuepress版)
  • 深入理解二叉树(2)
  • Music AI Sandbox:打开你的创作新世界
  • 简单说明.nii.gz文件数据结构
  • QVariant 的核心用途
  • Springboot整合kafka简单使用
  • 功率级OBC自动化测试方案
  • swagger3融入springboot
  • keil使用
  • 【CF】Day54——Educational Codeforces Round 161 (Rated for Div. 2) DE
  • 【工具安装】Windows环境下Node.js的安装与配置
  • 网站公安备案流程及审核时间
  • SpringBoot默认选择CGLIB动态代理的深度解析:兼容性、性能与设计哲学
  • 【 window.addEventListener(‘message‘, handleMessage)无效的问题】
  • Java 中常见的数据结构及其常用 API
  • IBM崛起之路——领先的托管与咨询服务提供商
  • 【C++】C++函数指针详解与实用技巧
  • 15前端项目----用户信息/导航守卫
  • zst-2001 历年真题 数据库
  • [操作系统] 进程间通信:system V 信号量