/** * LLM Providers - Factory and exports for multi-provider support * * This module provides an extensible provider registry system that allows * users to register custom providers (e.g., Cloudflare, Ollama) alongside * the built-in providers (OpenAI, Anthropic, Google). * * @example Register a custom provider * ```typescript * import { registerProvider, Agent } from 'praisonai'; * import { CloudflareProvider } from './my-cloudflare-provider'; * * registerProvider('cloudflare', CloudflareProvider); * const agent = new Agent({ llm: 'cloudflare/workers-ai' }); * ``` */ export * from './types'; export * from './base'; export { OpenAIProvider } from './openai'; export { AnthropicProvider } from './anthropic'; export { GoogleProvider } from './google'; export { ProviderRegistry, ProviderConstructor, ProviderLoader, RegisterOptions, IProviderRegistry, getDefaultRegistry, createProviderRegistry, registerProvider, unregisterProvider, hasProvider, listProviders, registerBuiltinProviders, } from './registry'; import type { LLMProvider, ProviderConfig } from './types'; import type { ProviderRegistry } from './registry'; /** * Parse model string into provider and model ID * Supports formats: * - "provider/model" (e.g., "openai/gpt-4o") * - "model" (defaults to OpenAI, e.g., "gpt-4o-mini") */ export declare function parseModelString(model: string): { providerId: string; modelId: string; }; /** * Input types for createProvider */ export type ProviderInput = string | LLMProvider | { name: string; modelId?: string; config?: ProviderConfig; }; /** * Options for createProvider */ export interface CreateProviderOptions { /** Override the default registry */ registry?: ProviderRegistry; /** Provider configuration */ config?: ProviderConfig; /** Model ID (used when input is a constructor or spec without modelId) */ modelId?: string; } /** * Create a provider instance from various input types * * @example String input (backward compatible) * ```typescript * const provider = createProvider('openai/gpt-4o'); * const provider = createProvider('anthropic/claude-3-5-sonnet-latest'); * const provider = createProvider('google/gemini-2.0-flash'); * const provider = createProvider('gpt-4o-mini'); // Defaults to OpenAI * ``` * * @example Custom provider (after registration) * ```typescript * registerProvider('cloudflare', CloudflareProvider); * const provider = createProvider('cloudflare/workers-ai'); * ``` * * @example Provider instance (pass-through) * ```typescript * const myProvider = new CustomProvider('model'); * const provider = createProvider(myProvider); // Returns same instance * ``` * * @example Spec object * ```typescript * const provider = createProvider({ name: 'openai', modelId: 'gpt-4o', config: { timeout: 5000 } }); * ``` */ export declare function createProvider(input: ProviderInput, options?: CreateProviderOptions | ProviderConfig): LLMProvider; /** * Get the default provider (OpenAI with gpt-4o-mini) */ export declare function getDefaultProvider(config?: ProviderConfig): LLMProvider; /** * Check if a provider is available (has required API key) */ export declare function isProviderAvailable(providerId: string): boolean; /** * Get list of available providers (registered and with API keys) */ export declare function getAvailableProviders(): string[]; /** * AI SDK Backend - Multi-provider LLM support via Vercel's AI SDK * * @example * ```typescript * import { createAISDKBackend } from 'praisonai'; * * const backend = createAISDKBackend('anthropic/claude-3-5-sonnet'); * const result = await backend.generateText({ messages: [...] }); * ``` */ export { AISDKBackend, createAISDKBackend, isProviderSupported as isAISDKProviderSupported, listSupportedProviders as listAISDKProviders, registerCustomProvider as registerAISDKCustomProvider, validateProviderApiKey as validateAISDKProviderApiKey, getMissingApiKeyMessage as getAISDKMissingApiKeyMessage, isAISDKAvailable, getAISDKVersion, AISDKError, SAFE_DEFAULTS as AISDK_SAFE_DEFAULTS, AISDK_PROVIDERS, PROVIDER_ALIASES as AISDK_PROVIDER_ALIASES, createAttributionMiddleware, createStandardMiddleware, redactSensitiveData, } from './ai-sdk'; export type { AISDKBackendConfig, AISDKProviderOptions, AttributionContext, AISDKTelemetrySettings, AISDKErrorCode, PraisonStreamChunk, AISDKToolDefinition, AISDKToolCall, AISDKToolResult, AISDKMiddleware, } from './ai-sdk';