ai
Version:
AI SDK by Vercel - build apps like ChatGPT, Claude, Gemini, and more with a single interface for any model using the Vercel AI Gateway or go direct to OpenAI, Anthropic, Google, or any other model provider.
55 lines (50 loc) • 1.64 kB
text/typescript
import type {
Experimental_ExtractionModelV4 as ExtractionModelV4,
Experimental_ExtractionModelV4Field as ExtractionField,
Experimental_ExtractionModelV4Result as ExtractionModelV4Result,
Experimental_ExtractionModelV4Source as ExtractionSource,
} from '@ai-sdk/provider';
export type ExtractionModel = ExtractionModelV4;
export type ExtractionValue<FIELD extends ExtractionField> = FIELD extends {
type: 'number' | 'duration';
}
? number
: FIELD extends { type: 'list'; items: infer ITEMS }
? ITEMS extends 'number'
? number[]
: string[]
: string;
export type ExtractionAnswer<FIELD extends ExtractionField> = FIELD extends {
type: 'list';
}
? {
type: 'list';
value: ExtractionValue<FIELD> | null;
pNull?: number;
confidence?: number;
items?: Array<{ confidence?: number; source?: ExtractionSource }>;
}
: {
type: FIELD['type'];
value: ExtractionValue<FIELD> | null;
guess?: ExtractionValue<FIELD>;
pNull?: number;
confidence?: number;
source?: ExtractionSource;
};
export type ExtractionResult<FIELDS extends Record<string, ExtractionField>> = {
readonly answers: {
[ID in keyof FIELDS]: ExtractionAnswer<FIELDS[ID]>;
};
readonly usage: {
inputTokens: number | undefined;
outputTokens: number | undefined;
totalTokens: number | undefined;
};
readonly warnings: ExtractionModelV4Result['warnings'];
readonly providerMetadata: ExtractionModelV4Result['providerMetadata'];
readonly response: NonNullable<ExtractionModelV4Result['response']> & {
timestamp: Date;
modelId: string;
};
};