Spring AI 最新聊天api使用与旧版对比

Spring AI 最新聊天api使用与旧版对比

​ 随着人工智能技术的飞速发展,聊天机器人已经成为许多应用和服务中的关键组件。Spring AI作为一款广受欢迎的AI开发框架,在2024年5月22日,Spring AI官方对聊天客户端API进行了重构升级,由聊天完成API变为聊天模型API和聊天客户端API,相比与旧版有了较大的变化。本文将深入探讨Spring AI最新聊天API的使用方法,并与旧版API进行详细对比,帮助开发者更好地理解并应用这一新工具。

主要变化

  • 细化聊天响应的类型方法调用

    我们不使用自动装配的方案来对比新旧版本的使用,以至于更直观的感受到二者的区别。

    在0.8.1版本之前的聊天接口使用是这样的:

    OpenAiChatClient openAiChatClient = new OpenAiChatClient(new OpenAiApi(baseUrl, apiKey));
    Flux<ChatResponse> stream = openAiChatClient.stream(prompt);
    // or ChatResponse chatResponse = openAiChatClient.call(prompt);
    

    在最新的1.0.0-SNAPSHOT版本中,引入了新的StreamingChatModel和ChatModel接口,使得代码更加简洁和模块化。

    流式返回:

    StreamingChatModel chatModel = new OpenAiChatModel(new OpenAiApi(baseUrl, apiKey));
    Flux<ChatResponse> stream = chatModel.stream(prompt);
    

    非流式返回:

    ChatModel chatModel = new OpenAiChatModel(new OpenAiApi(baseUrl, apiKey));
    ChatResponse chatResponse = chatModel.call(prompt);
    

    通过这些改进,最新版API不仅在功能和性能上得到了提升,而且在代码的可读性和易用性上也有了显著的改进。这使得开发者可以更方便地使用这些API来实现各种聊天功能。

  • 新的客户端构建方式

    新版Spring AI聊天API引入了ChatClient.Builder的客户端构建方式,使得构建和使用聊天客户端更加灵活和方便。

    首先,使用ChatModelOpenAiChatModel初始化API:

    ChatModel chatModel = new OpenAiChatModel(new OpenAiApi(baseUrl, apiKey));
    ChatClient chatClient = ChatClient.create(chatModel); // or ChatClient.builder(chatModel).build()
    

    然后,根据需要选择非流式或流式的返回方式:

    非流式返回:

    String content = chatClient.prompt(prompt).call().content();
    List<String> contents = chatClient.prompt(prompt).call().contents();
    ChatResponse chatResponse = chatClient.prompt(prompt).call().chatResponse();
    

    流式返回:

    Flux<String> stream = chatClient.prompt(prompt).stream().content();
    Flux<ChatResponse> stream = chatClient.prompt(prompt).stream().chatResponse();
    

    通过这种方式,开发者可以更灵活地选择适合自己需求的返回形式,使代码更简洁易读,并且提升了开发效率和代码的可维护性。

总结

​ 通过对比Spring AI聊天API的新旧版本,我们可以清晰地看到新版API引入了更灵活的构建方式和更简洁的代码接口,使得开发者能够更加高效地开发和维护聊天应用。

2 个赞