70 lines
2.3 KiB
Markdown
70 lines
2.3 KiB
Markdown
# 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);
|
||
}
|
||
```
|