createUIMessageStreamResponse — UI 메시지를 Response로 스트리밍
createUIMessageStreamResponse — UI 메시지를 Response로 스트리밍
createUIMessageStreamResponse 함수는 UI 메시지를 클라이언트로 스트리밍하는 Response 객체를 만들어요. 서버 API 라우트에서 채팅 응답을 반환할 때 쓰는 함수예요.
출처: 문서
본문
createUIMessageStreamResponse 함수는 UI 메시지를 클라이언트로 스트리밍하는 Response 객체를 만들어요.
Import
import { createUIMessageStreamResponse } from "ai"
예시
import {
createUIMessageStream,
createUIMessageStreamResponse,
streamText,
toUIMessageStream,
} from 'ai';
__PROVIDER_IMPORT__;
const response = createUIMessageStreamResponse({
status: 200,
statusText: 'OK',
headers: {
'Custom-Header': 'value',
},
stream: createUIMessageStream({
execute({ writer }) {
// 외부 스트림이 어시스턴트 메시지 라이프사이클을 소유해요.
writer.write({ type: 'start' });
// 커스텀 데이터 쓰기 (type은 'data-<name>'이어야 해요)
writer.write({
type: 'data-message',
data: { content: 'Hello' },
});
// start/delta/end 패턴으로 텍스트 내용 쓰기
writer.write({
type: 'text-start',
id: 'greeting-text',
});
writer.write({
type: 'text-delta',
id: 'greeting-text',
delta: 'Hello, world!',
});
writer.write({
type: 'text-end',
id: 'greeting-text',
});
// 소스 정보 쓰기 (중첩이 아닌 평평한 속성)
writer.write({
type: 'source-url',
sourceId: 'source-1',
url: 'https://example.com',
title: 'Example Source',
});
// LLM 스트림과 병합
const result = streamText({
model: __MODEL__,
prompt: 'Say hello',
});
writer.merge(
toUIMessageStream({ stream: result.stream, sendStart: false }),
);
},
}),
});
API 시그니처
파라미터
stream:ReadableStream<UIMessageChunk>— 클라이언트로 보낼 UI 메시지 스트림.status:number— 응답의 상태 코드. 기본값은 200 (선택).statusText:string— 응답의 상태 텍스트 (선택).headers:Headers | Record<string, string>— 응답의 추가 헤더 (선택).consumeSseStream:(options: { stream: ReadableStream<string> }) => PromiseLike<void> | void— Server-Sent Events 스트림을 소비하는 선택적 콜백 (선택).
반환값
Response — 지정된 상태, 헤더, 내용으로 UI 메시지 청크를 스트리밍하는 Response 객체를 반환해요.
더 알아보기 (Learn more)
- createUIMessageStream — UI 메시지 스트림 만들기
- useChat — 채팅 훅