홈 / 블로그 / 개발 노트

AI 답변이 느리게 느껴질 때, 스트리밍 응답부터 붙여요

개발 노트SOL LABS AI읽는 데 6분

AI 기능을 서비스에 붙이면 꼭 듣는 말이 있어요. "답은 좋은데 너무 오래 걸려요." 긴 답일수록 모델이 마지막 글자까지 다 만든 뒤에야 화면에 나타나니, 사용자는 그동안 빈 화면만 보게 돼요.

이 글은 답이 만들어지는 대로 조금씩 화면에 보여 주는 방법, 스트리밍 응답을 Anthropic과 OpenAI의 공식 문서 기준으로 정리했어요. 데모에서 출시까지 · API 비용 · 구조화 출력에 이어지는 AI 기능 개발 시리즈 4편이에요.

스트리밍은 무엇이 달라지나

일반 요청은 답이 다 만들어진 다음 한 번에 돌아와요. 요청할 때 stream 옵션을 켜면, 서버가 답을 작은 조각으로 나눠 계속 보내 줘요. 이때 쓰는 방식이 SSE(Server-Sent Events, 서버가 연결을 열어 둔 채 데이터를 이어서 보내는 웹 표준)예요.

답이 끝나는 시간은 비슷해도, 첫 글자가 화면에 나오는 시점이 앞당겨져요. 사용자는 AI가 일하고 있다는 걸 바로 보고, 앞부분을 읽으면서 기다릴 수 있어요.

구분일반 응답스트리밍 응답
화면에 보이는 시점답이 다 만들어진 뒤첫 조각이 오자마자
긴 답요청 시간 초과 위험연결을 유지하며 받음
개발 난이도쉬움이벤트 처리 필요

Anthropic 문서는 출력 길이(max_tokens)를 크게 잡은 요청에는 SDK가 HTTP 시간 초과를 피하려고 스트리밍을 요구한다고 안내해요. 긴 보고서나 문서를 만드는 기능이라면 처음부터 스트리밍으로 설계하는 게 좋아요.

받는 쪽은 '이벤트'를 순서대로 처리해요

스트리밍 답은 글자만 오는 게 아니라, 종류 이름이 붙은 이벤트로 와요.

  • Anthropic: message_start → content_block_start → content_block_delta(글자 조각, 여러 번) → content_block_stop → message_delta → message_stop
  • OpenAI(Responses API): response.created → response.output_text.delta(글자 조각, 여러 번) → response.completed

화면 코드는 글자 조각(delta)을 이어 붙여 보여 주고, 끝 이벤트가 오면 저장하거나 다음 단계로 넘어가면 돼요. Anthropic 문서는 중간에 ping 이벤트가 섞일 수 있고 앞으로 새 이벤트 종류가 추가될 수 있으니, 모르는 이벤트는 오류 없이 넘기라고 안내해요.

우리 회사 자료로 직접 확인해 보고 싶다면AI 도입 진단 · 자료를 보고 적용 후보와 순서를 정리해 드려요상담 신청

중간에 끊길 때를 미리 정해요

스트리밍은 연결이 길게 열려 있는 만큼, 도중에 문제가 생길 수 있어요. Anthropic 문서는 사용량이 몰릴 때 스트림 도중에 overloaded_error 이벤트가 올 수 있다고 적어 두었고, OpenAI도 스트림 중 error 이벤트를 따로 둬요.

  • 이미 받은 글은 지우지 않기: 끊긴 지점까지는 화면에 남기고 "이어 받기" 버튼을 보여 줘요
  • 이어 받기 방법 정하기: Anthropic 문서는 받은 부분을 다음 요청에 넣어 이어 쓰게 하는 복구 방법을 모델 버전별로 안내해요
  • 끝 이벤트를 받았을 때만 저장: 중간 조각을 저장하면 반쪽짜리 답이 남아요
  • 멈춤 버튼 두기: 원하는 답이 아니면 사용자가 바로 끊을 수 있게 해요

구조화 출력 · 검수와 같이 쓸 때

지난 글에서 다룬 구조화 출력(JSON)과 함께 쓸 때는 주의할 점이 있어요. 조각으로 오는 JSON은 끝나기 전까지 완성된 데이터가 아니에요. Anthropic 문서도 도구 입력은 부분 JSON 문자열로 오니, 모아 두었다가 블록이 끝난 뒤 해석하라고 안내해요.

글은 흘려서 보여 주고, 데이터는 다 받은 뒤에 쓴다. 이 원칙 하나면 대부분의 실수를 막을 수 있어요.

또 OpenAI 문서는 스트리밍 중간 결과는 내용 검수(모더레이션)가 더 어렵다고 짚어요. 고객에게 바로 보이는 화면이라면 조각 단위로 최소한의 검사를 두거나, 검수가 끝난 뒤 공개하는 화면과 나눠서 설계하세요.

붙이는 순서 정리

  1. 답이 길어지는 기능부터 stream 옵션을 켜요
  2. 글자 조각 이벤트만 이어 붙여 화면에 보여 줘요
  3. 끝 이벤트에서 저장하고, 오류 이벤트에서는 이어 받기를 보여 줘요
  4. JSON · 검수가 필요한 결과는 다 받은 뒤에 처리해요

기다림이 줄면 같은 AI 기능도 훨씬 빠르게 느껴져요. 답이 가장 긴 화면 하나에서 먼저 시험해 보고 넓혀 가세요.

참고

  • Anthropic, Streaming Messages: https://platform.claude.com/docs/en/build-with-claude/streaming
  • OpenAI, Streaming API responses: https://developers.openai.com/api/docs/guides/streaming-responses
비슷한 시스템을 만들고 싶다면

기존 시스템과 데이터를 보고 옮기는 순서와 범위를 먼저 정리해 드려요.

개발 상담먼저 3분 AI 도입 자가진단으로 적용처를 찾아보세요 →
SOL LABS AI

웹 · 앱 · 업무 시스템을 만들고 그 위에 필요한 AI를 붙여 운영하는 팀이에요. 회의록 · 계약서 · 기업 분석 AI를 직접 만들어 운영해요.

만든 프로젝트 보기
다음 글도 받아 볼까요?

함께 보면 좋은 글