Ë
    ?â¯j’  ã                   óT   — d dl Z d dlZd dlZ ej                  e«      Z G d„ d«      Zy)é    Nc                   ó4   — e Zd ZdZdZd	d„Zd„ Zd„ Zd„ Zd„ Z	y)
ÚVisionCriticu@  Analiza detalladamente esta ilustraciÃ³n anime de forma puramente tÃ©cnica y anatÃ³mica.
Busca errores crÃ­ticos:
- Manos con mÃ¡s de 5 dedos o dedos deformes
- Ojos bizcos, desalineados o pupilas derretidas
- Extremidades flotantes o miembros extras
- Clones o personas deformes en reflejos/espejos
- Cuerpos estirados artificialmente
- Fondos abstractos planos en lugar de escenarios reales

Responde ESTRICTAMENTE con una sola de estas opciones:
'APROBADO' si la imagen es anatÃ³micamente correcta.
'RECHAZADO: [descripciÃ³n breve del error]' si detectas mutaciones graves.u  Analiza esta ilustraciÃ³n anime. Verifica si el outfit y el escenario son coherentes entre sÃ­ (ej: no deberÃ­a haber traje de baÃ±o en una oficina, ni uniforme escolar en la playa).
Responde con 'APROBADO' si son coherentes, o 'RECHAZADO: [motivo]' si no lo son.c                 óJ   — || _         || _        || _        || _        d| _        y )Nr   )ÚclientÚmax_retriesÚauto_approve_on_errorÚdelay_between_requestsÚlast_request_time)ÚselfÚvision_clientr   r   r	   s        ú6C:\Users\Usuario\Downloads\NEW\Engine\vision_critic.pyÚ__init__zVisionCritic.__init__   s)   € Ø#ˆŒØ&ˆÔØ%:ˆÔ"Ø&<ˆÔ#Ø!"ˆÕó    c                 ó  — t        j                   «       | j                  z
  }|| j                  k  r>| j                  |z
  }t        j	                  d|d›d�«       t        j
                  |«       t        j                   «       | _        y )Nz
Esperando z.1fz%s para respetar rate limit (2 RPM)...)Útimer
   r	   ÚloggerÚinfoÚsleep)r   ÚelapsedÚ	wait_times      r   Ú_wait_for_rate_limitz!VisionCritic._wait_for_rate_limit#   sh   € Ü—)‘)“+ × 6Ñ 6Ñ6ˆØ�T×0Ñ0Ò0Ø×3Ñ3°gÑ=ˆIÜ�K‰K˜* Y¨s OÐ3XÐYÔZÜ�J‰J�yÔ!Ü!%§¡£ˆÕr   c                 ó¶  — t        j                  |«      j                  d«      }t        | j                  «      D ]�  }| j                  «        | j                  j                  || j                  «      }| j                  j                  |«      r
dd|dz   fc S || j                  dz
  k  sŒqt        j                  d|dz   › d|› d�«       Œ‘ d| j                  fS )	Núutf-8TÚAPROBADOé   zIntento z rechazado: z. Reintentando...F)Úbase64Ú	b64encodeÚdecodeÚranger   r   r   ÚanalyzeÚPROMPT_ANATOMYÚis_approvedr   Úwarning)r   Úimage_bytesÚ	image_b64ÚattemptÚverdicts        r   Úaudit_anatomyzVisionCritic.audit_anatomy+   sÅ   € Ü×$Ñ$ [Ó1×8Ñ8¸ÓAˆ	ä˜T×-Ñ-Ö.ˆGØ×%Ñ%Ô'Ø—k‘k×)Ñ)¨)°T×5HÑ5HÓIˆGà�{‰{×&Ñ& wÔ/Ø˜Z¨°1©Ð4Ò4à˜×)Ñ)¨AÑ-Ó-Ü—‘ ¨'°A©+¨°lÀ7À)ÐK\Ð]Õ^ð /ð �g˜t×/Ñ/Ð/Ð/r   c                 óð   — t        j                  |«      j                  d«      }| j                  «        | j                  j                  || j                  «      }| j                  j                  |«      |fS )Nr   )r   r   r   r   r   r    ÚPROMPT_OUTFITr"   )r   r$   r%   r'   s       r   Úaudit_coherencezVisionCritic.audit_coherence:   s_   € Ü×$Ñ$ [Ó1×8Ñ8¸ÓAˆ	Ø×!Ñ!Ô#Ø—+‘+×%Ñ% i°×1CÑ1CÓDˆØ�{‰{×&Ñ& wÓ/°Ð8Ð8r   c                 ó@  — t         j                  d«       | j                  |«      \  }}}|s t         j                  d|› �«       d|dd dœfS | j	                  |«      \  }}|s t         j                  d|› �«       d|dddœfS t         j                  d«       dddddœfS )	Nu%   === INICIANDO AUDITORÃ�A COMPLETA ===u   RECHAZADO por anatomÃ­a: F)ÚanatomyÚ	coherencezRECHAZADO por incoherencia: Tu   APROBADO en auditorÃ­a completar   )r   r   r(   r#   r+   )r   r$   Ú
anatomy_okÚanatomy_verdictÚattemptsÚcoherence_okÚcoherence_verdicts          r   Ú
full_auditzVisionCritic.full_audit@   s±   € Ü�‰Ð;Ô<à04×0BÑ0BÀ;Ó0OÑ-ˆ
�O XÙÜ�N‰NÐ6°Ð6GÐHÔIØ˜/°uÈ4Ñ+PÐPÐPà*.×*>Ñ*>¸{Ó*KÑ'ˆÐ'ÙÜ�N‰NÐ9Ð:KÐ9LÐMÔNØÐ+¸ÈEÑ-RÐRÐRä�‰Ð5Ô6Ø�Z¨TÀÑ!EÐEÐEr   N)é   Té   )
Ú__name__Ú
__module__Ú__qualname__r!   r*   r   r   r(   r+   r4   © r   r   r   r      s2   „ ð
	Uð ð	[ð ó#ò-ò0ò9óFr   r   )r   r   ÚloggingÚ	getLoggerr7   r   r   r:   r   r   Ú<module>r=      s.   ðÛ Û Û à	ˆ×	Ñ	˜8Ó	$€÷GFò GFr   