import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/scripts/Classes/AiGoogle - Автоконфигурируемый Google Gemini AI'/>

# Класс AiGoogle

Высокоуровневая реализация интеграции с Google Gemini AI. Класс `AiGoogle` расширяет `AiGoogleLite` и автоматически инициализирует себя, используя API-ключ и идентификатор модели, указанные в файлах конфигурации проекта.

## Ключевые особенности

- **Инициализация без конфигурации** — автоматически загружает учетные данные API и настройки модели из окружения проекта.
- **На базе Gemini** — предоставляет доступ к современным генеративным моделям от Google.
- **Наследуемая надежность** — включает все функции `AiGoogleLite`, такие как мультимодальная поддержка (текст + изображения) и накопление сложных промптов.
- **Упрощенный процесс** — идеально подходит для использования внутри движка документирования проекта, где не требуется ручная настройка.

## Инициализация

В отличие от `AiGoogleLite`, класс `AiGoogle` не требует параметров конструктора, так как он получает настройки из `getConfigAi()`.

```typescript
import { AiGoogle } from '@dxtmisha/scripts'

const ai = new AiGoogle()

// При необходимости можно переключить модель
ai.setModel('gemini-1.5-pro')

// Генерация ответа
const response = await ai.generate('Создайте краткое описание проекта.')
```

## Методы

### Генерация

- `generate(contents: string): Promise<string>` — (Унаследовано) Объединяет накопленный контекст и выполняет запрос к ИИ.

### Конфигурация

- `setKey(key: string): this` — (Унаследовано) Обновляет API-ключ и переинициализирует внутренний клиент.
- `setModel(model: string): this` — (Унаследовано) Переключает активную модель.

### Сбор контекста

- `addPrompt(prompt: string): void` — (Унаследовано) Добавляет постоянный текстовый префикс.
- `addContent(content: string): this` — (Унаследовано) Добавляет текстовую часть к промпту.
- `addImage(image: AiImageItem): this` — (Унаследовано) Добавляет изображение (base64) к запросу.
- `resetPrompt(): void` — (Унаследовано) Очищает постоянный префикс.
- `resetContents(): this` — (Унаследовано) Очищает все накопленные части текста.
- `resetImages(): this` — (Унаследовано) Очищает все накопленные изображения.

## Типы

### AiImageItem
Представляет изображение для мультимодальных запросов.
- `mime: string` — MIME-тип изображения.
- `base64: string` — данные изображения в формате base64.

### AiImageList
Массив элементов `AiImageItem`.
