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)