Ë
    uPêjN$  ã                   ó¼   — U d dl mZmZmZ d dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZmZ erd dlZd dlmZ eZneZd	Zeeed
f      ed<    G d„ de«      Zy)é    )ÚTYPE_CHECKINGÚAnyÚFinalN)ÚBaseImageGenerationConfig)Úget_secret_str)Ú AimlImageGenerationRequestParams)ÚAllMessageValuesÚ#OpenAIImageGenerationOptionalParams)ÚImageObjectÚImageResponse)ÚLogging)zopenai/.Ú!OPENAI_STYLE_IMAGE_MODEL_PREFIXESc                   ój  — e Zd ZU dZeed<   dZeed<   ededefd„«       Z	dede
e   fd„Zd	ed
edededef
d„Z	 d dedz  dedz  ded
edededz  defd„Z	 	 d!dedede
e   d
edededz  dedz  defd„Zdeded
edededefd„Z	 	 d!dedej(                  dededed
ededddedz  dedz  defd„Zy)"ÚAimlImageGenerationConfigzhttps://api.aimlapi.comÚDEFAULT_BASE_URLzv1/images/generationsÚIMAGE_GENERATION_ENDPOINTÚmodelÚreturnc                 ó,   — | j                  t        «      S )zÕ
        OpenAI image models routed through AI/ML API (e.g. ``openai/gpt-image-2``)
        use the upstream OpenAI request schema, not the flux-style schema used by
        the rest of the AI/ML catalog.
        )Ú
startswithr   )r   s    úv/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/aiml/image_generation/transformation.pyÚ_is_openai_style_modelz0AimlImageGenerationConfig._is_openai_style_model!   s   € ð ×ÑÔ AÓBÐBó    c                 ó4   — | j                  |«      rg d¢S g d¢S )z?
        https://api.aimlapi.com/v1/images/generations
        )ÚnÚsizeÚqualityÚresponse_formatÚoutput_formatÚ
backgroundÚ
moderationÚoutput_compression)r   r   r   )r   )Úselfr   s     r   Úget_supported_openai_paramsz5AimlImageGenerationConfig.get_supported_openai_params*   s$   € ð ×&Ñ& uÔ-ò	ð 	ò 0Ð/r   Únon_default_paramsÚoptional_paramsÚdrop_paramsc           
      ó–  — | j                  |«      }| j                  |«      }|D ]¡  }||v rŒ||vr|rŒt        d|› d|› d|› d�«      ‚|r	||   ||<   Œ/|dk(  r	||   |d<   Œ=|dk(  r	||   |d<   ŒK|d	k(  rJ||   }t        |t        «      r/d
|v r+t        t        |j                  d
«      «      \  }	}
|	|
dœ|d<   Œ”||d<   Œš||   ||<   Œ£ |S )Nz
Parameter z is not supported for model z. Supported parameters are z6. Set drop_params=True to drop unsupported parameters.r   Ú
num_imagesr   r   r   Úx)ÚwidthÚheightÚ
image_size)r$   r   Ú
ValueErrorÚ
isinstanceÚstrÚmapÚintÚsplit)r#   r%   r&   r   r'   Úsupported_paramsÚis_openai_styleÚkÚ
size_valuer+   r,   s              r   Úmap_openai_paramsz+AimlImageGenerationConfig.map_openai_params;   s6  € ð #'×"BÑ"BÀ5Ó"IÐØ!%×!<Ñ!<¸UÓ!Cˆà#ò 	;ˆAØ�OÑ#ØØÐ(Ñ(ÙØÜ Ø   Ð#?À¸wÐFaÐbrÐasð  tjð  kóð ñ Ø%7¸Ñ%:� Ñ"Øà�CŠxØ0BÀ1Ñ0E� Ò-ØÐ'Ò'Ø3EÀaÑ3H� Ò0Ø�f’Ø/°Ñ2�
Ü˜j¬#Ô.°3¸*Ñ3DÜ$'¬¨Z×-=Ñ-=¸cÓ-BÓ$C‘M�E˜6à!&Ø"(ñ5�O LÒ1ð
 5?�O LÒ1à%7¸Ñ%:� Ò"ð;	;ð> Ðr   NÚapi_baseÚapi_keyÚlitellm_paramsÚstreamc                 ó¦   — |xs t        d«      xs | j                  }|j                  d«      }|j                  d«      }|› d| j                  › �}|S )z6
        Get the complete url for the request
        ÚAIML_API_BASEú/z/v1)r   r   ÚrstripÚremovesuffixr   )r#   r9   r:   r   r&   r;   r<   Úcomplete_urls           r   Úget_complete_urlz*AimlImageGenerationConfig.get_complete_urlf   s[   € ð %Ò`¬°Ó(GÒ`È4×K`ÑK`ˆà#×*Ñ*¨3Ó/ˆà#×0Ñ0°Ó7ˆØ&˜ q¨×)GÑ)GÐ(HÐIˆØÐr   ÚheadersÚmessagesc                 ór   — |xs t        d«      xs t        d«      }|st        d«      ‚d|› �|d<   d|d<   |S )NÚAIML_API_KEYÚAIMLAPI_KEYz&AIML_API_KEY or AIMLAPI_KEY is not setzBearer ÚAuthorizationzapplication/jsonzContent-Type)r   r.   )	r#   rD   r   rE   r&   r;   r:   r9   Úfinal_api_keys	            r   Úvalidate_environmentz.AimlImageGenerationConfig.validate_environmentz   sQ   € ð ÒV”~ nÓ5ÒV¼ÈÓ9Vð 	ñ ÜÐEÓFÐFà%,¨]¨OÐ#<ˆ�Ñ Ø"4ˆ�ÑØˆr   Úpromptc                 ód   — | j                  |«      r||dœ|¥S t        d||dœ|¤Ž}t        |«      S )zš
        Transform the image generation request to the AI/ML image generation request body

        https://api.aimlapi.com/v1/images/generations
        )r   rL   )rL   r   © )r   r   Údict)r#   r   rL   r&   r;   rD   Ú"aiml_image_generation_request_bodys          r   Ú"transform_image_generation_requestz<AimlImageGenerationConfig.transform_image_generation_requestŽ   sS   € ð ×&Ñ& uÔ-Ø"¨fÑH¸ÐHÐHäVvð W
ØØñW
ð ñW
Ð*ô
 Ð6Ó7Ð7r   Úraw_responseÚmodel_responseÚlogging_objÚrequest_dataÚencodingztiktoken.Encoding | NoneÚ	json_modec           
      ó
  — 	 |j                  «       }|j
                  sg |_        d|v r¾t        |d   t        «      r«|d   D ]¡  }d|v r:|j
                  j                  t        d|d   |j                  d«      ¬«      «       ŒAd|v sd	|v sŒJ|j
                  j                  t        |j                  d«      xs |j                  d	«      d|j                  d«      ¬«      «       Œ£ |S d
|v rrd|d
   v rk|d
   d   D ]^  }d	|v r*|j
                  j                  t        |d	   d¬«      «       Œ1d|v sŒ6|j
                  j                  t        d|d   ¬«      «       Œ` |S d|v rf|d   D ]^  }d|v r*|j
                  j                  t        d|d   ¬«      «       Œ1d	|v sŒ6|j
                  j                  t        |d	   d¬«      «       Œ` |S # t        $ r0}| j                  d|› �|j                  |j                  ¬«      ‚d}~ww xY w)zŽ
        Transform the image generation response to the litellm image response

        https://api.aimlapi.com/v1/images/generations
        z.Error transforming image generation response: )Úerror_messageÚstatus_coderD   NÚdataÚurlÚrevised_prompt)Úb64_jsonr\   r]   r^   Úimage_base64ÚoutputÚchoices)r^   r\   Úimages)ÚjsonÚ	ExceptionÚget_error_classrZ   rD   r[   r/   ÚlistÚappendr   Úget)r#   r   rR   rS   rT   rU   r&   r;   rV   r:   rW   Úresponse_dataÚeÚimageÚchoices                  r   Ú#transform_image_generation_responsez=AimlImageGenerationConfig.transform_image_generation_response¥   sP  € ð$	Ø#/×#4Ñ#4Ó#6ˆMð ×"Ò"Ø"$ˆNÔð �]Ñ"¤z°-ÀÑ2GÌÔ'Nà& vÑ.ò �Ø˜E‘>Ø"×'Ñ'×.Ñ.Ü#Ø%)Ø % e¡Ø+0¯9©9Ð5EÓ+Fôõð   5Ñ(¨N¸eÒ,CØ"×'Ñ'×.Ñ.Ü#Ø%*§Y¡Y¨zÓ%:Ò%W¸e¿i¹iÈÓ>WØ $Ø+0¯9©9Ð5EÓ+Fôõððd ÐðC ˜Ñ&¨9¸ÀhÑ8OÑ+OØ'¨Ñ1°)Ñ<ò �Ø! VÑ+Ø"×'Ñ'×.Ñ.Ü#Ø%+¨NÑ%;Ø $ôõð ˜f’_Ø"×'Ñ'×.Ñ.Ü#Ø%)Ø & u¡ôõðð@ Ðð# ˜Ñ&à& xÑ0ò �Ø˜E‘>Ø"×'Ñ'×.Ñ.Ü#Ø%)Ø % e¡ôõð $ uÒ,Ø"×'Ñ'×.Ñ.Ü#Ø%*¨>Ñ%:Ø $ôõðð ÐøôG ò 	Ø×&Ñ&Ø NÈqÈcÐRØ(×4Ñ4Ø$×,Ñ,ð 'ó ð ûð	ús   ‚G	 Ç		HÇ+G=Ç=H)N)NN)Ú__name__Ú
__module__Ú__qualname__r   r0   Ú__annotations__r   ÚstaticmethodÚboolr   rf   r
   r$   rO   r8   rC   r	   rK   rQ   ÚhttpxÚResponser   ÚLiteLLMLoggingObjrm   rN   r   r   r   r      s  … Ø5Ð�cÓ5Ø%<Ð˜sÓ<àðC cð C¨dò Có ðCð0°ð 0¸Ð>aÑ9bó 0ð")à ð)ð ð)ð ð	)ð
 ð)ð 
ó)ðd #ñà˜‘*ðð �t‘ðð ð	ð
 ðð ðð �t‘ðð 
óð6 #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
óð(8àð8ð ð8ð ð	8ð
 ð8ð ð8ð 
ó8ðB #Ø!%ñWàðWð —n‘nðWð &ð	Wð
 'ðWð ðWð ðWð ðWð -ðWð �t‘ðWð ˜$‘;ðWð 
ôWr   r   )Útypingr   r   r   rt   Ú5litellm.llms.base_llm.image_generation.transformationr   Úlitellm.secret_managers.mainr   Úlitellm.types.llms.aimlr   Úlitellm.types.llms.openair	   r
   Úlitellm.types.utilsr   r   ÚtiktokenÚ*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjrv   r   Útupler0   rq   r   rN   r   r   ú<module>r�      sd   ðß ,Ò ,ã õõ 8Ý D÷÷ ;áÛåXà*ÑàÐð =IÐ ! 5¨¨s°C¨x©Ñ#9Ó Hô_Ð 9õ _r   