UNPKG

simple-ai-provider

Version:

A simple and extensible AI provider package for easy integration of multiple AI services

95 lines (94 loc) 3.59 kB
/** * Factory utilities for creating AI providers * Provides convenient methods for instantiating and configuring providers */ import type { AIProviderConfig } from '../types/index.js'; import { ClaudeProvider, type ClaudeConfig } from '../providers/claude.js'; import { OpenAIProvider, type OpenAIConfig } from '../providers/openai.js'; import { GeminiProvider, type GeminiConfig } from '../providers/gemini.js'; import { OpenWebUIProvider, type OpenWebUIConfig } from '../providers/openwebui.js'; import { BaseAIProvider } from '../providers/base.js'; /** * Supported AI provider types */ export type ProviderType = 'claude' | 'openai' | 'gemini' | 'openwebui'; /** * Configuration map for different provider types */ export interface ProviderConfigMap { claude: ClaudeConfig; openai: OpenAIConfig; gemini: GeminiConfig; openwebui: OpenWebUIConfig; } /** * Factory function to create AI providers * @param type - The type of provider to create * @param config - Configuration for the provider * @returns Configured AI provider instance */ export declare function createProvider<T extends ProviderType>(type: T, config: ProviderConfigMap[T]): BaseAIProvider; /** * Create a Claude provider with simplified configuration * @param apiKey - Anthropic API key * @param options - Optional additional configuration * @returns Configured Claude provider instance */ export declare function createClaudeProvider(apiKey: string, options?: Partial<Omit<ClaudeConfig, 'apiKey'>>): ClaudeProvider; /** * Create an OpenAI provider with simplified configuration * @param apiKey - OpenAI API key * @param options - Optional additional configuration * @returns Configured OpenAI provider instance */ export declare function createOpenAIProvider(apiKey: string, options?: Partial<Omit<OpenAIConfig, 'apiKey'>>): OpenAIProvider; /** * Create a Gemini provider with simplified configuration * @param apiKey - Google AI API key * @param options - Optional additional configuration * @returns Configured Gemini provider instance */ export declare function createGeminiProvider(apiKey: string, options?: Partial<Omit<GeminiConfig, 'apiKey'>>): GeminiProvider; /** * Create an OpenWebUI provider instance */ export declare function createOpenWebUIProvider(config: OpenWebUIConfig): OpenWebUIProvider; /** * Provider registry for dynamic provider creation */ export declare class ProviderRegistry { private static providers; /** * Register a new provider type * @param name - Name of the provider * @param providerClass - Provider class constructor */ static register(name: string, providerClass: new (config: AIProviderConfig) => BaseAIProvider): void; /** * Create a provider by name * @param name - Name of the provider * @param config - Configuration for the provider * @returns Provider instance */ static create(name: string, config: AIProviderConfig): BaseAIProvider; /** * Get list of registered provider names * @returns Array of registered provider names */ static getRegisteredProviders(): string[]; /** * Check if a provider is registered * @param name - Name of the provider * @returns True if provider is registered */ static isRegistered(name: string): boolean; } /** * Registry of all available providers */ export declare const PROVIDER_REGISTRY: { readonly claude: typeof ClaudeProvider; readonly openai: typeof OpenAIProvider; readonly gemini: typeof GeminiProvider; readonly openwebui: typeof OpenWebUIProvider; };