乐于分享
好东西不私藏

Spring AI提示词实战

Spring AI提示词实战

提示词是用于引导AI模型生成特定输出的输入内容。这些提示的设计与措辞方式会显著影响模型的响应结果。可以简单地理解为,用自然语言告诉模型“该做什么,怎么做,做成什么样”的指令。今天这篇内容将展示在spring ai中,如何利用提示词的技巧。

系统提示词和用户提示词

Spring AI遵循了Open AI的规范,提示词分为系统提示词和用户提示词,分别是System和User,比如:

@RestControllerpublic class PromptEngineerController {private final ChatClient chatClient;@Autowired   public PromptEngineerController(ChatClient.Builder chatClientBuilder) {  this.chatClient = chatClientBuilder.build(); }@GetMapping("/ai/prompt1")public String promptEngineer(@RequestParam(value = "question", defaultValue = "我饿了") String question) {        return chatClient.prompt()               .system("""                你是一个知心大姐形象,请根据用户问题,用温暖语言回复他                """)          .user(question)          .call()          .content();    }}

访问一下这个controller,默认信息是“我饿了”:

代码通过system设置了系统提示词,让模型扮演了一个知心大姐形象,再通过user(message)设置了用户提示词。在这个例子中,用到了一个非常重要的提示词工程技巧,就是角色。

few shot

给提示词加入少量例子,让模型通过这些例子学习思考风格和输出模式,比如:

@GetMapping("/ai/prompt2")public String chat2(@RequestParam(value = "message") String message) {return chatClient.prompt("""            请根据用户输入的数字,给出结果,不需要思考过程,直接给出数字结果即可,推理过程参考:            1 = 1            2 = 3            3 = 5            ,如果用户给的不是个数字,请回复:无法回答,请输入数字        """).system("你是个ai").user(message).call().content();}

访问一下这个接口后,得到了一个根据少量例子计算出的数字

思维链

思维链是将中间思考过程逐步推导出最后结果的能力,链接多个AI响应,以创建连贯且具有上下文感知能力的对话。这有助于AI保持讨论的主线,确保相关性和连续性。

@GetMapping("/ai/prompt5")public String chat5(@RequestParam(value = "message") String message) {return chatClient.prompt("""            一个水果摊有5箱苹果,每箱重15公斤。今天卖掉了35公斤,还剩下多少公斤苹果?            请一步一步思考,并给出最终答案。          """).system("你是个ai").user(message).call().content();}

访问一下这个接口后,模型会逐步推导出最终答案

总结

提示词的设计与措辞直接影响AI的回答质量。Spring AI通过支持系统/用户提示词分离,并结合角色扮演、少样本学习和思维链等工程技巧,能够显著提升模型输出的准确性和适用性。

相关学习资料