03、LLM的流式响应

LLM流式响应介绍与示例

一、简单介绍

LLM每次生成一个令牌,所以基本上LLM都会提供一种逐个令牌传输响应的方法,而不是等待整个文本的生成。这可以极大地改善用户体验,因为此时用户不需要待待未知的时间,几乎可以立即开始阅读响应。

对于ChatLanguageModel和LanguageModel接口有对应的StreamingChatLanguageModel和StreamingLanguageModel接口。他们的API是类似的,但是可以流式传输响应。

对于流式响应的Model,它们接收StreamResponseHandler接口的实现作为参数。在这个实现中我们可以对于流式响应的结果进行处理。

下面是关于StreamingResponseHandler<T>的定义

public interface StreamingResponseHandler<T> {

    void onNext(String token);
 
    default void onComplete(Response<T> response) {}

    void onError(Throwable error);
}

通过实现StreamingResponseHandler,可以为以下事件定义动作:

  • 当生成下一个令牌时会调用onNext(String token),这样的话可以在令牌可用后立即发送到UI
  • 当LLM生成完成时,调用onComplete(Response<T> response),这里的T表示StreamingChatLanguageModel中的AiMessage,所以response中包含了完整响应
  • 当发生错误时,调用onError(Throwable error)

二、示例

我们如果需要使用到流式响应,我们需要添加依赖

<dependency>
    &l
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值