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
TypeScript
/**
* 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;
};