当前位置: 首页 > news >正文

langChain4j-流式输出

基础搭建如上一篇

引入依赖

<!--    不是spring家族,在wen应用中需要引入webflux --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>

配置文件

langchain4j:community:dashscope:chat-model:api-key: xxxmodel: qwen-maxstreaming-chat-model:api-key: xxxmodel: qwen-32b

测试

package com.yd.langchain4j_springboot;import dev.langchain4j.community.model.dashscope.QwenChatModel;
import dev.langchain4j.community.model.dashscope.QwenStreamingChatModel;
import dev.langchain4j.model.chat.response.ChatResponse;
import dev.langchain4j.model.chat.response.StreamingChatResponseHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;@RestController
@RequestMapping("ai")
public class ChatController {@AutowiredQwenChatModel qwenChatModel;@AutowiredQwenStreamingChatModel qwenStreamingChatModel;@RequestMapping("/chat")public String test(@RequestParam(defaultValue="你是谁") String message){String chat = qwenChatModel.chat(message);return chat;}@RequestMapping(value = "/stream",produces = "text/stream;charset=UTF-8")public Flux<String> stream(@RequestParam(defaultValue="你是谁") String message){return Flux.create(sink->{//需要两个参数,第二个参数为一个handler,需要重写三个方法qwenStreamingChatModel.chat(message, new StreamingChatResponseHandler() {@Overridepublic void onPartialResponse(String s) {//返回一个个tokensink.next(s);}@Overridepublic void onCompleteResponse(ChatResponse chatResponse) {sink.complete();}@Overridepublic void onError(Throwable throwable) {sink.error(throwable);}});});}
}

效果

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 前端压缩图片的免费软件
  • C# winform教程(二)----ComboBox
  • Pycharm(二十)神经网络入门
  • 【技术】记一次 Docker 中的 ES 数据迁移,使用 Reindex API
  • 运行ollama V0.9.1 异常 GLIBC_2.27 not found
  • 香橙派3B学习笔记12:C语言操作GPIO_<wiringPi.h>_点灯通用输入输出
  • 数字孪生:为UI前端设计带来前所未有的创新体验
  • 《解构线性数据结构的核心骨架:从存储模型到操作范式的深度解析》
  • 深度学习进阶:卷积神经网络(CNN)原理与实战
  • Vue 3 常用响应式数据类型详解:ref、reactive、toRef 和 toRefs
  • 卫星通信链路预算之二:带宽和功带平衡
  • YOLO进化史:从v1到v12的注意力革命 —— 实时检测的“快”与“准”如何兼得?
  • 用ε贪婪算法解决多老虎机问题
  • 简单了解TypeScript
  • Java实现10大经典排序算法
  • 【操作系统】macOS软件提示“已损坏,打不开”的解决方案
  • 数字ic后端设计从入门到精通8(含fusion compiler, tcl教学)ULVTLL、LVT、ULVT详解及应用
  • 游戏技能编辑器界面优化设计
  • AEO:从搜索引擎到答案引擎,AI时代搜索优化的新战场
  • MSPM0G3507学习笔记(三)软硬I2C任意切换,兼容HAL:oled与mpu6050
  • 网站站点建设/免费一键搭建网站
  • 肇庆微网站/网站快速收录技术
  • wordpress整站搬家/网络推广怎么找客户资源
  • 餐饮加盟培训网站建设/十种营销方式
  • 大连网站建设选高和科技/今日热点新闻事件
  • 怎么把网站做成手机网站/今天上海最新新闻事件