인터페이스: TextAdapter<TModel, TProviderOptions, TInputModalities, TMessageMetadataByModality, TToolCapabilities, TToolCallMetadata, TSystemPromptMetadata>
정의 위치: packages/ai/src/activities/chat/adapter.ts:67
제네릭이 미리 확인된 텍스트 어댑터 인터페이스입니다.
어댑터는 provider 함수로 생성됩니다: provider('model') → adapter
모든 타입 확인은 이 인터페이스가 아니라 provider 호출 지점에서 수행됩니다.
제네릭 매개변수:
- TModel: 특정 모델 이름(예: 'gpt-4o')
- TProviderOptions: 이 모델의 provider별 옵션(이미 확인됨)
- TInputModalities: 이 모델이 지원하는 입력 모달리티(이미 확인됨)
- TMessageMetadata: 콘텐츠 부분의 메타데이터 타입(이미 확인됨)
- TToolCapabilities: 이 모델이 지원하는 도구 종류 문자열의 튜플이며,
supports.tools에서 확인됨 - TToolCallMetadata: 도구 호출과 왕복되는 메타데이터 타입(예: Gemini의
thoughtSignature) - TSystemPromptMetadata: 각
systemPrompts[i]항목에서 허용되는 provider 타입 메타데이터(예: Anthropiccache_control). 기본값은never이며, 프롬프트별 메타데이터가 없는 어댑터는 호출 지점에서metadata필드를 거부합니다.
타입 매개변수
TModel
TModel extends string
TProviderOptions
TProviderOptions extends Record<string, any>
TInputModalities
TInputModalities extends ReadonlyArray<Modality>
TMessageMetadataByModality
TMessageMetadataByModality extends DefaultMessageMetadataByModality
TToolCapabilities
TToolCapabilities extends ReadonlyArray<string> = ReadonlyArray<string>
TToolCallMetadata
TToolCallMetadata = unknown
TSystemPromptMetadata
TSystemPromptMetadata = never
속성
~types
~types: object;
정의 위치: packages/ai/src/activities/chat/adapter.ts:95
Internal
타입 추론 전용 속성입니다. 런타임에는 할당되지 않습니다.
inputModalities
inputModalities: TInputModalities;
messageMetadataByModality
messageMetadataByModality: TMessageMetadataByModality;
providerOptions
providerOptions: TProviderOptions;
systemPromptMetadata
systemPromptMetadata: TSystemPromptMetadata;
toolCallMetadata
toolCallMetadata: TToolCallMetadata;
toolCapabilities
toolCapabilities: TToolCapabilities;
chatStream
chatStream: (options) => AsyncIterable<AdapterYieldChunk>;
정의 위치: packages/ai/src/activities/chat/adapter.ts:107
모델에서 텍스트 완성 결과를 스트리밍합니다.
매개변수
options
TextOptions<TProviderOptions>
반환값
AsyncIterable<AdapterYieldChunk>
combinedStructuredOutputSource?
optional combinedStructuredOutputSource?: (modelOptions?) => "text" | "event";
정의 위치: packages/ai/src/activities/chat/adapter.ts:174
네이티브 결합 구조화된 출력의 출처입니다.
'text'(생략 시 기본값): 에이전트 루프에서 누적된 어시스턴트 텍스트가 스키마 JSON입니다. 엔진은 루프 후 이를 파싱합니다. HTTP 어댑터가 이를 사용합니다.'event': 어댑터는chatStream중에structured-output.complete를 발생시킵니다. 엔진은 누적된 일반 텍스트를 파싱하면 안 됩니다. Harness 어댑터가 이를 사용합니다.
매개변수
modelOptions?
TProviderOptions
반환값
"text" | "event"
kind
readonly kind: "text";
정의 위치: packages/ai/src/activities/chat/adapter.ts:77
어댑터 종류를 구분하는 식별자입니다.
model
readonly model: TModel;
정의 위치: packages/ai/src/activities/chat/adapter.ts:81
이 어댑터가 구성된 모델입니다.
name
readonly name: string;
정의 위치: packages/ai/src/activities/chat/adapter.ts:79
Provider 이름 식별자입니다(예: 'openai', 'anthropic').
requires?
readonly optional requires?: readonly CapabilityHandle[];
정의 위치: packages/ai/src/activities/chat/adapter.ts:90
이 어댑터가 런타임에 요구하는 기능입니다. chat()은 구성된 미들웨어가 각 기능을 제공하는지 검증합니다. 모델 어댑터에는 이 속성이 없으며, harness 어댑터(예: 향후 claudeCode())는 [sandboxCapability]와 같이 선언합니다. 어댑터 내부에서 기능에 런타임으로 접근하는 연결은 아직 구현되지 않았으며, 이 속성은 선언 및 검증을 위한 표면일 뿐입니다.
structuredOutput
structuredOutput: (options) => Promise<StructuredOutputResult<unknown>>;
정의 위치: packages/ai/src/activities/chat/adapter.ts:119
Provider의 네이티브 구조화된 출력 API를 사용해 구조화된 출력을 생성합니다. 이 메서드는 stream: false를 사용하고 provider에 JSON 스키마를 보내 응답이 예상 구조를 따르도록 합니다.
매개변수
options
StructuredOutputOptions<TProviderOptions>
채팅 옵션과 JSON 스키마를 포함하는 구조화된 출력 옵션입니다.
반환값
Promise<StructuredOutputResult<unknown>>
원시 데이터를 포함하는 Promise입니다(검증은 chat 함수에서 수행됨).
structuredOutputStream?
optional structuredOutputStream?: (options) => AsyncIterable<AdapterYieldChunk>;
정의 위치: packages/ai/src/activities/chat/adapter.ts:137
provider의 네이티브 스트리밍 구조화 출력 API를 사용해 구조화된 출력을 스트리밍합니다(단일 요청의 stream + response_format json_schema).
선택 사항입니다. 네이티브 스트리밍 JSON이 없는 어댑터는 이 메서드를 생략하며, activity 계층은 비스트리밍 structuredOutput 호출을 중심으로 스트림을 합성합니다.
구현은 원시 JSON 텍스트 델타를 전달하는 표준 AG-UI 수명 주기 이벤트(RUN_STARTED, TEXT_MESSAGE_*, RUN_FINISHED)와, value가 { object, raw, reasoning? }인 structured-output.complete라는 이름의 최종 CUSTOM 이벤트를 발생시켜야 합니다. 이벤트를 발생시킬 때 타임스탬프를 기록하여 타임스탬프가 스트림 순서를 따르도록 해야 합니다.
매개변수
options
StructuredOutputOptions<TProviderOptions>
반환값
AsyncIterable<AdapterYieldChunk>
supportsCombinedToolsAndSchema?
optional supportsCombinedToolsAndSchema?: (modelOptions?) => boolean;
정의 위치: packages/ai/src/activities/chat/adapter.ts:160
어댑터가 단일 스트리밍 요청에서 tools와 스키마 제약 최종 답변을 결합할 수 있는지 선언합니다.
true이면 엔진은 일반 chatStream() 호출에 outputSchema를 연결하고 별도의 runStructuredFinalization 왕복을 건너뜁니다. 모델의 자연스러운 마지막 턴에는 스키마 제약 JSON 텍스트가 포함되며, 엔진은 에이전트 루프의 누적 콘텐츠에서 이를 수집합니다.
false, undefined이거나 메서드를 생략하면 엔진은 outputSchema 없이 에이전트 루프를 실행한 다음, 완료를 위해 JSON 스키마에 대한 별도의 structuredOutput / structuredOutputStream 호출을 수행합니다(레거시 경로).
이 메서드는 호출별 modelOptions를 받으므로, 지원 여부가 확인된 업스트림 모델에 따라 달라지는 provider(예: OpenRouter)가 요청별로 응답할 수 있습니다. 대부분의 어댑터는 상수를 반환할 수 있습니다.
매개변수
modelOptions?
TProviderOptions
반환값
boolean