본문으로 건너뛰기

인터페이스: 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 타입 메타데이터(예: Anthropic cache_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&lt;TProviderOptions>

반환값

AsyncIterable&lt;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&lt;TProviderOptions>

채팅 옵션과 JSON 스키마를 포함하는 구조화된 출력 옵션입니다.

반환값

Promise&lt;StructuredOutputResult&lt;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&lt;TProviderOptions>

반환값

AsyncIterable&lt;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