UNPKG

@ai-sdk/amazon-bedrock

Version:
288 lines (256 loc) • 7.23 kB
import type { JSONObject } from '@ai-sdk/provider'; export interface AmazonBedrockConverseInput { system?: AmazonBedrockSystemMessages; messages: AmazonBedrockMessages; toolConfig?: AmazonBedrockToolConfiguration; inferenceConfig?: { maxOutputTokens?: number; temperature?: number; topP?: number; topK?: number; stopSequences?: string[]; }; additionalModelRequestFields?: Record<string, unknown>; additionalModelResponseFieldPaths?: string[]; requestMetadata?: Record<string, string>; serviceTier?: { type: string; }; guardrailConfig?: | AmazonBedrockGuardrailConfiguration | AmazonBedrockGuardrailStreamConfiguration | undefined; } export type AmazonBedrockSystemMessages = Array<AmazonBedrockSystemContentBlock>; export type AmazonBedrockMessages = Array< AmazonBedrockAssistantMessage | AmazonBedrockUserMessage >; export interface AmazonBedrockAssistantMessage { role: 'assistant'; content: Array<AmazonBedrockContentBlock>; } export interface AmazonBedrockUserMessage { role: 'user'; content: Array<AmazonBedrockContentBlock>; } /** * Cache TTL options for Bedrock prompt caching. * @see https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html * * - '5m': 5-minute TTL (default, supported by all models) * - '1h': 1-hour TTL (supported by Claude Opus 4.5, Claude Haiku 4.5, Claude Sonnet 4.5) */ export type AmazonBedrockCacheTTL = '5m' | '1h'; export type AmazonBedrockCachePoint = { cachePoint: { type: 'default'; ttl?: AmazonBedrockCacheTTL }; }; /** * Creates a cache point with an optional TTL. * @param ttl - Cache TTL ('5m' or '1h'). If not provided, uses the default 5-minute TTL. */ export function createAmazonBedrockCachePoint( ttl?: AmazonBedrockCacheTTL, ): AmazonBedrockCachePoint { return { cachePoint: { type: 'default', ttl }, }; } export type AmazonBedrockSystemContentBlock = | { text: string } | AmazonBedrockCachePoint; export interface AmazonBedrockGuardrailConfiguration { guardrails?: Array<{ name: string; description?: string; parameters?: Record<string, unknown>; }>; } export type AmazonBedrockGuardrailStreamConfiguration = AmazonBedrockGuardrailConfiguration; export interface AmazonBedrockToolInputSchema { json: Record<string, unknown>; } export interface AmazonBedrockTool { toolSpec: { name: string; description?: string; strict?: boolean; inputSchema: { json: JSONObject }; }; } export interface AmazonBedrockToolConfiguration { tools?: Array<AmazonBedrockTool | AmazonBedrockCachePoint>; toolChoice?: | { tool: { name: string } } | { auto: {} } | { any: {} } | undefined; } export const BEDROCK_STOP_REASONS = [ 'stop', 'stop_sequence', 'end_turn', 'length', 'max_tokens', 'content-filter', 'content_filtered', 'guardrail_intervened', 'tool-calls', 'tool_use', ] as const; export type AmazonBedrockStopReason = (typeof BEDROCK_STOP_REASONS)[number]; /** * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ImageBlock.html */ export const BEDROCK_IMAGE_MIME_TYPES = { 'image/jpeg': 'jpeg', 'image/png': 'png', 'image/gif': 'gif', 'image/webp': 'webp', } as const; type AmazonBedrockImageFormats = typeof BEDROCK_IMAGE_MIME_TYPES; export type AmazonBedrockImageFormat = AmazonBedrockImageFormats[keyof AmazonBedrockImageFormats]; export type AmazonBedrockImageMimeType = keyof AmazonBedrockImageFormats; /** * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_DocumentBlock.html */ export const BEDROCK_DOCUMENT_MIME_TYPES = { 'application/pdf': 'pdf', 'text/csv': 'csv', 'application/msword': 'doc', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx', 'application/vnd.ms-excel': 'xls', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx', 'text/html': 'html', 'text/plain': 'txt', 'text/markdown': 'md', } as const; type AmazonBedrockDocumentFormats = typeof BEDROCK_DOCUMENT_MIME_TYPES; export type AmazonBedrockDocumentFormat = AmazonBedrockDocumentFormats[keyof AmazonBedrockDocumentFormats]; export type AmazonBedrockDocumentMimeType = keyof AmazonBedrockDocumentFormats; /** * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_VideoBlock.html */ export const BEDROCK_VIDEO_MIME_TYPES = { 'video/x-matroska': 'mkv', 'video/quicktime': 'mov', 'video/mp4': 'mp4', 'video/webm': 'webm', 'video/x-flv': 'flv', 'video/mpeg': 'mpeg', 'video/mpg': 'mpg', 'video/wmv': 'wmv', 'video/x-ms-wmv': 'wmv', 'video/3gpp': 'three_gp', } as const; type AmazonBedrockVideoFormats = typeof BEDROCK_VIDEO_MIME_TYPES; export type AmazonBedrockVideoFormat = AmazonBedrockVideoFormats[keyof AmazonBedrockVideoFormats]; export type AmazonBedrockVideoMimeType = keyof AmazonBedrockVideoFormats; export interface AmazonBedrockDocumentBlock { document: { format: AmazonBedrockDocumentFormat; name: string; source: { bytes: string; }; citations?: { enabled: boolean; }; }; } export interface AmazonBedrockGuardrailTextBlock extends AmazonBedrockTextBlock { qualifiers?: Array<'grounding_source' | 'query' | 'guard_content'>; } export interface AmazonBedrockGuardrailConverseContentBlock { guardContent: | { text: AmazonBedrockGuardrailTextBlock; } | AmazonBedrockImageBlock; } export interface AmazonBedrockImageBlock { image: { format: AmazonBedrockImageFormat; source: | { bytes: string; } | { s3Location: { uri: string; }; }; }; } export interface AmazonBedrockVideoBlock { video: { format: AmazonBedrockVideoFormat; source: | { bytes: string; } | { s3Location: { uri: string; }; }; }; } export interface AmazonBedrockToolResultBlock { toolResult: { toolUseId: string; content: Array< | AmazonBedrockTextBlock | AmazonBedrockImageBlock | AmazonBedrockDocumentBlock | AmazonBedrockVideoBlock >; }; } export interface AmazonBedrockToolUseBlock { toolUse: { toolUseId: string; name: string; input: Record<string, unknown>; }; } export interface AmazonBedrockTextBlock { text: string; } export interface AmazonBedrockReasoningContentBlock { reasoningContent: { reasoningText: { text: string; signature?: string; }; }; } export interface AmazonBedrockRedactedReasoningContentBlock { reasoningContent: { redactedReasoning: { data: string; }; }; } export interface AmazonBedrockRedactedContentBlock { reasoningContent: { redactedContent: string; }; } export type AmazonBedrockContentBlock = | AmazonBedrockDocumentBlock | AmazonBedrockGuardrailConverseContentBlock | AmazonBedrockImageBlock | AmazonBedrockVideoBlock | AmazonBedrockTextBlock | AmazonBedrockToolResultBlock | AmazonBedrockToolUseBlock | AmazonBedrockReasoningContentBlock | AmazonBedrockRedactedReasoningContentBlock | AmazonBedrockRedactedContentBlock | AmazonBedrockCachePoint;