Spring boot3 中使用Spring WebFlux 响应式请求ChatGPT 接收text/event-stream流的数据(原来流式这样玩)
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@RestController
public class ChatGPTController {
private final ChatGPTService chatGPTService;
public ChatGPTController(ChatGPTService chatGPTService) {
this.chatGPTService = chatGPTService;
}
@GetMapping(path = "/chatgpt", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamChatGPTResponses(Mono<ChatRequest> chatRequest) {
return chatGPTService.streamChatResponses(chatRequest);
}
}
在这个例子中,我们定义了一个名为ChatGPTController
的控制器,它提供了一个通过GET
请求访问/chatgpt
路径的端点,该请求返回一个Flux<String>
类型的响应,表示一系列的响应流。这个响应流的媒体类型是text/event-stream
,这对应于服务器端发送的无限数据流,如同客户端订阅的事件。这个流由ChatGPTService
处理,并且可以接收一个Mono<ChatRequest>
类型的单个请求作为参数。这个例子展示了如何在Spring WebFlux中创建响应式的流式响应。
评论已关闭