| | |
| | | private final ObjectMapper objectMapper; |
| | | |
| | | public void markFirstToken(AtomicReference<Long> firstTokenAtRef, SseEmitter emitter, String requestId, |
| | | Long sessionId, String model, long startedAt, AiThinkingTraceEmitter thinkingTraceEmitter) { |
| | | Long sessionId, String model, long startedAt, AiChatTraceEmitter traceEmitter) { |
| | | if (!firstTokenAtRef.compareAndSet(null, System.currentTimeMillis())) { |
| | | return; |
| | | } |
| | | if (thinkingTraceEmitter != null) { |
| | | thinkingTraceEmitter.startAnswer(); |
| | | if (traceEmitter != null) { |
| | | traceEmitter.startAnswer(); |
| | | } |
| | | emitSafely(emitter, "status", AiChatStatusDto.builder() |
| | | .requestId(requestId) |