马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Langchaine4j 流式输出
大模型的流式输出是指大模型在生成文本或其他类型的数据时,不是等到整个生成过程完成后再一次性
返回所有内容,而是生成一部门就立即发送一部门给用户或卑鄙体系,以逐步、逐块的方式返回效果。
如许,用户就不须要等待整个文本生成完成再看到效果。通过这种方式可以改善用户体验,由于用户不
须要等待太长时间,几乎可以立即开始阅读响应。
流式输出
添加流式输出依靠
- <!--流式输出-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-webflux</artifactId>
- </dependency>
- <dependency>
- <groupId>dev.langchain4j</groupId>
- <artifactId>langchain4j-reactor</artifactId>
- </dependency>
复制代码 利用流式输出模型
- langchain4j:
- # 接入阿里百炼平台
- community:
- dashscope:
- streaming-chat-model:
- api-key: ${ALI_BAILIAN_TOKEN}
- model-name: qwen-plus
复制代码 创建流式Assistant
- @AiService(wiringMode = AiServiceWiringMode.EXPLICIT,
- streamingChatModel = "qwenStreamingChatModel", // 这里注入 千问流式模型
- chatMemory = "chatMemory")
- public interface StreamAssistant {
- // 使用WebFlux接受流式模型返回
- Flux<String> chat( String userMessage);
- }
复制代码 测试流式输出
- @SpringBootTest
- public class StreamModelTest {
- @Resource
- private StreamAssistant streamAssistant;
- @Test
- public void testStreamModel() throws InterruptedException {
- Flux<String> responseFlux = streamAssistant.chat("1+2等于几,322233222345的平方根是多少?");
- CountDownLatch latch = new CountDownLatch(1);
- responseFlux
- .doOnSubscribe(sub -> System.out.println("Subscribed to flux"))
- .subscribe(
- chunk -> System.out.println("Received: " + chunk),
- throwable -> {
- System.err.println("Error occurred: " + throwable.getMessage());
- latch.countDown();
- },
- () -> {
- System.out.println("Completed");
- latch.countDown();
- }
- );
- latch.await();
- }
- }
复制代码
- 接口流式测试
创建对外接口:
- @RestController
- @RequestMapping("/stream")
- public class StreamController {
- @Resource
- private StreamAssistant streamAssistant;
- @Operation(summary = "对话")
- @GetMapping(value = "/chat", produces = "text/stream;charset=utf-8") // 设置响应类型为流式文本,并指定字符集为UTF-8
- public Flux<String> chat() {
- return streamAssistant.chat("1+2等于几,322233222345的平方根是多少?");
- }
- }
复制代码
|