applicationResultFlowable.observeOn(Schedulers.io())
.map(applicationResult -> {
// 在prompt提到“画图”时,无法获取模型输出的text内容呢
return applicationResult.getOutput().getText();
})
.map(message -> message.replaceAll("\\s",""))
.filter(StringUtils::isNotBlank)
.flatMap(message ->{
String prevMessage = previousMessage.get();
String newMessage;
if (message.startsWith(prevMessage)) {
newMessage = message.substring(prevMessage.length());
} else {
newMessage = message;
}
previousMessage.set(message);
return Flowable.just(newMessage);
})
.scan(new StringBuilder(), (builder, part) -> builder.append(part))
.map(StringBuilder::toString)
.doOnNext(finalMessage -> {
})
.doOnError((e) -> log.error("sse error",e))
.doOnComplete(() -> {
emitter.complete();
})
.subscribe();
这里有几个可能的原因及相应的解决思路:
.reduce()
或.collect()
操作中合并所有部分,确保在处理之前已经收到了完整的响应。.observeOn(Schedulers.io())
指定了IO调度器,确保在处理响应数据时没有跨线程的数据竞争问题,特别是在更新previousMessage
这样的共享状态时。.doOnError()
来捕获错误,但没有具体的错误处理逻辑。请检查日志,看是否有相关的错误信息,这可能会指向问题所在。解决思路:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。