Генерация изображений

Hermes Agent генерирует изображения по текстовым запросам через FAL.ai. Из коробки поддерживаются девять моделей, каждая со своим балансом скорости, качества и стоимости. Активная модель настраивается пользователем через hermes tools и сохраняется в config.yaml.

Поддерживаемые модели

Модель Скорость Особенности Цена
fal-ai/flux-2/klein/9b (по умолчанию) <1s Быстрый, чёткий текст $0.006/MP
fal-ai/flux-2-pro ~6s Студийный фотореализм $0.03/MP
fal-ai/z-image/turbo ~2s Двуязычный EN/CN, 6B параметров $0.005/MP
fal-ai/nano-banana-pro ~8s Gemini 3 Pro, глубина рассуждений, рендеринг текста $0.15/изображение (1K)
fal-ai/gpt-image-1.5 ~15s Точность следования запросу $0.034/изображение
fal-ai/gpt-image-2 ~20s SOTA рендеринг текста + CJK, осознанный фотореализм $0.04–0.06/изображение
fal-ai/ideogram/v3 ~5s Лучшая типографика $0.03–0.09/изображение
fal-ai/recraft/v4/pro/text-to-image ~8s Дизайн, бренд-системы, готовые к продакшену $0.25/изображение
fal-ai/qwen-image ~12s На базе LLM, сложный текст $0.02/MP

Цены указаны по тарифам FAL на момент написания; актуальные цифры смотрите на fal.ai.

Настройка

Совет для подписчиков Nous Если у вас есть платная подписка Nous Portal, вы можете использовать генерацию изображений через Tool Gateway без API-ключа FAL. Выбранная модель сохраняется в обоих путях доступа.

Если управляемый gateway возвращает HTTP 4xx для конкретной модели, значит эта модель ещё не проксирована на стороне портала — агент сообщит вам об этом и предложит действия (установите FAL_KEY для прямого доступа или выберите другую модель).

Получение API-ключа FAL

  1. Зарегистрируйтесь на сайте fal.ai

  2. Сгенерируйте API-ключ в своей панели управления

Настройка и выбор модели

Запустите команду tools:

hermes tools

Перейдите в раздел 🎨 Image Generation, выберите бэкенд (Nous Subscription или FAL.ai), после чего откроется список всех поддерживаемых моделей в виде таблицы — стрелки для навигации, Enter для выбора:

  Model                          Speed    Strengths                    Price
  fal-ai/flux-2/klein/9b         <1s      Fast, crisp text             $0.006/MP   ← currently in use
  fal-ai/flux-2-pro              ~6s      Studio photorealism          $0.03/MP
  fal-ai/z-image/turbo           ~2s      Bilingual EN/CN, 6B          $0.005/MP
  ...

Ваш выбор сохраняется в config.yaml:

image_gen:
  model: fal-ai/flux-2/klein/9b
  use_gateway: false            # true if using Nous Subscription

Качество GPT-Image

Качество запросов для fal-ai/gpt-image-1.5 и fal-ai/gpt-image-2 зафиксировано на уровне medium (~$0.034–$0.06 за изображение при 1024×1024). Мы не выставляем уровни low / high как опцию для пользователя, чтобы биллинг Nous Portal оставался предсказуемым для всех — разброс цен между уровнями составляет 3–22×. Если вам нужен более дешёвый вариант, выбирайте Klein 9B или Z-Image Turbo; если нужно более высокое качество — используйте Nano Banana Pro или Recraft V4 Pro.

Использование

Схема взаимодействия с агентом намеренно минимальна — модель использует то, что вы настроили:

Generate an image of a serene mountain landscape with cherry blossoms
Create a square portrait of a wise old owl — use the typography model
Make me a futuristic cityscape, landscape orientation

Соотношения сторон

Все модели принимают одни и те же три соотношения сторон с точки зрения агента. Внутренне каждая модель автоматически подставляет свой собственный размер:

Ввод агента image_size (flux/z-image/qwen/recraft/ideogram) aspect_ratio (nano-banana-pro) image_size (gpt-image-1.5) image_size (gpt-image-2)
landscape landscape_16_9 16:9 1536x1024 landscape_4_3 (1024×768)
square square_hd 1:1 1024x1024 square_hd (1024×1024)
portrait portrait_16_9 9:16 1024x1536 portrait_4_3 (768×1024)

GPT Image 2 использует пресеты 4:3 вместо 16:9, потому что его минимальное количество пикселей составляет 655 360 — пресет landscape_16_9 (1024×576 = 589 824) был бы отклонён.

Это преобразование происходит в _build_fal_payload() — коду агента никогда не приходится знать о различиях в схемах между моделями.

Автоматическое масштабирование (Upscaling)

Масштабирование через Clarity Upscaler от FAL включается для отдельных моделей:

Модель Масштабирование? Причина
fal-ai/flux-2-pro Обратная совместимость (был значением по умолчанию до выбора моделей)
Все остальные Быстрые модели потеряли бы своё основное преимущество; высокодетализированные модели не нуждаются в этом

При масштабировании используются следующие настройки:

Параметр Значение
Коэффициент масштабирования
Креативность 0.35
Сходство 0.6
Guidance scale 4
Шаги инференса 18

Если масштабирование не удалось (сетевая проблема, ограничение скорости), автоматически возвращается исходное изображение.

Как это работает внутри

  1. Выбор модели_resolve_fal_model() читает image_gen.model из config.yaml, затем проверяет переменную окружения FAL_IMAGE_MODEL, и в последнюю очередь использует fal-ai/flux-2/klein/9b.

  2. Сборка payload_build_fal_payload() преобразует ваше aspect_ratio в родной формат модели (пресет, соотношение сторон или literal GPT), добавляет параметры модели по умолчанию, применяет переопределения от вызывающей стороны, затем фильтрует по белому списку supports модели, чтобы неподдерживаемые ключи никогда не отправлялись.

  3. Отправка_submit_fal_request() направляет запрос через прямые учётные данные FAL или управляемый Nous gateway.

  4. Масштабирование — выполняется только если в метаданных модели указано upscale: True.

  5. Доставка — итоговый URL изображения возвращается агенту, который генерирует тег MEDIA:<url>, конвертируемый платформенными адаптерами в нативный медиа-формат.

Отладка

Включите отладочное логирование:

export IMAGE_TOOLS_DEBUG=true

Отладочные логи сохраняются в ./logs/image_tools_debug_<session_id>.json с деталями каждого вызова (модель, параметры, время выполнения, ошибки).

Доставка на платформы

Платформа Способ доставки
CLI URL изображения выводится в формате markdown ![](url) — нажмите для открытия
Telegram Фото-сообщение с prompt в качестве подписи
Discord Встраивается в сообщение
Slack URL разворачивается Slack'ом
WhatsApp Медиа-сообщение
Другие URL в виде обычного текста

Ограничения