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

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~8sGemini 3 Pro, глубина рассуждений, рендеринг текста$0.15/изображение (1K)
fal-ai/gpt-image-1.5~15sТочное следование промпту$0.034/изображение
fal-ai/gpt-image-2~20sSOTA-рендеринг текста + 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-ai/krea/v2/medium/text-to-image~15-25sИллюстрация, аниме, живопись, выразительные художественные стили$0.030–0.035/изображение
fal-ai/krea/v2/large/text-to-image~25-60sФотореализм, сырые фактурные кадры (смаз, зерно, плёнка)$0.060–0.065/изображение

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

Настройка

совет
Подписчикам Nous

Если у вас есть платная подписка Nous Portal, генерация изображений работает через Tool Gateway без ключа FAL API. Выбранная модель сохраняется для обоих путей. На свежей установке достаточно запустить hermes setup --portal, войти и сразу включить все инструменты шлюза; на уже настроенной — в hermes tools выберите бэкенд Nous Subscription.

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

Получите ключ FAL API

  1. Зарегистрируйтесь на fal.ai
  2. Сгенерируйте API-ключ в личном кабинете

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

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

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, если используется 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-to-Image / редактирование

Тот же инструмент image_generate ещё и редактирует готовые изображения, если активная модель это умеет: передаёте исходник, и бэкенд сам направляет запрос на свой endpoint редактирования (так же, как video_generate обрабатывает image-to-video). Без исходника — обычный text-to-image.

Take this photo and make it a rainy Tokyo street at night → <image>
Blend these two product shots into one hero image → <image1> <image2>

Правкой управляют два входа:

  • image_url — основной исходник для редактирования/трансформации (публичный URL или локальный путь).
  • reference_image_urls — дополнительные референсы стиля и композиции (число ограничено по каждой модели).

Какие бэкенды поддерживают редактирование

БэкендImage-to-imageЛимит референсовКак
FAL.ai (модели с поддержкой правок ниже)до 9направляет на endpoint /edit модели
OpenAI (gpt-image-2)до 16images.edit()
xAI (Grok Imagine)1/v1/images/edits (grok-imagine-image-quality)
Krea (Krea 2)до 10генерация с опорой на референсы (image_style_references)
OpenAI (авторизация Codex)только text-to-image

Модели FAL с endpoint редактирования: flux-2/klein/9b, flux-2-pro, nano-banana-pro, gpt-image-1.5, gpt-image-2, ideogram/v3 и qwen-image. Чисто text-to-image модели FAL (z-image/turbo, recraft, krea/*) отклоняют изображение на входе с понятной ошибкой, которая указывает на модель с поддержкой правок.

Умеет ли активная модель редактировать, видно прямо в описании инструмента во время работы — так агент ещё до вызова знает, будет ли учтён image_url.

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

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

Ввод агентаimage_size (flux/z-image/qwen/recraft/ideogram)aspect_ratio (nano-banana-pro)image_size (gpt-image-1.5)image_size (gpt-image-2)
landscapelandscape_16_916:91536x1024landscape_4_3 (1024×768)
squaresquare_hd1:11024x1024square_hd (1024×1024)
portraitportrait_16_99:161024x1536portrait_4_3 (768×1024)

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

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

Автоматический апскейлинг

Апскейлинг через Clarity Upscaler от FAL включается выборочно, по модели:

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

Когда апскейлинг запускается, используются такие настройки:

ПараметрЗначение
Коэффициент апскейла
Creativity0.35
Resemblance0.6
Guidance scale4
Inference steps18

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

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

  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 в нативный формат модели (enum пресета, enum соотношения сторон или литерал GPT), подмешивает дефолтные параметры модели, накладывает переопределения вызывающей стороны, а затем фильтрует всё по белому списку supports модели, чтобы неподдерживаемые ключи вообще не уходили.
  3. Отправка_submit_fal_request() направляет запрос либо через прямые учётные данные FAL, либо через управляемый шлюз Nous.
  4. Апскейлинг — выполняется, только если в метаданных модели стоит upscale: True.
  5. Доставка — итоговый URL изображения возвращается агенту, тот выдаёт тег MEDIA:<url>, а адаптеры платформ превращают его в нативное медиа.

Отладка

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

export IMAGE_TOOLS_DEBUG=true

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

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

ПлатформаДоставка
CLIURL изображения выводится как markdown ![](url) — кликните, чтобы открыть
TelegramСообщение с фото, промпт идёт подписью
DiscordВстраивается прямо в сообщение
SlackURL разворачивается силами Slack
WhatsAppМедиа-сообщение
ПрочиеURL обычным текстом

Ограничения

  • Нужны учётные данные активного бэкенда (FAL FAL_KEY / Nous Subscription, OPENAI_API_KEY, xAI OAuth, KREA_API_KEY)
  • Редактирование зависит от модели — image-to-image работает только на моделях с поддержкой правок (см. таблицу выше); чисто text-to-image модели отклоняют изображение на входе с понятной ошибкой
  • Временные URL — бэкенды отдают ссылки на хостинг, которые протухают через часы или дни; Hermes сохраняет их в локальный кэш, поэтому доставка работает и после истечения срока
  • Ограничения по моделям — часть моделей не понимает seed, num_inference_steps и подобное. Фильтр supports / edit_supports молча отбрасывает неподдерживаемые параметры; так и задумано
ESC