# Quick Reference: OpenAI ↔ Gemini Switcher ## Переключение провайдера (30 сек) **Файл:** `appsettings.json` ```json "AiProvider": { "Default": "openai" // ← Измените на "gemini" для Gemini } ``` ## Файлы которые были добавлены/изменены | Файл | Статус | Описание | |------|--------|----------| | `Services/IAiService.cs` | ✨ Новый | Общий интерфейс для всех AI сервисов | | `Services/GeminiService.cs` | ✨ Новый | Реализация Google Gemini | | `Services/AiServiceFactory.cs` | ✨ Новый | Фабрика для выбора провайдера | | `Services/IOpenAiService.cs` | 🔄 Обновлён | Теперь наследуется от IAiService | | `Services/OpenAiService.cs` | 🔄 Обновлён | Реализует оба интерфейса | | `Program.cs` | 🔄 Обновлён | Регистрация новых сервисов | | `appsettings.json` | 🔄 Обновлён | Добавлены Gemini ключ и выбор провайдера | ## Пример использования в коде ```csharp // Простейший способ - просто injectить IAiService public async Task SomeMethod(IAiService aiService) { var summary = await aiService.GenerateSummaryFromCommitMessagesAsync(messages); Console.WriteLine(summary); } ``` ## Получение Gemini API ключа (бесплатно) 1. Перейти: https://makersuite.google.com/app/apikey 2. Нажать "Create API Key" 3. Вставить в `appsettings.json`: ```json "Gemini": { "ApiKey": "AIza_YOUR_KEY_HERE" } ``` ## Поддерживаемые модели Gemini - `gemini-1.5-flash` (быстрая, дешёвая, рекомендуется) - `gemini-1.5-pro` (мощнее, дороже) - `gemini-2.0-flash` (новая версия) Меняется в `appsettings.json`: ```json "Gemini": { "Model": "gemini-1.5-flash" } ``` ## Обратная совместимость ✅ Старый код с `IOpenAiService` всё ещё работает: ```csharp public async Task SomeMethod(IOpenAiService service) { // Работает как раньше! var summary = await service.GenerateSummaryFromCommitMessagesAsync(messages); } ```