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.
185 lines (163 loc) • 5.14 kB
text/typescript
import type {
Experimental_BatchV4Error as BatchV4Error,
Experimental_BatchV4StartResult as BatchV4StartResult,
Experimental_BatchV4Status as BatchV4Status,
Experimental_BatchLanguageModelV4 as BatchLanguageModelV4,
} from '@ai-sdk/provider';
import type {
InferToolSetContext,
ProviderOptions,
ToolSet,
} from '@ai-sdk/provider-utils';
import type { ContentPart } from '../generate-text/content-part';
import type { ToolOrder } from '../generate-text/tool-order';
import type { LanguageModelCallOptions } from '../prompt/language-model-call-options';
import type { Prompt } from '../prompt/prompt';
import type {
FinishReason,
GlobalProviderModelId,
ToolChoice,
} from '../types/language-model';
import type { ProviderMetadata } from '../types/provider-metadata';
import type { LanguageModelUsage } from '../types/usage';
/**
* Language model input that can be used for durable batch processing.
*
* String model IDs are resolved through the global provider and checked for
* batch support at runtime.
*/
export type BatchLanguageModel = GlobalProviderModelId | BatchLanguageModelV4;
/**
* The persisted reference for a text batch.
*/
export type TextBatchReference = {
readonly version: 1;
readonly type: 'text';
readonly id: string;
readonly provider: string;
readonly modelId: string;
};
/**
* Persisted reference for any supported batch type.
*
* Additional modality-specific references can be added to this union.
*/
export type BatchReference = TextBatchReference;
/**
* Serializable error information for a batch or batch item.
*/
export type BatchError = BatchV4Error;
/**
* The latest normalized lifecycle status for a batch.
*/
export type BatchStatus = BatchV4Status;
/**
* A text batch and its latest normalized lifecycle status.
*/
export type TextBatch = TextBatchReference & BatchStatus;
/**
* One text generation request within a batch.
*/
export type TextBatchRequest = Prompt &
LanguageModelCallOptions & {
id: string;
providerOptions?: ProviderOptions;
};
type BatchRequestOptions = {
abortSignal?: AbortSignal;
headers?: Record<string, string | undefined>;
timeout?: number | { totalMs?: number };
};
/**
* Options for starting a text batch.
*/
export type StartTextBatchOptions<TOOLS extends ToolSet = ToolSet> = {
model: BatchLanguageModel;
requests: ReadonlyArray<TextBatchRequest>;
/**
* Tools that the model can call for every request in the batch.
*
* Tool definitions are sent to the provider, but their `execute` functions
* are never invoked by batch processing.
*/
tools?: TOOLS;
/**
* The tool choice strategy. Default: 'auto'.
*/
toolChoice?: ToolChoice<NoInfer<TOOLS>>;
/**
* Controls the order in which tools are sent to the provider. Tools not
* listed are appended alphabetically.
*/
toolOrder?: ToolOrder<TOOLS>;
/**
* Context used when resolving dynamic tool descriptions.
*/
toolsContext?: InferToolSetContext<TOOLS>;
providerOptions?: ProviderOptions;
/**
* URL that the provider should notify when the batch reaches a terminal
* state. Providers that do not support completion webhooks return an
* unsupported warning.
*/
webhookUrl?: string;
} & BatchRequestOptions;
/**
* The acknowledged text batch and warnings produced while starting it.
*/
export type StartTextBatchResult = TextBatch & {
readonly warnings: BatchV4StartResult['warnings'];
};
/**
* Options shared by batch status and result retrieval operations.
*/
export type BatchOperationOptions<TOOLS extends ToolSet = ToolSet> = {
model: BatchLanguageModel;
batch: BatchReference;
/**
* Definitions for client tools that were provided to `startTextBatch`.
*
* The definitions are used only to validate and normalize returned tool
* calls. Their `execute` functions are never invoked.
*/
tools?: TOOLS;
providerOptions?: ProviderOptions;
maxRetries?: number;
} & BatchRequestOptions;
/**
* A normalized result for a successful text batch item.
*/
export type TextBatchGenerationResult<TOOLS extends ToolSet = ToolSet> = {
/** Ordered normalized content, including citations, sources, and tool data. */
readonly content: Array<ContentPart<TOOLS>>;
readonly text: string;
readonly finishReason: FinishReason;
readonly rawFinishReason?: string;
readonly usage: LanguageModelUsage;
readonly response?: {
readonly id?: string;
readonly timestamp?: string;
readonly modelId?: string;
};
readonly providerMetadata?: ProviderMetadata;
};
/**
* A complete terminal result for one request in a text batch.
*/
export type TextBatchItemResult<TOOLS extends ToolSet = ToolSet> =
| (TextBatchGenerationResult<TOOLS> & {
readonly id: string;
readonly status: 'succeeded';
})
| {
readonly id: string;
readonly status: 'failed';
readonly error: BatchError;
readonly providerMetadata?: ProviderMetadata;
}
| {
readonly id: string;
readonly status: 'cancelled' | 'expired';
readonly error?: BatchError;
readonly providerMetadata?: ProviderMetadata;
};