LangChain4j 从入门到放弃,java可以使用的 LLM 大模型 AI 框架(5)响应流

注意:本篇文章建立在官方文档的理解上,文章会围绕官方文档去书写,博主会根据对框架的理解去动态修改文章内容,由于该框架的官方文档写的并不是很详细,市面上也没有特别详细的教程,所以博主也不能很全面的理解整个框架,但是对于入门来说,已经足够了,如果有看不懂的地方建议把全部文章都阅读一遍后再回顾会有不同的理解。

响应流(Response Streaming)

官网 Response Streaming 介绍

如果大家使用过AI工具,会发现AI工具在回答时是实时输出内容的,而不是我们上面那样一下就把内容全部返回,如果要实现流式输出就要用到本节的流式接口。

由于 LLMs 是逐个生成令牌(Token)的,因此许多 LLM 提供商支持令牌流式传输,以便响应可以逐步传递给用户,而不必等待完整内容生成完成。流式响应显著提升用户体验,因为用户可以即时读取 AI 的部分生成内容。

流式接口:StreamingChatLanguageModelStreamingLanguageModel

ChatLanguageModelLanguageModel 基础接口上,LangChain4j 提供了支持流式响应的 StreamingChatLanguageModelStreamingLanguageModel 接口。这些接口的 API 类似,但可以实时接收生成的内容。

流式接口接受 StreamingResponseHandler 实现作为参数,定义了流式生成内容的处理方式:

public interface StreamingResponseHandler<T> {
   
    
    
    void onNext(String token); // 每生成一个令牌时调用
    default void onComplete(Response<T> response) {
   
    
    } // 完成生成时调用
    void onError(Throwable error); // 发生错误时调用