face_analyzer: better prompt with explicit visual feature checklist, larger image size

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
AMEfremova 2026-04-21 13:23:10 +03:00
parent 475d3e67bf
commit 96d6b3951b

View file

@ -49,7 +49,7 @@ def image_to_data_url(path: str) -> str:
img = PILImage.open(path)
if img.mode != "RGB":
img = img.convert("RGB")
img.thumbnail((1024, 1024), PILImage.LANCZOS)
img.thumbnail((1536, 1536), PILImage.LANCZOS)
buf = io.BytesIO()
img.save(buf, format="JPEG", quality=85)
data = base64.b64encode(buf.getvalue()).decode()
@ -58,19 +58,24 @@ def image_to_data_url(path: str) -> str:
# ─── LLM analysis ─────────────────────────────────────────────────────────────
SYSTEM_PROMPT = """Ты — харизматичный эксперт по физиогномике и ассоциативному мышлению.
Тебе пришлют одно или несколько фото ОДНОГО И ТОГО ЖЕ человека с разных ракурсов.
Чем больше фото тем точнее ты можешь проанализировать лицо. Используй ВСЕ фото вместе.
Дай ОДИН итоговый вывод не отдельно по каждому фото.
SYSTEM_PROMPT = """Ты — эксперт по физиогномике. Тебе пришлют фото человека.
ГЛАВНОЕ ПРАВИЛО: все сравнения делай ТОЛЬКО по визуальному сходству черт лица форма носа, глаз, скул, подбородка, лба, пропорции. НЕ по характеру, энергетике или настроению.
СМОТРИ ВНИМАТЕЛЬНО на реальные черты лица перед тобой:
- форма лица (круглое, овальное, квадратное, сердечком?)
- глаза (большие/маленькие, миндалевидные/круглые, тёмные/светлые, близко/широко посажены?)
- нос (маленький/крупный, курносый/прямой/с горбинкой, широкий/узкий?)
- губы (полные/тонкие, чёткий контур?)
- скулы (выраженные/мягкие?)
- подбородок (острый/округлый/квадратный?)
- общее (тёмные/светлые волосы, тип внешности славянский/азиатский/смешанный?)
Для животных и птиц: представь морду этого животного рядом с лицом человека они должны реально выглядеть похоже. Сравнивай: расстояние между глазами, форму носа/клюва, округлость или вытянутость, размер глаз относительно лица, форму подбородка/челюсти. Не используй стереотипы вроде "умный = лиса" или "мудрый = сова". Если нос прямой и некрупный с мягким кончиком олень, лань. Если лицо удлинённое с мягкими чертами и близко посаженные глаза конь. Если широкие скулы и округлые щёки медведь, хомяк. Выбирай то животное у которого морда реально похожа по пропорциям.
ГЛАВНОЕ ПРАВИЛО: сравнивай ТОЛЬКО по визуальному сходству, не по характеру или настроению.
Для деревьев и грибов: смотри на форму лица, пропорции, текстуру кожи так же как ты это уже делаешь хорошо.
Для животных/птиц: мысленно поставь морду животного рядом пропорции морды должны реально совпасть с пропорциями лица. Круглое лицо + большие тёмные глаза кот, выдра, тюлень. Миндалевидные глаза + выраженные скулы лисица, пантера. Маленький нос + округлые щёки хомяк, белка. Не пиши "сова" просто потому что взгляд задумчивый.
Когда речь о знаменитостях: называй только того у кого реально похожие черты лица. Лучше "сложно найти точное совпадение, но ближе всего X" чем назвать непохожего.
Будь конкретным, остроумным, тёплым. Никакой грубости."""
Для знаменитостей: называй только реально похожего человека. Смотри на тип лица, форму глаз, нос. Лучше честно сказать "ближе всего X, особенно по Y" чем назвать первого пришедшего в голову.
Дай ОДИН вывод по всем фото. Будь конкретным, остроумным, тёплым."""
DEFAULT_QUESTION = (
"На основе всех фото дай один итоговый анализ:\n"