getProvider method

Future<LLMProvider?> getProvider(
  1. String providerName
)

Gets a specific LLM provider by name.

Implementation

Future<LLMProvider?> getProvider(String providerName) async {
  final config = await _configService.loadConfig();
  LLMProvider? provider;

  switch (providerName.toLowerCase()) {
    case 'openai':
      if (config.openaiKey == null) return null;
      provider = OpenAIProvider(
        apiKey: config.openaiKey!,
        modelName:
            config.openaiModel ?? OpenAIProvider(apiKey: '').defaultModel,
      );
      break;
    case 'claude':
      if (config.claudeKey == null) return null;
      provider = ClaudeProvider(
        apiKey: config.claudeKey!,
        modelName:
            config.claudeModel ?? ClaudeProvider(apiKey: '').defaultModel,
      );
      break;
    case 'gemini':
      if (config.geminiKey == null) return null;
      provider = GeminiProvider(
        apiKey: config.geminiKey!,
        modelName:
            config.geminiModel ?? GeminiProvider(apiKey: '').defaultModel,
      );
      break;
    default:
      return null;
  }

  // Wrap with caching if enabled
  if (_cachingEnabled && _cache != null) {
    return CachedLLMProvider(delegate: provider, cache: _cache!);
  }

  return provider;
}