타입 별칭: StructuredOutputStream<T>
type StructuredOutputStream<T> = AsyncIterable<
| Exclude<StreamChunk, CustomEvent>
| StructuredOutputStartEvent
| StructuredOutputCompleteEvent<T>
| ApprovalRequestedEvent
| ToolInputAvailableEvent>;
정의 위치: packages/ai/src/types.ts:1598
chat({ outputSchema, stream: true })이 반환하는 스트림의 공개 타입입니다.
표준 StreamChunk 라이프사이클 이벤트를 모두 반환하며, 이 경로를 통해 방출되는 타입화된 CUSTOM 구조화된 출력 이벤트도 포함합니다:
structured-output.complete— 타입화된value.object: T을 갖는 종단 이벤트
도구 승인 및 클라이언트 도구 입력과 같이 사용자 작업이 필요한 대기는 현재 코어 스트림에서 RUN_FINISHED.outcome.type === 'interrupt'로 표현됩니다. 레거시 approval-requested 및 tool-input-available 커스텀 이벤트는 재생과 하위 호환성을 위해 여전히 소비할 수 있지만, 현재 대기의 기준 정보는 아닙니다.
각 변형에는 리터럴 name이 있으므로, 판별된 단일 narrowing만으로 헬퍼나 캐스트 없이 타입이 지정된 value를 얻을 수 있습니다.
for await (const chunk of stream) {
if (chunk.type === 'CUSTOM' && chunk.name === 'structured-output.complete') {
chunk.value.object // typed as T
}
}
주의: 도구는 emitCustomEvent(name, value) 컨텍스트 API를 통해 임의의 사용자 정의 커스텀 이벤트를 발생시킬 수 있습니다. 이러한 이벤트는 런타임에 이 스트림을 통과하지만 의도적으로 이 타입에서 제외됩니다. CustomEvent를 그대로 포함하면(value: any가 유니언을 오염시키므로) narrowing 후 chunk.value가 다시 any로 축소됩니다. emitCustomEvent와 outputSchema + stream: true를 함께 사용하는 경우 리터럴 name narrowing의 바깥에서 CUSTOM을 분기하거나 명시적으로 캐스트하세요.
타입 매개변수
T
T = unknown