feat: add OpenAI provider integration and examples
This commit is contained in:
@@ -5,18 +5,20 @@
|
||||
|
||||
import type { AIProviderConfig } from '../types/index.js';
|
||||
import { ClaudeProvider, type ClaudeConfig } from '../providers/claude.js';
|
||||
import { OpenAIProvider, type OpenAIConfig } from '../providers/openai.js';
|
||||
import { BaseAIProvider } from '../providers/base.js';
|
||||
|
||||
/**
|
||||
* Supported AI provider types
|
||||
*/
|
||||
export type ProviderType = 'claude';
|
||||
export type ProviderType = 'claude' | 'openai';
|
||||
|
||||
/**
|
||||
* Configuration map for different provider types
|
||||
*/
|
||||
export interface ProviderConfigMap {
|
||||
claude: ClaudeConfig;
|
||||
openai: OpenAIConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -32,6 +34,8 @@ export function createProvider<T extends ProviderType>(
|
||||
switch (type) {
|
||||
case 'claude':
|
||||
return new ClaudeProvider(config as ClaudeConfig);
|
||||
case 'openai':
|
||||
return new OpenAIProvider(config as OpenAIConfig);
|
||||
default:
|
||||
throw new Error(`Unsupported provider type: ${type}`);
|
||||
}
|
||||
@@ -53,6 +57,22 @@ export function createClaudeProvider(
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an OpenAI provider with simplified configuration
|
||||
* @param apiKey - OpenAI API key
|
||||
* @param options - Optional additional configuration
|
||||
* @returns Configured OpenAI provider instance
|
||||
*/
|
||||
export function createOpenAIProvider(
|
||||
apiKey: string,
|
||||
options: Partial<Omit<OpenAIConfig, 'apiKey'>> = {}
|
||||
): OpenAIProvider {
|
||||
return new OpenAIProvider({
|
||||
apiKey,
|
||||
...options
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Provider registry for dynamic provider creation
|
||||
*/
|
||||
@@ -101,4 +121,5 @@ export class ProviderRegistry {
|
||||
}
|
||||
|
||||
// Pre-register built-in providers
|
||||
ProviderRegistry.register('claude', ClaudeProvider);
|
||||
ProviderRegistry.register('claude', ClaudeProvider);
|
||||
ProviderRegistry.register('openai', OpenAIProvider);
|
||||
Reference in New Issue
Block a user