Перейти к содержимому
EN

Gemini CLI

Gemini CLI говорит на своём протоколе (/v1beta), и Mixen понимает его напрямую: generateContent, streamGenerateContent (SSE), countTokens и список моделей работают на любом чате каталога — не только на Gemini.

Gemini CLI — пакет npm (нужен Node.js 20+):

npm install -g @google/gemini-cli

Альтернативы: brew install gemini-cli (macOS) или npx @google/gemini-cli без установки.

Gemini CLI принимает произвольный Gemini-совместимый бэкенд через переменную окружения. Указывайте корень https://api.mixen.ai — версию пути /v1beta/… клиент дописывает сам, дополнительный сегмент в URL привёл бы к двойному /v1beta/v1beta:

export GOOGLE_GEMINI_BASE_URL="https://api.mixen.ai"
export GEMINI_API_KEY="mxn-ваш-ключ" # ключ Mixen, не Google
gemini

При первом запуске CLI спросит способ аутентификации — выберите Use Gemini API Key: он возьмёт GEMINI_API_KEY из окружения. В headless-режиме (gemini -p "…") выбор меню недоступен — задайте тип явно в ~/.gemini/settings.json:

{"security": {"auth": {"selectedType": "gemini-api-key"}}}

И добавьте GEMINI_CLI_TRUST_WORKSPACE=true — без неё неинтерактивный запуск откажется работать в недоверенной папке. Модель по умолчанию закрепляется переменной GEMINI_MODEL — берите точный id из каталога (например google/gemini-3.1-pro-preview); разово — флагом gemini --model …, внутри сессии — командой /model.

Проверить связку до запуска CLI можно одним curl:

curl -H "x-goog-api-key: $GEMINI_API_KEY" https://api.mixen.ai/v1beta/models

GEMINI_TELEMETRY_ENABLED=false отключает отправку телеметрии CLI.

  • Обычные и стриминговые ответыstreamGenerateContent?alt=sse, токены приходят дельтами.
  • Function calling — встроенные инструменты CLI (read_file, edit, shell) ходят через functionDeclarations; параллельные вызовы поддерживаются.
  • ReasoningthinkingLevel проксируется: low/medium/high управляют глубиной рассуждения как reasoning_effort в чате.
  • КонтекстcountTokens отвечает дешёвой оценкой без похода к модели; CLI сам решает, когда жать контекст.
  • КартинкиinlineData уходит модели как vision-вход (проверяйте capabilities.vision в каталоге).
  • Баланс и списания — обычные: баланс и история видны всё в тех же GET /v1/balance и GET /v1/history.
  • Только functionDeclarations в tools; Google Search grounding и другие встроенные инструменты Gemini не проксируются — веб-поиск берите моделями Sonar из каталога.
  • candidateCount > 1 не поддерживается.
  • fileData (File API Google) не работает — файлы передавайте инлайном или через Storage API.
  • Стриминговые tool-вызовы приходят одним собранным блоком в конце потока, не по дельтам.

Формат ошибок — Gemini-стандарт: {"error": {"code": 401, "message": "...", "status": "UNAUTHENTICATED"}}. Частые коды: UNAUTHENTICATED — ключ не передан или отозван; FAILED_PRECONDITION — на аккаунте не было пополнений (см. ключи); RESOURCE_EXHAUSTED — упёрлись в лимит запросов ключа.