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

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

# Класс AiGoogleCli

Высокоуровневая реализация для взаимодействия с ИИ Google Gemini через интерфейс командной строки (CLI) системы. Класс `AiGoogleCli` расширяет `AiGoogleCliLite` и упрощает работу, автоматически загружая необходимые API-ключ и идентификатор модели из настроек конфигурации проекта (`getConfigAi()`).

> Для работы этой реализации требуется установленная утилита `gemini` CLI, доступная в переменной PATH вашей системы.

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

- **Автоматическая настройка** — не требует ручной инициализации ключей или моделей; все данные берутся из окружения проекта.
- **Выполнение через CLI** — использует команды оболочки для выполнения запросов к ИИ, что делает его подходящим для определенных сред сборки.
- **Управление временными файлами** — автоматически обрабатывает создание и удаление временных файлов промптов (`./ai-tmp`).
- **Лаконичные ответы** — использует оптимизированные флаги CLI, чтобы ИИ возвращал прямые ответы без лишних вступлений.

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

Класс `AiGoogleCli` готов к использованию без каких-либо аргументов конструктора.

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

const ai = new AiGoogleCli()

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

## Методы

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

- `generate(contents: string): Promise<string>` — (Унаследовано) Анализирует ввод, управляет временными файлами и выполняет команду CLI для получения ответа.

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

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

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

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

## Ограничения

- **Мультимодальность** — как и базовый класс, эта реализация в настоящее время не поддерживает ввод изображений.
- **Системные зависимости** — требуется наличие инструмента `gemini` CLI и соответствующих прав файловой системы для работы с временными данными.
