Commit 4fdc510f by zhangxingmin

push

parent 18044d65
......@@ -92,27 +92,34 @@ public class ApiAiStreamServiceImpl implements ApiAiStreamService {
Publisher<GenerationResult> publisher = null;
try {
publisher = gen.streamCall(param);
} catch (NoApiKeyException e) {
e.printStackTrace();
} catch (InputRequiredException e) {
e.printStackTrace();
} catch (NoApiKeyException | InputRequiredException e) {
log.error("流式调用初始化失败", e);
sink.error(e);
return;
}
Flowable<GenerationResult> flowable = Flowable.fromPublisher(publisher)
.subscribeOn(Schedulers.io()); // 使用 RxJava3 的 Schedulers.io()
.subscribeOn(Schedulers.io());
// 用于累计完整文本的 StringBuilder
StringBuilder fullContent = new StringBuilder();
flowable.subscribe(
result -> {
String delta = result.getOutput().getChoices().get(0).getMessage().getContent();
// 实时着色并打印
printWithStyle(delta);
System.out.flush();
sink.next(delta);
// 拼接到累计文本中
fullContent.append(delta);
// 将当前完整内容发送给前端
sink.next(fullContent.toString());
},
error -> {
log.error("流式调用出错", error);
sink.error(error);
},
sink::complete
() -> {
log.info("流式输出完成,总长度: {}", fullContent.length());
sink.complete();
}
);
});
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment