提示词是用于引导AI模型生成特定输出的输入内容。这些提示的设计与措辞方式会显著影响模型的响应结果。可以简单地理解为,用自然语言告诉模型“该做什么,怎么做,做成什么样”的指令。今天这篇内容将展示在spring ai中,如何利用提示词的技巧。
系统提示词和用户提示词
Spring AI遵循了Open AI的规范,提示词分为系统提示词和用户提示词,分别是System和User,比如:
@RestControllerpublic class PromptEngineerController {private final ChatClient chatClient;@Autowiredpublic 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 = 12 = 33 = 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通过支持系统/用户提示词分离,并结合角色扮演、少样本学习和思维链等工程技巧,能够显著提升模型输出的准确性和适用性。
夜雨聆风