𝗗𝗲𝗯𝘂𝗴𝗴𝗶𝗻𝗴 𝗔𝗜 𝗦𝘁𝗿𝗲𝗮𝗺𝗶𝗻𝗴: 𝗖𝗵𝘂𝗻𝗸𝘀 𝗮𝗻𝗱 𝗧𝗶𝗺𝗲𝗼𝘂𝘁𝘀

AI 채팅 인터페이스를 만들었습니다. 단어 단위로 응답이 나오길 원했습니다. 하지만 실패했습니다. 응답이 단어 중간에 끊겨버렸습니다.

타임아웃 시간을 늘려보았습니다. 효과가 없었습니다. 재시도 루프(retry loops)를 시도했습니다. 이로 인해 단어가 중복되었습니다. 버퍼링을 시도했습니다. 앱이 느려졌습니다.

원인은 파싱(parsing) 오류였습니다. API는 JSON-LD 라인을 전송합니다. 제 코드는 스트림이 끝나기 전에 멈췄습니다. 종료 신호를 무시한 것이었습니다.

해결책:

  • 라인 대신 바이트(bytes)를 사용하세요.
  • 버퍼를 수동으로 관리하세요.
  • [DONE] 신호를 찾으세요.
  • 연결을 계속 열어두세요.

그러자 프론트엔드가 멈췄습니다. React가 너무 빠르게 업데이트되었습니다. 이를 해결하기 위해 서버에 쓰로틀링(throttling)을 적용했습니다.

여러분에게 드리는 팁:

  • 스트리밍 사양(spec)을 읽어보세요.
  • 명시적인 종료 이벤트(end event)를 찾으세요.
  • SSE 라이브러리를 사용하세요.
  • 데이터를 추적하세요.

스트림이 깔끔하게 종료될 것이라고 절대 믿지 마세요.

여러분이 겪은 가장 이상한 스트리밍 버그는 무엇인가요?

출처: https://dev.to/__c1b9e06dc90a7e0a676b/debugging-ai-streaming-a-tale-of-chunks-and-timeouts-1p6m