大家好,我是小米,一个爱折腾技术的 31 岁程序员,最近在用 Java 做 AI 应用,发现一个超级好用的工具:LangChain4J!
前几天我们团队在做一个类似“ChatGPT小助手”的功能需求,产品妹子一句话点醒我:“能不能像 ChatGPT 一样一句话一句话地滚出来?那种打字的感觉很棒耶~”
作为技术负责人,我一听这话就嗅到了“流式响应”的味道。然后我火速研究了一下 LangChain4J,发现它的流式输出不仅好用,还支持三种不同的方式!今天我就来和大家 分享我亲测实战的经验:如何用 LangChain4J 实现 Chat 聊天的流式输出!
我们会介绍三种方式:
- StreamingResponseHandler
- TokenStream
- Flux(是的!和 Reactor 结合,超丝滑~)
每一种我都会讲讲背后的使用场景、代码演示,以及我踩过的坑和小Tips,文章有点长,但都是干货哈!
场景简介:为什么要流式输出?
在讲代码前,我想先和大家讲个故事。
我们做的这个 Chat 项目,是一个面向用户的“智能客服小助手”。一开始我们返回的就是普通的完整文本响应,但有个用户反馈说:
“你这个AI聊天有点冷冰冰的,一下子说一大段话,看起来不太真实。”
我就想到 ChatGPT 的流式输出,那个一字一句逐渐滚出来的感觉真的非常棒,不仅增强了“