Spring AI提示词的四种使用方法分享

 更新时间:2025年06月24日 09:42:36   作者:Java中文社群  
提示词是输入给大模型(LLM)的文本指令,用于明确地告诉大模型你想要解决的问题或完成的任务,也是大语言模型理解用户需求并生成准确答案的基础,那问题来了,在Spring AI如何用好提示词?以及提示词的使用方式有哪些呢?接下来本文一起来盘点一下

提示词(Prompt)是输入给大模型(LLM)的文本指令,用于明确地告诉大模型你想要解决的问题或完成的任务,也是大语言模型理解用户需求并生成准确答案的基础。因此 prompt 使用的好坏,直接决定了大模型生成结果的质量(是否符合预期)

那问题来了,在 Spring AI/Spring AI Alibaba 如何用好提示词?以及提示词的使用方式有哪些呢?接下来本文一起来盘点一下。

1.简单提示词使用

最简单的设置固定系统提示词和用户提示词的用法如下:

@RequestMapping("/chat")
public String chat(String msg) {
    String result = chatClient.prompt()
            .system("你是一个问答助手") // 设置系统提示词
            .user(msg)                 // 设置用户提示词
            .call().content();
    System.out.println("结果:" + result);
    return result;
}

2.动态提示词

所谓的动态提示词指的是需要进行动态参数替换的提示词,它的基本使用如下:

@RequestMapping("/chat")
public String chat(String topic) {
    PromptTemplate promptTemplate =
            new PromptTemplate("你是一个{role},讲一个关于{topic}的故事");
    Prompt prompt = promptTemplate.create(Map.of("role", "讲故事的助手",
            "topic", topic));
    return chatModel.call(prompt).getResult().getOutput().getText();
}

3.从文件中读取动态提示词

动态提示词如果比较短,我们可以像上面一样写到代码里面,如果比较长,我们可以把它单独放的某个文件模版中进行读取使用,具体实现如下:

// 从文件中读取提示词
@Value("classpath:type-system-prompt-txt")
private Resource systemPrompt;

@RequestMapping("/chat")
public String chat(String msg) {
    return chatClient.prompt()
            .system(systemPrompt) 
            .user(msg)
            .call()
            .content();
    }
}

4.Lambda表达式提示词

当提示词比较短的时候,除了可以使用 PromptTemplate 设置提示词之外,我们还可以使用 Lambda 表达式来实现动态提示词的设置,具体使用如下:

@RequestMapping("/chat")
public User chat(String name) {
    return chatClient.prompt()
            .user(msg -> msg.text("我叫{name},今年18岁,爱好打羽毛球。")
                    .param("name", name))
            .call()
            .entity(User.class); // 结果化输出
}

小结

提示词是用户和大模型交互的直接手段,所以在程序中用好提示词是至关重要的。本文提供了 4 种提示词的使用方式,开发者可以根据具体的业务场景,选择合适的提示词使用方式来完成 AI 应用开发。一起实操起来吧~

到此这篇关于Spring AI提示词的四种使用方法分享的文章就介绍到这了,更多相关Spring AI提示词用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析MMAP零拷贝在RocketMQ中的运用

    浅析MMAP零拷贝在RocketMQ中的运用

    零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除传输数据在存储器之间不必要的中间拷贝次数,从而有效地提高数据传输效率,这篇文章主要介绍了MMAP零拷贝在RocketMQ中的运用,需要的朋友可以参考下
    2022-07-07
  • SpringBoot普通类获取spring容器中bean的操作

    SpringBoot普通类获取spring容器中bean的操作

    这篇文章主要介绍了SpringBoot普通类获取spring容器中bean的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • java中concat()方法的使用说明

    java中concat()方法的使用说明

    这篇文章主要介绍了java中concat()方法的使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • IDEA2021常用优化设置步骤图解

    IDEA2021常用优化设置步骤图解

    本文分步骤给大家讲解IDEA2021常用优化设置技巧,非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-09-09
  • SpringBoot启动原理深入解析

    SpringBoot启动原理深入解析

    我们开发任何一个Spring Boot项目都会用到启动类,下面这篇文章主要给大家介绍了关于SpringBoot启动原理解析的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Spring组件初始化扩展点BeanPostProcessor的作用详解

    Spring组件初始化扩展点BeanPostProcessor的作用详解

    本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感兴趣的朋友一起看看吧
    2025-03-03
  • IntelliJ IDEA 2023.2最新版激活方法及验证ja-netfilter配置是否成功

    IntelliJ IDEA 2023.2最新版激活方法及验证ja-netfilter配置是否成功

    随着2023.2版本的发布,用户们渴望了解如何激活这个最新版的IDE,本文将介绍三种可行的激活方案,包括许可证服务器、许可证代码和idea vmoptions配置,帮助读者成功激活并充分利用IDEA的功能,感兴趣的朋友参考下吧
    2023-08-08
  • JavaCV实现照片马赛克效果

    JavaCV实现照片马赛克效果

    这篇文章主要介绍了如何通过JavaCV实现照片马赛克效果,文中的示例代码讲解详细,对我们学习JavaCV有一定的帮助,感兴趣的小伙伴可以跟随小编一起动手试一试
    2022-01-01
  • 解析iReport自定义行数分页的操作方法

    解析iReport自定义行数分页的操作方法

    ireport默认都是自动分页数据超出页面长度就会自动分到下一页,但有时候业务需要一页只显示固定几行这时候就需要自定义条数了。下面看具体操作吧
    2021-10-10
  • SpringBoot集成支付宝沙箱支付的实现示例

    SpringBoot集成支付宝沙箱支付的实现示例

    本文主要介绍了SpringBoot集成支付宝沙箱支付的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12

最新评论