36 lines
1.2 KiB
C#
36 lines
1.2 KiB
C#
namespace PerfReviewSummarizer.Api.Services;
|
||
|
||
public interface IAiServiceFactory
|
||
{
|
||
IAiService CreateAiService();
|
||
}
|
||
|
||
public class AiServiceFactory : IAiServiceFactory
|
||
{
|
||
private readonly IConfiguration _configuration;
|
||
private readonly IServiceProvider _serviceProvider;
|
||
|
||
public AiServiceFactory(IConfiguration configuration, IServiceProvider serviceProvider)
|
||
{
|
||
_configuration = configuration;
|
||
_serviceProvider = serviceProvider;
|
||
}
|
||
|
||
public IAiService CreateAiService()
|
||
{
|
||
var provider = _configuration["AiProvider:Default"];
|
||
|
||
if (string.IsNullOrEmpty(provider))
|
||
{
|
||
throw new InvalidOperationException("AiProvider:Default не найден в конфигурации. Добавьте 'AiProvider:Default' в appsettings.json с значением 'openai' или 'gemini'");
|
||
}
|
||
|
||
return provider.ToLower() switch
|
||
{
|
||
"gemini" => _serviceProvider.GetRequiredService<GeminiService>(),
|
||
"openai" => _serviceProvider.GetRequiredService<OpenAiService>(),
|
||
_ => throw new InvalidOperationException($"Unknown AI provider: {provider}. Supported values: 'openai', 'gemini'")
|
||
};
|
||
}
|
||
}
|