1. 背景
需要对接某个大模型的流式http对话接口,因为该项目中还需要对接另外的大模型服务但是另一个请求方式为websocket,为了实现模型服务切换以及对客户端做统一的流式响应,需要对大模型服务的调用做统一的流式响应封装。
环境:JDK11
2. 代码
2.1 回调函数
@FunctionalInterface
public interface LLMChatCallback {
void callback(String message);
}
2.2 统一对话接口
public interface LLMService {
/**
* 模型对话
*
* @param payload 用于请求大模型的参数
* @param callback 响应回调 调用者通过实现callback函数接收消息
**/
void dialogue(String payload, LLMChatCallback callback);
}
2.3 StringSubscriber
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
/**
* http响应式流订阅
**/
@Slf4j
public class StringSubscriber implements Flow.Subscriber<String> {
Flow.Subscription subscription;
/**
* 消息回调接口
*/
private