76 lines
4.9 KiB
Python
76 lines
4.9 KiB
Python
from app.services.analyzer_common import DISCLAIMER, BaseAnalyzer
|
||
|
||
USER_PROMPT = (
|
||
"请分析这张单人正脸照片,生成中文面相娱乐报告。"
|
||
"必须先判断照片是否适合分析:是否单人、正脸、五官无遮挡、光线清晰。"
|
||
"必须覆盖脸型轮廓、三庭五眼、眉眼神态、鼻唇表达、气色状态、整体气质。"
|
||
"写作要求:"
|
||
"1. overall_summary 用 2 到 4 句话,像给用户本人看的开场结论,要贴近日常生活。"
|
||
"2. dimensions 中每个 interpretation 必须关联现实场景,例如学习专注、工作表达、社交沟通、情绪恢复、生活节奏。"
|
||
"3. 每个 advice 必须是今天或本周能做的小建议,不要空泛。"
|
||
"4. 不评价美丑,不做健康诊断,不判断年龄、种族、身份、财富、婚姻结局。"
|
||
"5. 如果照片不够正脸、多人、遮挡或不清晰,要把 quality_check.can_analyze 设为 false,并说明原因。"
|
||
)
|
||
|
||
|
||
class FaceAnalyzer(BaseAnalyzer):
|
||
async def analyze(self, image_bytes: bytes, content_type: str) -> dict:
|
||
if not self.client:
|
||
return self._mock_report()
|
||
return await self._create_image_report(USER_PROMPT, image_bytes, content_type)
|
||
|
||
def _mock_report(self) -> dict:
|
||
return {
|
||
"quality_check": {"can_analyze": True, "reason": "mock mode", "confidence": 0.71},
|
||
"overall_summary": "这是一份娱乐向面相报告。整体看,你给人的第一感觉偏稳,适合用清楚、温和的表达建立信任。最近如果在学习、工作或关系里需要推进事情,先把状态收拾利落,会更容易进入节奏。",
|
||
"dimensions": [
|
||
{
|
||
"name": "脸型轮廓",
|
||
"observations": ["整体轮廓较均衡", "面部线条有稳定感"],
|
||
"interpretation": "这类轮廓象征做事方式偏稳,现实里可能更适合长期推进,而不是靠一阵热情冲刺。",
|
||
"confidence": 0.68,
|
||
"advice": "这周选一个最重要的目标,每天只推进一个小动作。",
|
||
},
|
||
{
|
||
"name": "三庭五眼",
|
||
"observations": ["比例观感较协调", "中庭存在一定表达重心"],
|
||
"interpretation": "比例协调象征你在计划和表达之间有平衡感。学习或工作中,适合先梳理框架,再输出观点。",
|
||
"confidence": 0.64,
|
||
"advice": "开会或沟通前,先写下 3 个要点,避免临场发散。",
|
||
},
|
||
{
|
||
"name": "眉眼神态",
|
||
"observations": ["眉眼状态较集中", "眼神表达偏内敛"],
|
||
"interpretation": "眉眼偏集中,象征观察力不错。你可能容易先看懂气氛,再决定怎么表达。",
|
||
"confidence": 0.66,
|
||
"advice": "有想法时别只观察,试着先说一个小判断。",
|
||
},
|
||
{
|
||
"name": "鼻唇表达",
|
||
"observations": ["表达区域较清晰", "唇部状态偏平和"],
|
||
"interpretation": "这象征你适合用稳定语气处理分歧。关系里,不必一次讲完所有委屈,先说最具体的一件事就好。",
|
||
"confidence": 0.61,
|
||
"advice": "本周沟通需求时,用“我希望下次可以……”开头。",
|
||
},
|
||
{
|
||
"name": "气色状态",
|
||
"observations": ["画面气色受光线影响", "整体状态可读性尚可"],
|
||
"interpretation": "气色象征当下状态。照片里呈现出的状态提醒你,近期要少一点硬撑,多一点规律恢复。",
|
||
"confidence": 0.55,
|
||
"advice": "今晚把睡前 30 分钟留给放松,不再继续刷任务。",
|
||
},
|
||
{
|
||
"name": "整体气质",
|
||
"observations": ["气质偏克制", "亲和感与边界感并存"],
|
||
"interpretation": "整体气质象征你适合走可靠路线。事业或学习里,稳定交付比强行表现更能给你加分。",
|
||
"confidence": 0.67,
|
||
"advice": "把一个小成果整理出来发给该看到的人。",
|
||
},
|
||
],
|
||
"strengths": ["容易给人可靠感", "适合先观察再行动", "沟通时有稳定气场"],
|
||
"challenges": ["想得多时表达会慢半拍", "容易把疲惫藏起来"],
|
||
"suggestions": ["生活上先整理作息和精神状态", "学习成长上先列框架再输出", "事业工作上用稳定交付建立信任", "关系沟通上把需求说具体"],
|
||
"lucky_keywords": ["稳住气场", "先说重点", "整理状态"],
|
||
"disclaimer": DISCLAIMER,
|
||
}
|