스트리밍 상태는 표시되는데 텍스트가 안 나올 때
스트리밍 상태는 표시되는데 텍스트가 안 나올 때 (Streaming Status Shows But No Text Appears)
useChat에서 상태가 "streaming"으로 바뀌는데 몇 초간 텍스트가 안 나타나는 상황을 다루는 문서예요. 상태가 '스트리밍'으로 바뀌는 것과 실제 LLM 토큰이 도착하는 시점 사이에 괴리가 있기 때문에, 커스텀 로딩 상태를 만들어야 하는 게 핵심이에요.
출처: 문서
본문
문제 (Issue)
useChat을 사용할 때 상태가 즉시 "streaming"으로 바뀌지만, 몇 초 동안 텍스트가 나타나지 않습니다.
배경 (Background)
서버와의 연결이 수립되고 스트리밍이 시작되는 순간 상태가 "streaming"으로 바뀝니다 — 여기에는 LLM이 생성한 토큰뿐 아니라 메타데이터 스트리밍까지 포함됩니다.
해결 방법 (Solution)
마지막 assistant 메시지에 실제로 콘텐츠가 들어있는지 확인하는 커스텀 로딩 상태를 만드세요:
'use client';
import { useChat } from '@ai-sdk/react';
export default function Page() {
const { messages, status } = useChat();
const lastMessage = messages.at(-1);
const showLoader =
status === 'streaming' &&
lastMessage?.role === 'assistant' &&
lastMessage?.parts?.length === 0;
return (
<>
{messages.map(message => (
<div key={message.id}>
{message.role === 'user' ? 'User: ' : 'AI: '}
{message.parts.map((part, index) =>
part.type === 'text' ? <span key={index}>{part.text}</span> : null,
)}
</div>
))}
{showLoader && <div>Loading...</div>}
</>
);
}
특정한 것을 기다리고 있다면, 특정 파츠 타입을 확인할 수도 있습니다:
const showLoader =
status === 'streaming' &&
lastMessage?.role === 'assistant' &&
!lastMessage?.parts?.some(part => part.type === 'text');
관련 이슈 (Related Issues)
더 알아보기 (Learn more)
- Azure OpenAI 스트리밍 느림
- 클라이언트 컴포넌트에서의 Server Actions
- useChat/useCompletion 스트림 출력에 0:... 가 텍스트 대신 표시됨
- Streamable UI 오류
- Tool Invocation 결과 누락 오류
- 배포했을 때 스트리밍 안 됨
- 프록시를 거칠 때 스트리밍 안 됨
- Vercel에 배포할 때 타임아웃
- 닫히지 않은 스트림
- useChat 스트림 파싱 실패
- Server Action plain objects 오류
- useChat 응답 없음
- useChat에서 커스텀 headers/body/credentials가 동작하지 않음
- Zod와 AI SDK 5에서 TypeScript 성능 문제
- useChat "An error occurred" 오류
- useChat에서 assistant 메시지 반복
- 스트림이 중단될 때 onEnd가 호출되지 않음
- 구조화된 출력과 함께하는 도구 호출
- 중단(abort)과 이어서 재개 가능한 스트림
- streamText가 조용히 실패함
- 스트리밍 상태는 표시되는데 텍스트가 안 나옴
- useChat과 함께하는 stale body 값
- onToolCall과 함께하는 타입 오류
- 지원되지 않는 모델 버전 오류
- OpenAI에서 객체 생성 실패
- 도구 결과 누락 오류
- 모델이 "LanguageModelV1" 타입에 할당되지 않음
- TypeScript 오류 "Cannot find namespace 'JSX'"
- React 오류 "Maximum update depth exceeded"
- Jest: '@ai-sdk/rsc' 모듈을 찾을 수 없음
- 많은 이미지를 처리할 때 높은 메모리 사용