Spring Boot 实现 SSE 流式输出

SSE(Server-Sent Events)是一种基于 HTTP 的服务器推送技术,允许服务器向客户端持续发送数据流。Spring Boot 提供了对 SSE 的原生支持,适用于实时数据推送场景,如智能体的实时响应。

在 Spring Boot 中实现 SSE 流式输出需要使用 SseEmitter 类。以下是一个完整的示例:

@RestController
@RequestMapping("/api/sse")
public class SseController {

    private final Map<String, SseEmitter> emitters = new ConcurrentHashMap<>();

    @GetMapping("/subscribe")
    public SseEmitter subscribe() {
        SseEmitter emitter = new SseEmitter(60_000L); // 设置超时时间为60秒
        String clientId = UUID.randomUUID().toString();
        emitters.put(clientId, emitter);

        emitter.onCompletion(() -> emitters.remove(clientId));
        emitter.onTimeout(() -> emitters.remove(clientId));

        return emitter;
    }

    @PostMapping("/send")
    public void sendMessage(@RequestBody String message) {
        emitters.forEach((id, emitter) -> {
            try {
                emitter.send(SseEmitter.event()
                    .name("message")
                    .data(message));
            } catch (IOException e) {
                emitter.complete();
                emitters.remove(id);
            }
        });
    }
}

智能体实时响应实现

结合 SSE 和智能体技术,可以实现实时的问答交互。以下是一个结合 OpenAI API 的智能体响应示例:

@Service
public class AIService {

    private final OpenAiService openAiService;

    public AIService(@Value("${openai.api.key}") String apiKey) {
        this.openAiService = new
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐