Comments 4
В попытках достичь максимальной точности и качества, какой лучше сформировать промпт?
Моя задача: Описать картинку на входе в JSON формате. При этом чем точнее визуальные характеристики соберет > тем лучше.
Как пример задача: на входе коллаж, на выходе JSON содержащий инфу о всех фотографиях их размерах и содержимому.
Сейчас я иду по структуре: Роль > Задача > Требования > Пример ответа на выходе.
Интересно ваше мнение :)
Какой интересный вопрос! Спасибо.
Исходя из вашего комментария, попробую порассуждать, как бы составляла промт. Сначала бы определилась с метриками, которые мне нужны от коллажа и желательно строго, чтобы модель не додумывала то что мне не надо. Если я правильно поняла, вам нужны характеристики без художественности, соответственно, роль на мой взгляд тут не имеет значения (рассматривать коллаж как дизайнер, фотограф?). А вот задача и требования критичны. Например - как указывать положение фото в коллаже ( я предлагаю - определять центр прямоугольника, куда вписывается фото или картинка, потому что не знаю, какой формы будут элементы коллажа)
Примерный промт:
1) Контекст
На вход подаётся изображение-коллаж (файл или ссылка).
Нужно выделить каждое под-изображение и описать формальные характеристики:
тип файла, разрешение (px), DPI, глубина цвета, размер файла;
общее количество под-изображений в коллаже;
для каждого под-изображения: координаты центра и bounding box, стиль, тип сцены, позиционное описание для быстрой ручной проверки.
Если каких-то техданных нет (например, DPI у web-картинки) — ставь null
и низкую уверенность, укажи это в validation.unknown_fields
.
2)Логика (как обрабатывать)
Используй только визуальные признаки и доступные техполя файла.
Все значения давай как пара
"value"
+"confidence"
.Уверенность кодируй словом (
"high" | "medium" | "low"
) и числомconfidence_score
в диапазоне 0–1. Рекомендуемые пороги:high ≥ 0.80
,0.60 ≤ medium < 0.80
,low < 0.60
.Система координат: верхний левый угол коллажа = (0,0), ось X вправо, ось Y вниз.
Bounding box — осево-выравненный прямоугольник; помимо
center
укажиbbox
(x,y — левый верхний угол).Не добавляй художественных интерпретаций;
description
— только для человеко-читаемой локализации.Для стиля/сцены используй контролируемые значения из словарей (можно несколько меток, тогда укажи top-1 в
value
, остальные — вalts
).
Рекомендуемые словари
scene_type ∈ {portrait, landscape, interior, still_life, documentary, street, macro, product, infographic, abstract, other}
style ∈ {realism, impressionism, expressionism, documentary, minimalism, cyberpunk, vintage, flat, 3d_render, comic, watercolor, oil, collage, other}
3) Инструкция (что сделать)
Сформируй JSON со структурой:
file
— общие характеристики.images[]
— список подизображений с геометрией и классификацией.summary
— сжатая сводка об объекте (без дублирования полей).validation
— метрики успеха и служебные проверки.
4) Каркас JSON (с метриками)
{ "schema_version": "1.1", "file": { "type": {"value": "JPEG", "confidence": "high", "confidence_score": 0.98}, "resolution": {"value": {"width": 1920, "height": 1080}, "confidence": "high", "confidence_score": 0.98}, "dpi": {"value": 72, "confidence": "medium", "confidence_score": 0.70}, "color_depth": {"value": "24-bit", "confidence": "high", "confidence_score": 0.95}, "file_size": {"value": "2.3MB", "confidence": "high", "confidence_score": 0.92} }, "images": [ { "id": 1, "center": {"x": 120, "y": 80}, "bbox": {"x": -50, "y": -50, "width": 340, "height": 260}, "size": {"width": 340, "height": 260}, "orientation_deg": {"value": 0, "confidence": "high", "confidence_score": 0.95}, "scene_type": { "value": "portrait", "confidence": "high", "confidence_score": 0.84, "alts": [{"label": "documentary", "score": 0.42}] }, "style": { "value": "realism", "confidence": "medium", "confidence_score": 0.73, "alts": [{"label": "documentary", "score": 0.55}] }, "description": "изображение второе сверху, первое слева", "metrics": { "bbox_quality": {"value": 0.91, "note": "рамки внутри изображения"}, "edge_touch": {"value": false}, "area_px": 88400, "area_ratio": 0.042 } } ], "summary": { "total_images": {"value": 9, "confidence": "high", "confidence_score": 0.97}, "canvas": { "resolution": {"value": "1920x1080", "confidence": "high", "confidence_score": 0.98}, "type": {"value": "JPEG", "confidence": "high", "confidence_score": 0.98}, "dpi": {"value": 72, "confidence": "medium", "confidence_score": 0.70}, "color_depth": {"value": "24-bit", "confidence": "high", "confidence_score": 0.95}, "file_size": {"value": "2.3MB", "confidence": "high", "confidence_score": 0.92} } }, "validation": { "json_valid": true, "counts_match": { "value": true, "confidence": "high", "confidence_score": 0.99, "details": "images.length == summary.total_images.value" }, "coverage_ratio": { "value": 0.86, "confidence": "medium", "confidence_score": 0.72, "details": "суммарная площадь bbox / площадь коллажа" }, "overlap_rate": { "value": 0.03, "confidence": "high", "confidence_score": 0.90, "details": "средний IoU по всем парам bbox" }, "bbox_out_of_bounds": [ {"image_id": 1, "issue": "x<0 or y<0 or (x+w)>W or (y+h)>H"} ], "conflicts": [ "В summary и file различается dpi? — нет", "Стиль=realism, но alt=documentary с близким score — проверить вручную" ], "confidence_distribution": { "high": 0.62, "medium": 0.30, "low": 0.08 }, "unknown_fields": ["dpi"], "missing_fields": [], "notes": [ "Грид неявный: рекомендована ручная валидация 'description' для изображений 3 и 7" ], "next_questions": [ "Нужно ли извлечь текст (OCR)?", "Сгенерировать сводку палитры и доминантных цветов?" ] }
}
> Пояснения к полям:
>
> bbox
дублирует геометрию для явной проверки (иногда удобнее знать левый верхний угол).
> area_ratio
— доля площади подизображения от площади коллажа; coverage_ratio
— суммарная доля всех bbox.
> overlap_rate
— усреднённый IoU (находит наложения/дубли).
> confidence_distribution
помогает мгновенно понять общую «надёжность» разметки.
> * unknown_fields
/missing_fields
делают пробелы в данных явными.
5) Метрики успеха (встроены и проверяются)
validation.json_valid == true
.validation.counts_match.value == true
.Все ключевые поля присутствуют:
file
,images[]
,summary.total
_images
,validation
.Каждое значение имеет
confidence
иconfidence_score
.Для каждого изображения заданы
center
иbbox
/size
, плюсdescription
.overlap_rate
иcoverage_ratio
рассчитаны; выходы за границы отражены вbbox_out_of_bounds
.Если техполя недоступны — отражены в
unknown_fields
и отмеченыlow
.
6) Итеративность (уточнение)
После выдачи JSON задай один короткий вопрос:
> «Хотите ли вы углублённый анализ: палитра, композиционные оси/правила третей, текст в кадре (OCR), дополнительные стилистические признаки?»
Если модель небольшая и контекстное окно маленькое, то лучше обрабатывать поэтапно, с минимальных метрик и постепенно их добавлять
Мини-промт
На вход подаётся изображение-коллаж.
Задача: вернуть JSON со структурой (file, images[], summary, validation).
Правила:
Используй только визуальные признаки и EXIF.
Каждое значение = {value, confidence, confidence_score}.
Координаты: (0,0) верхний левый угол; bbox = осевой прямоугольник.
Стиль и сцена выбирай из словарей: scene_type {portrait, landscape, interior, still_life, documentary, street, macro, product, infographic, abstract, other} style {realism, impressionism, expressionism, documentary, minimalism, cyberpunk, vintage, flat, 3d_render, comic, watercolor, oil, collage, other}
Недоступные техданные → value=null, confidence=low, занести в validation.unknown_fields.
Вывод: строго JSON по каркасу ниже.
[вставить JSON-шаблон]
Надеюсь, ответила на ваш вопрос)
Универсальный шаблон-промт
Твоя роль:
Ты — [описание роли: архетип, функция, маска].
Твоя миссия — [главная цель и ценность].
Думай так:
— Исходи из [основной логики / принципа мышления].
— Поддерживай [тональность: вдохновляюще, строго, игриво и т.д.].
— Проверяй себя через [метод: научный подход, символизм, эмпатию и т.п.].
Задача:
Отвечай так, чтобы [результат для пользователя: ясность, энергия, новые идеи].
Спасибо за интересную версию. Потестирую ее. Но учитывая, что трансформер обрабатывает и понимает поведенческую модель, а не человеческие намерения, затрудняюсь, как можно описать функционал понятия - миссия или энергия ответа. Я все-таки склоняюсь (но могу ошибаться), что роль и поведенческая маска это не про reasoning модели, а про соответствие шаблону.
Не «ты — эксперт », а «думай так» — альтернативный промтинг для LLM