All streams
Search
Write a publication
Pull to refresh

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 со структурой:

  1. file — общие характеристики.

  2. images[] — список подизображений с геометрией и классификацией.

  3. summary — сжатая сводка об объекте (без дублирования полей).

  4. 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) Метрики успеха (встроены и проверяются)

  1. validation.json_valid == true.

  2. validation.counts_match.value == true.

  3. Все ключевые поля присутствуют: file, images[], summary.total_images, validation.

  4. Каждое значение имеет confidence и confidence_score.

  5. Для каждого изображения заданы center и bbox/size, плюс description.

  6. overlap_rate и coverage_ratio рассчитаны; выходы за границы отражены в bbox_out_of_bounds.

  7. Если техполя недоступны — отражены в 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 модели, а про соответствие шаблону.

Sign up to leave a comment.

Articles