SpringAI OpenAI 接口 ChatClient 提示模版Tag(name学习-ChatClient 提示模版,description学习-ChatClient 提示模版)RestControllerRequestMapping(/study/api/chat/client/promptTemplate)Slf4jpublicclassChatClientPromptTemplateController{privateChatClientchatClient;publicChatClientPromptTemplateController(ChatClient.BuilderchatClientBuilder){this.chatClientchatClientBuilder.build();}privatestaticfinalStringQUEST列出5部由{actor}主演的电影。;privatestaticfinalStringQUEST2列出{actor}在{year}年主演的电影。;/** * 使用提示模版简单示例 * 模板方式 - 可以重复使用同一个模板 * param actor * return */Operation(summary提示模版 simple,description学习提示模版。)GetMapping(/simple)publicStringusePromptTemplateSimple(Stringactor){StringresultchatClient.prompt().user(u-u.text(QUEST).param(actor,actor)).call().content();returnresult;}/** * 使用提示模版 多个参数示例 * 模板方式 - 清晰管理多个参数 * param actor * return */Operation(summary提示模版 多参数,description学习提示模版。)PostMapping(/moreArgs)publicStringusePromptTemplateMoreArgs(RequestBodyActoractor){System.out.println(actor);StringresultchatClient.prompt().user(u-u.text(QUEST2).param(actor,actor.getName()).param(year,actor.getYear())).call().content();returnresult;/** * 等价于 * String result2 chatClient.prompt() * .user(列出actor.getName()在actor.getYear()年主演的电影。).call().content(); * 字符串连接方式 - 容易出错难以阅读 */}/** * 防止 SQL 注入类似的安全问题 * 字符串连接 - 危险可能被注入 * String userInput John Williams; DELETE FROM users;; * 使用模板方式 - 安全框架会转义 * DELETE FROM users 作为参数传递不会被当作指令 * *//** * 使用提示模版 复杂条件构建 * param * return */Operation(summary提示模版 复杂条件构建,description学习提示模版。)GetMapping(/complex)publicStringusePromptTemplateComplexCondition(){PromptTemplatepromptTemplatenewPromptTemplate({province}有多少个市。);PromptpromptpromptTemplate.create(Map.of(province,内蒙古));StringresultchatClient.prompt(prompt).call().content();returnresult;}/** * 使用提示模版 类型安全 * 支持不同类型参数 * param * return */Operation(summary提示模版 类型安全,description学习提示模版。)GetMapping(/safe)publicStringusePromptTemplateSage(){// 模板方式 - 支持不同类型参数returnchatClient.prompt().user(u-u.text(中国 温度: {temp}°C, 湿度: {humidity}%, 风速: {wind}km/h 最接近的城市。).param(temp,25.5)// double.param(humidity,65)// int.param(wind,12.3f))// float.call().content();}// 国际化支持}DataAllArgsConstructorclassActor{Stringname;Stringyear;}
SpringAI OpenAI 接口 ChatClient 提示模版
发布时间:2026/6/6 1:01:50
SpringAI OpenAI 接口 ChatClient 提示模版Tag(name学习-ChatClient 提示模版,description学习-ChatClient 提示模版)RestControllerRequestMapping(/study/api/chat/client/promptTemplate)Slf4jpublicclassChatClientPromptTemplateController{privateChatClientchatClient;publicChatClientPromptTemplateController(ChatClient.BuilderchatClientBuilder){this.chatClientchatClientBuilder.build();}privatestaticfinalStringQUEST列出5部由{actor}主演的电影。;privatestaticfinalStringQUEST2列出{actor}在{year}年主演的电影。;/** * 使用提示模版简单示例 * 模板方式 - 可以重复使用同一个模板 * param actor * return */Operation(summary提示模版 simple,description学习提示模版。)GetMapping(/simple)publicStringusePromptTemplateSimple(Stringactor){StringresultchatClient.prompt().user(u-u.text(QUEST).param(actor,actor)).call().content();returnresult;}/** * 使用提示模版 多个参数示例 * 模板方式 - 清晰管理多个参数 * param actor * return */Operation(summary提示模版 多参数,description学习提示模版。)PostMapping(/moreArgs)publicStringusePromptTemplateMoreArgs(RequestBodyActoractor){System.out.println(actor);StringresultchatClient.prompt().user(u-u.text(QUEST2).param(actor,actor.getName()).param(year,actor.getYear())).call().content();returnresult;/** * 等价于 * String result2 chatClient.prompt() * .user(列出actor.getName()在actor.getYear()年主演的电影。).call().content(); * 字符串连接方式 - 容易出错难以阅读 */}/** * 防止 SQL 注入类似的安全问题 * 字符串连接 - 危险可能被注入 * String userInput John Williams; DELETE FROM users;; * 使用模板方式 - 安全框架会转义 * DELETE FROM users 作为参数传递不会被当作指令 * *//** * 使用提示模版 复杂条件构建 * param * return */Operation(summary提示模版 复杂条件构建,description学习提示模版。)GetMapping(/complex)publicStringusePromptTemplateComplexCondition(){PromptTemplatepromptTemplatenewPromptTemplate({province}有多少个市。);PromptpromptpromptTemplate.create(Map.of(province,内蒙古));StringresultchatClient.prompt(prompt).call().content();returnresult;}/** * 使用提示模版 类型安全 * 支持不同类型参数 * param * return */Operation(summary提示模版 类型安全,description学习提示模版。)GetMapping(/safe)publicStringusePromptTemplateSage(){// 模板方式 - 支持不同类型参数returnchatClient.prompt().user(u-u.text(中国 温度: {temp}°C, 湿度: {humidity}%, 风速: {wind}km/h 最接近的城市。).param(temp,25.5)// double.param(humidity,65)// int.param(wind,12.3f))// float.call().content();}// 国际化支持}DataAllArgsConstructorclassActor{Stringname;Stringyear;}