4.5 KiB
4.5 KiB
AI Service Switcher - Документация
Обзор
Теперь приложение поддерживает два AI провайдера:
- OpenAI (GPT-3.5-turbo) - по умолчанию
- Gemini (Google Generative AI) - новый провайдер
Вы можете легко переключаться между ними через конфигурацию.
Конфигурация
В файле appsettings.json добавлены новые секции:
{
"AiProvider": {
"Default": "openai"
},
"OpenAI": {
"ApiKey": "sk-..."
},
"Gemini": {
"ApiKey": "YOUR_GEMINI_API_KEY",
"Model": "gemini-1.5-flash"
}
}
Переключение провайдера
Измените значение AiProvider.Default:
"openai"- использовать OpenAI (по умолчанию)"gemini"- использовать Gemini
Архитектура
IAiService (интерфейс)
├── OpenAiService (реализация для OpenAI)
├── GeminiService (реализация для Gemini)
└── IOpenAiService : IAiService (для обратной совместимости)
IAiServiceFactory
└── AiServiceFactory (выбирает провайдера на основе конфигурации)
Использование в коде
Способ 1: Через Factory (рекомендуется)
public class MyController
{
private readonly IAiServiceFactory _factory;
public MyController(IAiServiceFactory factory)
{
_factory = factory;
}
public async Task<string> GenerateSummary(List<CommitInfo> commits)
{
var aiService = _factory.CreateAiService();
return await aiService.GenerateSummaryFromCommitsAsync(commits);
}
}
Способ 2: Прямая инъекция (работает с текущим провайдером)
public class MyController
{
private readonly IAiService _aiService;
public MyController(IAiService aiService)
{
_aiService = aiService;
}
public async Task<string> GenerateSummary(List<CommitInfo> commits)
{
return await _aiService.GenerateSummaryFromCommitsAsync(commits);
}
}
Способ 3: Обратная совместимость (для старого кода)
public class MyController
{
private readonly IOpenAiService _openAiService;
public MyController(IOpenAiService openAiService)
{
_openAiService = openAiService;
}
public async Task<string> GenerateSummary(List<CommitInfo> commits)
{
return await _openAiService.GenerateSummaryFromCommitsAsync(commits);
}
}
Получение API ключей
OpenAI
- Перейти на https://platform.openai.com/api-keys
- Создать новый API ключ
- Добавить в
appsettings.json:"OpenAI": { "ApiKey": "sk-..." }
Gemini
- Перейти на https://makersuite.google.com/app/apikey
- Создать новый API ключ
- Добавить в
appsettings.json:"Gemini": { "ApiKey": "..." }
Примеры конфигурации
Использовать OpenAI
{
"AiProvider": {
"Default": "openai"
}
}
Использовать Gemini
{
"AiProvider": {
"Default": "gemini"
}
}
Обработка ошибок
Если API ключ не найден, будет выброшено исключение:
OpenAI API ключ не найден в конфигурации. Добавьте 'OpenAI:ApiKey' в appsettings.json
Gemini API ключ не найден в конфигурации. Добавьте 'Gemini:ApiKey' в appsettings.json
Если провайдер не поддерживается:
Unknown AI provider: unknown. Supported values: 'openai', 'gemini'
Тестирование
Для тестирования обоих провайдеров:
- Настроить оба API ключа в
appsettings.json - Измените
AiProvider.Defaultна нужный провайдер - Перезагрузите приложение
- Отправьте запрос на
/api/summary
Интеграция в development
Для локальной разработки можно использовать appsettings.Development.json:
{
"AiProvider": {
"Default": "gemini"
}
}
Это переопределит настройки из appsettings.json при разработке.