Генерация изображений
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-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 Portal, генерация изображений работает через Tool Gateway без ключа FAL API. Выбранная модель сохраняется для обоих путей. На свежей установке достаточно запустить hermes setup --portal, войти и сразу включить все инструменты шлюза; на уже настроенной — в hermes tools выберите бэкенд Nous Subscription.
Если управляемый шлюз вернул HTTP 4xx для конкретной модели, значит, на стороне портала она пока не проксируется — агент об этом сообщит и подскажет, что делать (задать FAL_KEY для прямого доступа либо взять другую модель).
Получите ключ FAL API
- Зарегистрируйтесь на fal.ai
- Сгенерируйте 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) | ✓ | до 16 | images.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) |
|---|---|---|---|---|
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() — коду агента не нужно ничего знать о различиях схем между моделями.
Автоматический апскейлинг
Апскейлинг через Clarity Upscaler от FAL включается выборочно, по модели:
| Модель | Апскейл? | Почему |
|---|---|---|
fal-ai/flux-2-pro | ✓ | Обратная совместимость (была дефолтом до появления выбора моделей) |
| Все остальные | ✗ | Быстрые модели потеряли бы своё преимущество в доли секунды; высокому разрешению он и не нужен |
Когда апскейлинг запускается, используются такие настройки:
| Параметр | Значение |
|---|---|
| Коэффициент апскейла | 2× |
| Creativity | 0.35 |
| Resemblance | 0.6 |
| Guidance scale | 4 |
| Inference steps | 18 |
Если апскейлинг сорвётся (сбой сети, лимит запросов), агент автоматически вернёт исходное изображение.
Как это устроено внутри
- Определение модели —
_resolve_fal_model()читаетimage_gen.modelизconfig.yaml, при отсутствии берёт переменную окруженияFAL_IMAGE_MODEL, затем откатывается кfal-ai/flux-2/klein/9b. - Сборка payload —
_build_fal_payload()переводит вашaspect_ratioв нативный формат модели (enum пресета, enum соотношения сторон или литерал GPT), подмешивает дефолтные параметры модели, накладывает переопределения вызывающей стороны, а затем фильтрует всё по белому спискуsupportsмодели, чтобы неподдерживаемые ключи вообще не уходили. - Отправка —
_submit_fal_request()направляет запрос либо через прямые учётные данные FAL, либо через управляемый шлюз Nous. - Апскейлинг — выполняется, только если в метаданных модели стоит
upscale: True. - Доставка — итоговый URL изображения возвращается агенту, тот выдаёт тег
MEDIA:<url>, а адаптеры платформ превращают его в нативное медиа.
Отладка
Включите отладочное логирование:
export IMAGE_TOOLS_DEBUG=true
Логи отладки пишутся в ./logs/image_tools_debug_<session_id>.json с детализацией по каждому вызову (модель, параметры, тайминг, ошибки).
Доставка по платформам
| Платформа | Доставка |
|---|---|
| CLI | URL изображения выводится как markdown  — кликните, чтобы открыть |
| Telegram | Сообщение с фото, промпт идёт подписью |
| Discord | Встраивается прямо в сообщение |
| Slack | URL разворачивается силами Slack |
| Медиа-сообщение | |
| Прочие | 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молча отбрасывает неподдерживаемые параметры; так и задумано