/** * Unified AI Provider Registry * * Centralizes access to multiple AI providers via simple string identifiers. * * Smart routing: * - openai/* models → OpenAI SDK (via gateway) * - anthropic/* models → Anthropic SDK (via gateway) * - google/* models → Google AI SDK (via gateway) * - All other models → OpenRouter (via gateway) * * Supports simple aliases: 'opus' → anthropic/claude-opus-4.5 * * @packageDocumentation */ import { type ProviderRegistryProvider, type LanguageModel, type EmbeddingModel } from 'ai'; /** * Available provider IDs */ export type ProviderId = 'openai' | 'anthropic' | 'google' | 'openrouter' | 'cloudflare' | 'bedrock'; /** * Providers that get direct SDK access (not via openrouter) * These support special capabilities like MCP, structured outputs, etc. * Re-exported from language-models for consistency. */ export { DIRECT_PROVIDERS, type DirectProvider } from 'language-models'; /** * Provider configuration options */ export interface ProviderConfig { /** Cloudflare AI Gateway URL (e.g., https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}) */ gatewayUrl?: string | undefined; /** AI Gateway auth token */ gatewayToken?: string | undefined; /** Use llm.do WebSocket transport instead of HTTP (persistent connection) */ useWebSocket?: boolean | undefined; /** llm.do WebSocket URL (default: wss://llm.do/ws) */ llmUrl?: string | undefined; /** OpenAI API key (fallback if no gateway) */ openaiApiKey?: string | undefined; /** Anthropic API key (fallback if no gateway) */ anthropicApiKey?: string | undefined; /** Google AI API key (fallback if no gateway) */ googleApiKey?: string | undefined; /** OpenRouter API key (fallback if no gateway) */ openrouterApiKey?: string | undefined; /** Cloudflare Account ID */ cloudflareAccountId?: string | undefined; /** Cloudflare API Token (fallback if no gateway) */ cloudflareApiToken?: string | undefined; /** Custom base URLs (overrides gateway) */ baseUrls?: Partial> | undefined; } /** * Create a unified provider registry with all configured providers * * @example * ```ts * import { createRegistry } from 'ai-providers' * import { generateText, embed } from 'ai' * * // With Cloudflare AI Gateway (recommended) * // Set AI_GATEWAY_URL and AI_GATEWAY_TOKEN env vars * * const registry = await createRegistry() * * // Use any provider with simple string IDs * const { text } = await generateText({ * model: registry.languageModel('openai:gpt-4o'), * prompt: 'Hello!' * }) * * const { text: claude } = await generateText({ * model: registry.languageModel('anthropic:claude-3-5-sonnet-latest'), * prompt: 'Hello!' * }) * * const { embedding } = await embed({ * model: registry.textEmbeddingModel('cloudflare:@cf/baai/bge-m3'), * value: 'Hello!' * }) * ``` */ export declare function createRegistry(config?: ProviderConfig, options?: { providers?: ProviderId[]; }): Promise; /** * Get or create the default provider registry */ export declare function getRegistry(): Promise; /** * Configure the default registry with custom settings */ export declare function configureRegistry(config: ProviderConfig): Promise; /** * Get a language model with smart routing * * Resolves aliases and routes to the appropriate provider: * - openai/* → OpenAI SDK (via gateway) when provider_model_id is available * - anthropic/* → Anthropic SDK (via gateway) when provider_model_id is available * - google/* → Google AI SDK (via gateway) when provider_model_id is available * - All others → OpenRouter (via gateway) * * Direct routing to native SDKs enables provider-specific features like: * - Anthropic: MCP (Model Context Protocol), extended thinking * - OpenAI: Function calling, JSON mode, vision * - Google: Grounding, code execution * * @example * ```ts * import { model } from 'ai-providers' * * // Simple aliases * const opus = await model('opus') // → anthropic:claude-opus-4-5-20251101 * const gpt = await model('gpt-4o') // → openai:gpt-4o * const llama = await model('llama-70b') // → openrouter:meta-llama/llama-3.3-70b-instruct * * // Full IDs also work * const claude = await model('anthropic/claude-sonnet-4.5') * const mistral = await model('mistralai/mistral-large-2411') * ``` */ export declare function model(id: string): Promise; /** * Shorthand to get an embedding model from the default registry * * @example * ```ts * import { embeddingModel } from 'ai-providers' * * const openaiEmbed = await embeddingModel('openai:text-embedding-3-small') * const cfEmbed = await embeddingModel('cloudflare:@cf/baai/bge-m3') * ``` */ export declare function embeddingModel(id: string): Promise>; //# sourceMappingURL=registry.d.ts.map