| name | media |
| title | Работа с изображениями |
| description | Работа с изображениями чужой моделью — генерация, редактирование и совмещение картинок по промпту, «зрение» по файлу; результат отдаётся файлом agf_ и прикладывается к ответу. |
| connectors | ["media"] |
Skill: AgiMate Media
Media-коннектор даёт способности, которых может не быть у твоей основной модели: нарисовать картинку (gen_image), изменить существующую (edit_image), собрать одну из нескольких (combine_images), посмотреть на изображение (read_image). Под капотом каждый тул вызывает отдельную модель — она подбирается автоматически.
Файлы ходят по ссылке agf_…: ты — курьер ссылок (получил id из тула — передал в другой тул или приложил к ответу), байты через тебя не проходят.
Инструменты: что когда вызывать
gen_image(prompt) — новая картинка. Промпт — твоя работа: собери в него все детали запроса (объект, стиль, композиция, цвета, текст на картинке) — модель видит только его.
edit_image(fileId, prompt) — новая картинка на основе существующей: и правка (фон, стиль, убрать/добавить объект), и «нарисуй такое же, но…» / «в этом стиле». Оригинал не трогается, возвращается новый файл. Для правок по фидбеку предпочитай его генерации с нуля — не потеряешь то, что уже понравилось.
combine_images(fileIds, prompt) — одна картинка из 2–4 исходных: человек с одного фото в сцене с другого, товар на фоне, смешение стилей. Модель видит картинки в порядке списка — так и называй их в промпте («возьми человека с image 1, фон с image 2»), иначе она не поймёт, что откуда брать.
read_image(fileId, question?) — описать изображение или ответить на вопрос о нём: файлы из истории, скриншоты. Не нужен, если системная подсказка говорит, что приложенные картинки ты видишь сам.
Ответ gen_image/edit_image/combine_images — { file: { id: "agf_…" }, text }. Если file отсутствует — модель отказалась (причина в text): перескажи её пользователю, не повторяй запрос как есть.
Как отдать картинку пользователю
Вставь маркер в финальный ответ: Готово: [[attach:agf_…]] — маркер вырежется из текста, файл уедет вложением. Без маркера пользователь картинку не увидит — id сам по себе ничего не отправляет.
Дисциплина итераций: дизайн — это диалог, а не внутренний цикл
У творческих задач критерий «готово» есть только у пользователя, поэтому:
- Максимум 2–3 генерации на один запрос пользователя. Дальше — покажи лучшее из готового (
[[attach:…]], можно несколько вариантов) и спроси направление.
- Не проверяй каждую свою генерацию через
read_image. Пользователь сам увидит вложение и оценит. Проверка оправдана только при конкретном фактически проверяемом сомнении (читаем ли текст на картинке, число объектов) — и не чаще раза на итерацию.
- Две неудачные правки одной картинки подряд — стоп-сигнал, а не повод «усилить промпт»: покажи пользователю, что есть, опиши расхождение с задумкой, предложи варианты. Часто это ограничение генеративной модели — повторами не лечится.
- Ран с исчерпанным бюджетом шагов теряет всё: показанный «неидеал» всегда ценнее идеала, которого пользователь не увидел.
Важно
- Файлы протухают: старый
agf_… из давней истории может вернуть «file not found» — сгенерируй заново.
- Ошибка «no model capable…» — подходящей модели не настроено: посоветуй добавить провайдера с image/vision-моделью или задать её агенту явно.
- Совмещение умеют не все image-модели. Если в результате
combine_images одна из исходных картинок явно проигнорирована — это ограничение модели, а не промпта: скажи об этом пользователю после одной повторной попытки, а не крути дальше.
- Генерация может идти до нескольких минут — не дёргай тул повторно, пока не пришёл результат.