当前位置: 首页> 财经> 股票 > 武汉楼市正常调整_北京seo公司wyhseo_怎么创建网站免费建立个人网站_百度推广登陆首页

武汉楼市正常调整_北京seo公司wyhseo_怎么创建网站免费建立个人网站_百度推广登陆首页

时间:2025/7/11 10:33:58来源:https://blog.csdn.net/weixin_40986713/article/details/145935175 浏览次数:0次
武汉楼市正常调整_北京seo公司wyhseo_怎么创建网站免费建立个人网站_百度推广登陆首页

响应流 | LangChain4j

介绍

本页描述了如何使用低级别的LLM(大语言模型)API实现响应流。如果需要高级别的LLM API,请参阅AI服务。

LLMs以逐个token的方式生成文本,因此许多LLM提供商提供了逐个token流式传输响应的功能,而无需等待整个文本生成完成。这显著提升了用户体验,因为用户不需要等待未知的时间,并且可以几乎立即开始阅读响应。

对于 ChatLanguageModelLanguageModel 接口,分别有对应的 StreamingChatLanguageModelStreamingLanguageModel 接口。这些接口具有类似的API,但可以流式传输响应。它们接受一个实现了 StreamingResponseHandler 接口的对象作为参数。


StreamingResponseHandler 接口定义

通过实现 StreamingResponseHandler,您可以定义以下事件的操作:

public interface StreamingResponseHandler<T> {void onNext(String token); // 当下一个token生成时调用default void onComplete(Response<T> response) {} // 当LLM完成生成时调用void onError(Throwable error); // 当发生错误时调用
}
  • 当生成下一个token时onNext(String token) 方法会被调用。例如,您可以立即将token发送到UI。
  • 当LLM完成生成时onComplete(Response<T> response) 方法会被调用。这里的 TStreamingChatLanguageModel 中表示 AiMessage,在 StreamingLanguageModel 中表示 StringResponse 对象包含完整的响应。
  • 当发生错误时onError(Throwable error) 方法会被调用。

示例代码

以下是如何使用 StreamingChatLanguageModel 实现流式传输的示例:

StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder().apiKey(System.getenv("OPENAI_API_KEY")).modelName(GPT_4_O_MINI).build();String userMessage = "Tell me a joke";
model.generate(userMessage, new StreamingResponseHandler<AiMessage>() {@Overridepublic void onNext(String token) {System.out.println("onNext: " + token);}@Overridepublic void onComplete(Response<AiMessage> response) {System.out.println("onComplete: " + response);}@Overridepublic void onError(Throwable error) {error.printStackTrace();}
});

使用 Lambda 表达式简化流式传输

为了更简洁地实现流式传输,可以使用 LambdaStreamingResponseHandler 类。该工具类提供了静态方法,允许您使用 lambda 表达式创建 StreamingResponseHandler

使用 lambda 表达式流式传输响应非常简单。只需调用 onNext() 静态方法,并提供一个定义如何处理 token 的 lambda 表达式:

import static dev.langchain4j.model.LambdaStreamingResponseHandler.onNext;model.generate("Tell me a joke", onNext(System.out::print));

同时定义 onNextonError 操作

onNextAndError() 方法允许您同时定义 onNext()onError() 事件的操作:

import static dev.langchain4j.model.LambdaStreamingResponseHandler.onNextAndError;model.generate("Tell me a joke", onNextAndError(System.out::print, Throwable::printStackTrace));

总结

通过响应流功能,LLM 可以逐个token生成文本并实时传递给用户,从而提升用户体验。无论是通过实现 StreamingResponseHandler 接口还是使用 LambdaStreamingResponseHandler 工具类,都可以灵活地处理流式传输的响应。


关键字:武汉楼市正常调整_北京seo公司wyhseo_怎么创建网站免费建立个人网站_百度推广登陆首页

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: