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

<Meta title='@dxtmisha/ru/scripts/Classes/AiGoogleLite - Интеграция с Google Gemini AI'/>

# Класс AiGoogleLite

Конкретная реализация класса `AiAbstract` для работы с Google Gemini AI (через клиент `GoogleGenAI`). Этот класс предоставляет удобный способ взаимодействия с моделями Gemini, беря на себя аутентификацию, накопление контекста и генерацию контента.

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

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

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

Инициализируйте `AiGoogleLite`, указав ваш API-ключ и идентификатор целевой модели.

**Параметры:**
- `key: string` — ваш API-ключ Google AI.
- `model: string` — идентификатор модели Gemini (например, `'gemini-1.5-flash'`).

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

const ai = new AiGoogleLite('ВАШ_API_КЛЮЧ', 'gemini-1.5-flash')

// Установка опционального префикса (системного промпта)
ai.addPrompt('Вы — технический писатель.')

// Генерация ответа
const response = await ai.generate('Объясните возможности класса AiGoogleLite.')
```

## Методы

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

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

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

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

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

Эти методы позволяют накопить данные перед вызовом `generate()`:

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

### Информация

- `getContents(): string[]` — возвращает список накопленных частей текста.
- `getImages(): AiImageList` — возвращает список накопленных изображений.

## Типы

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

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