欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Spring AI (三) 提示词对象Prompt

Spring AI (三) 提示词对象Prompt

2025/5/7 11:58:48 来源:https://blog.csdn.net/yuanchun05/article/details/140624537  浏览:    关键词:Spring AI (三) 提示词对象Prompt

3.提示词对象Prompt

3.1.Prompt

Prompt类的作用是创建结构化提示词, 实现了ModelRequest<List<Message>>接口

  • Prompt(String contents):创建一个包含指定内容的Prompt对象。

  • Prompt(String contents, ChatOptions modelOptions):创建一个包含指定内容和模型选项的Prompt对象。

  • Prompt(List<Message> messages):创建一个包含指定消息列表的Prompt对象。

  • Prompt(List<Message> messages, ChatOptions modelOptions):创建一个包含指定消息列表和模型选项的Prompt对象。

  • Prompt(Message message):创建一个包含指定消息的Prompt对象。

  • Prompt(Message message, ChatOptions modelOptions):创建一个包含指定消息和模型选项的Prompt对象。

代码实例

    @GetMapping("/chat/completion")public String completion(@RequestParam(value = "message", defaultValue = "中国的首都是哪里?")String message) {// 创建用户消息对象,封装外部传入的消息内容UserMessage msg = new UserMessage(message);// 根据用户消息创建提示对象,为对话提供上下文Prompt prompt = new Prompt(msg);// 调用聊天客户端的呼叫方法,传入提示对象,发起对话请求ChatResponse call = chatClient.call(prompt);// 从对话响应中获取生成结果,即机器人的回答内容Generation result = call.getResult();// 从生成结果中提取输出消息,为最终展示给用户的消息内容AssistantMessage output = result.getOutput();// 提取输出消息的内容,准备进行后续处理或展示String content = output.getContent();return content;}

测试

###
GET http://localhost:8080/chat/simpleChat?message=什么是AI

3.2.模板PromptTemplate

PromptTemplate类的作用是创建结构化提示词,它是Spring AI提示词工程中的关键组件。该类实现了三个接口,

分别是PromptTemplateStringActionsPromptTemplateActionsPromptTemplateMessageActions,这些接口的主要功能如下:

在这里插入图片描述

  • PromptTemplateStringActions:主要用于创建和渲染提示词字符串,接口的返回值类型均是String类型,这是提示词的基本形式。
  • PromptTemplateActions:主要用于创建Prompt对象,该对象可直接传递给ChatClient以生成响应。
  • PromptTemplateMessageActions:主要用于创建Message对象,这允许针对Message对象进行其他的相关操作。

代码实现

    @GetMapping("/chat/forTemplates")public String forTemplates(@RequestParam(value = "message", defaultValue = "中国")String message) {//        PromptTemplate promptTemplate = new PromptTemplate( "{message}的首都是哪里?." );
//        Prompt prompt = promptTemplate.create(Map.of("message", message ));PromptTemplate promptTemplate = new PromptTemplate("{message}的首都是哪里?.", Map.of("message", message));Prompt prompt = promptTemplate.create();return chatClient.call(prompt).getResult().getOutput().getContent();}

测试

###
GET http://localhost:8080/chat/forTemplates?message=美国

3.3.通过Resource构造PromptTemplate

我们除了可以通过定义String字符串加载Template以外,我们还可以以Resource的形式加载Template,

.ts Resource文件

在 resouces下创建 prompts/code.st (文件后缀名合理即可)

使用 {language} 编写一段实现 {description} 的程序。

代码实现

    @Value("classpath:prompts/code.st")private Resource codeTemplate;@GetMapping("/chat/forTemplatesByResource")public String forTemplatesByResource(@RequestParam String description, @RequestParam String language) {PromptTemplate promptTemplate = new PromptTemplate(codeTemplate);Prompt prompt = promptTemplate.create(Map.of("description", description, "language", language));return chatClient.call(prompt).getResult().getOutput().getContent();}

测试

###
GET http://localhost:8080/chat/forTemplatesByResource?description=冒泡排序&language=java

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词