个人随笔
目录
SpringAI2.0提示词Prompt的简单使用
2026-11-03 20:40:19

提示词是引导人工智能模型生成特定输出的输入。这些提示词的设计和措辞会显著影响模型的响应。

一、简单例子

1、系统提示词

我们可以在创建chatClient对象的时候就设定好系统提示词,这样每个请求都会带上

  1. @Configuration
  2. public class AIConfigration {
  3. @Bean
  4. public ChatClient openaiChatClient(OpenAiChatModel openAiChatModel){
  5. return ChatClient.
  6. builder(openAiChatModel) //设置模型
  7. .defaultSystem("您是一位只会说事实的程序员,不会说一些没有根据的事情") //在这里设置系统提示词,这样所有请求都会带上这个
  8. //.defaultAdvisors(new MySimpleLoggerAdvisor())
  9. .defaultAdvisors(SimpleLoggerAdvisor.builder().build())
  10. .build();//创建对象
  11. }
  12. }
  1. ChatClientRequest[prompt=Prompt{messages=[SystemMessage{textContent='您是一位只会说事实的程序员,不会说一些没有根据的事情', messageType=SYSTEM, metadata={messageType=SYSTEM}}, UserMessage{content='请介绍一下php的三个优点', metadata={messageType=USER}, messageType=USER}], modelOptions=org.springframework.ai.openai.OpenAiChatOptions@51fa12f0}, context={}]

也可以在请求的时候设置

  1. @GetMapping("/ask2")
  2. public String ask2(String topic){
  3. String content = openaiChatClient
  4. .prompt()
  5. .system("您是一位资深系统架构师") //系统 提示词 ,这里如果设置了会覆盖创建chatClient那里设置的系统提示词
  6. .user(u -> u.text("请介绍一下{topic}的三个优点").param("topic",topic))
  7. .call()
  8. .content();
  9. return content;
  10. }

这里如果设置了会覆盖创建chatClient那里设置的系统提示词

2、提示词模板

用PromptTemplate可以创建提示词模板,不过这里创建的是用户提示词,messageType=USER}

  1. @GetMapping("/ask")
  2. public String ask(String topic){
  3. PromptTemplate template= new PromptTemplate("简单介绍下{topic}");
  4. Prompt prompt = template.create(Map.of("topic",topic));
  5. String content = openaiChatClient
  6. .prompt(prompt)
  7. .call()
  8. .content();
  9. return content;
  10. }

也可以用流式编程

  1. @GetMapping("/ask2")
  2. public String ask2(String topic){
  3. String content = openaiChatClient
  4. .prompt()
  5. .system("您是一位资深系统架构师") //系统 提示词 ,这里如果设置了会覆盖创建chatClient那里设置的系统提示词
  6. .user(u -> u.text("请介绍一下{topic}的三个优点").param("topic",topic))
  7. .call()
  8. .content();
  9. return content;
  10. }

二、消息类型

每条消息都被赋予特定的角色。这些角色对消息进行分类,有助于明确提示中各部分的上下文和目的,从而为 AI 模型提供清晰的指引。这种结构化的方法能够提升与 AI 交流的细腻度和效果,因为提示的每个部分在交互过程中都承担着独特而明确的职责。

  • System Role:系统角色:引导 AI 的行为和回复风格,设定其如何理解并回应输入的参数或规则。这类似于在开启对话前向 AI 提供指令。
  • User Role:用户角色:代表用户的输入——即用户向 AI 提出的问题、发出的命令或陈述。此角色至关重要,因为它构成了 AI 回应的基础。
  • Assistant Role:助手角色:AI对用户输入的回应。它不仅是一个答案或反应,对于维持对话的连贯性至关重要。通过追踪AI之前的回复(即“助手角色”消息),系统能够确保交互内容连贯且符合上下文。助手消息中也可能包含函数工具调用请求信息。这相当于 AI 的一项特殊功能,可在需要时用于执行特定操作,例如进行计算、获取数据或完成其他超出单纯对话范围的任务。
  • Tool/Function Role:工具/函数角色:工具/函数角色专注于在响应工具调用助手消息时返回附加信息。

三、注意事项

在编写提示词时,务必整合若干关键要素,以确保其清晰度和有效性:

  • Instructions: 说明:请向AI提供清晰、直接的指令,就像您与真人沟通一样。这种清晰度对于帮助AI“理解”您的期望至关重要。
  • External Context:外部背景:在必要时,提供相关的背景信息或针对 AI 回答的具体指导。这一“外部背景”用于界定提示的框架,帮助 AI 理解整体情境。
  • User Input: 用户输入:这是最直接的部分——用户提出的明确请求或问题,构成了提示的核心。
  • Output Indicator:输出指标:这一方面可能比较棘手。它涉及指定 AI 响应的期望格式,例如 JSON。但请注意,AI 并不一定总是严格遵循该格式。例如,它可能会在实际 JSON 数据前加上“这是您的 JSON”之类的短语,或者有时会生成并非完全准确的类 JSON 结构。
 2

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2