Ë
    uPêjb"  ã                   óÄ   — d dl mZmZmZ d dlZd dlmZ d dlmZm	Z	m
Z
mZm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 G d„ de«      Zy)é    )ÚTYPE_CHECKINGÚAnyÚFinalN)ÚBaseImageGenerationConfig)Ú"get_gemini_image_generation_configÚ$get_gemini_image_web_search_requestsÚis_gemini_image_modelÚmap_gemini_image_tools_paramsÚ!map_openai_image_params_to_gemini©Útransform_gemini_image_usage)Úget_secret_str)ÚGeminiImageGenerationRequest)ÚAllMessageValuesÚ#OpenAIImageGenerationOptionalParams)ÚImageObjectÚImageResponse)ÚLoggingc                   óN  — e Zd ZU dZeed<   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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
)!ÚGoogleImageGenConfigz0https://generativelanguage.googleapis.com/v1betaÚDEFAULT_BASE_URLÚmodelÚreturnc                 óJ   — ddg}t        |«      r|j                  g d¢«       |S )zp
        Google AI Imagen API supported parameters
        https://ai.google.dev/gemini-api/docs/imagen
        ÚnÚsize)ÚimageConfigÚtoolsÚweb_search_options)r	   Úextend)Úselfr   Úsupported_paramss      úx/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/gemini/image_generation/transformation.pyÚget_supported_openai_paramsz0GoogleImageGenConfig.get_supported_openai_params'   s+   € ð
 $'¨ -ÐÜ  Ô'Ø×#Ñ#Ò$RÔSØÐó    Únon_default_paramsÚoptional_paramsÚdrop_paramsc                 óp   — t        ||| j                  |«      |¬«      }t        |«      rt        ||«      }|S )N)Úparamsr   r"   r'   )r   r$   r	   r
   )r!   r&   r'   r   r(   Úmapped_paramss         r#   Úmap_openai_paramsz&GoogleImageGenConfig.map_openai_params1   sB   € ô :Ø%ØØ!×=Ñ=¸eÓDØ+ô	
ˆô ! Ô'Ü9Ð:LÈmÓ\ˆMØÐr%   NÚapi_baseÚapi_keyÚlitellm_paramsÚstreamc                 óœ   — |xs t        d«      xs | j                  }|j                  d«      }t        |«      r
|› d|› d�}|S |› d|› d�}|S )z–
        Get the complete url for the request

        Gemini 2.5 Flash Image Preview: :generateContent
        Other Imagen models: :predict
        ÚGEMINI_API_BASEú/z/models/z:generateContentz:predict)r   r   Úrstripr	   )r!   r-   r.   r   r'   r/   r0   Úcomplete_urls           r#   Úget_complete_urlz%GoogleImageGenConfig.get_complete_urlB   sn   € ð %Òb¬Ð7HÓ(IÒbÈT×MbÑMbˆà#×*Ñ*¨3Ó/ˆô ! Ô'Ø*˜^¨8°E°7Ð:JÐKˆLð
 Ðð +˜^¨8°E°7¸(ÐCˆLàÐr%   ÚheadersÚmessagesc                 óR   — |xs t        d«      }|st        d«      ‚||d<   d|d<   |S )NÚGEMINI_API_KEYzGEMINI_API_KEY is not setzx-goog-api-keyzapplication/jsonzContent-Type)r   Ú
ValueError)	r!   r7   r   r8   r'   r/   r.   r-   Úfinal_api_keys	            r#   Úvalidate_environmentz)GoogleImageGenConfig.validate_environment^   s=   € ð ,3Ò+V´nÐEUÓ6VˆÙÜÐ8Ó9Ð9à$1ˆÐ Ñ!Ø"4ˆ�ÑØˆr%   Úpromptc                 ó  — t        |«      rHdd|igigt        ||¬«      dœ}|j                  d«      x}r||d<   |j                  d«      x}r||d<   |S ddlm}	m}
 t         |	|¬	«      g |
di |¤Ž¬
«      }|j                  d¬«      S )aÂ  
        Transform the image generation request to Gemini format

        For Gemini 2.5 Flash Image Preview, use the standard Gemini format with response_modalities:
        {
          "contents": [
            {
              "parts": [
                {"text": "Generate an image of..."}
              ]
            }
          ],
          "generationConfig": {
            "response_modalities": ["IMAGE", "TEXT"]
          }
        }
        ÚpartsÚtext)r   r'   )ÚcontentsÚgenerationConfigr   Ú
toolConfigr   )ÚGeminiImageGenerationInstanceÚGeminiImageGenerationParameters)r>   )Ú	instancesÚ
parametersT)Úexclude_none© )r	   r   ÚgetÚlitellm.types.llms.geminirE   rF   r   Ú
model_dump)r!   r   r>   r'   r/   r7   Úrequest_bodyr   Útool_configrE   rF   Úrequest_body_objs               r#   Ú"transform_image_generation_requestz7GoogleImageGenConfig.transform_image_generation_requestp   s½   € ô4 ! Ô'à%¨°Ð(8Ð'9Ð:Ð;Ü$FØØ$3ô%ñ)ˆLð (×+Ñ+¨GÓ4Ð4ˆuÐ4Ø(-�˜WÑ%Ø-×1Ñ1°,Ó?Ð?ˆ{Ð?Ø-8�˜\Ñ*ØÐ÷ô
 EaÙ8ÀÔGÐHÙ:ÑM¸_ÑMôEÐð $×.Ñ.¸DÐ.ÓAÐAr%   Úusage_metadatac                 ó   — t        |«      S ©Nr   )r!   rR   s     r#   Ú_transform_image_usagez+GoogleImageGenConfig._transform_image_usage¤   s   € Ü+¨NÓ;Ð;r%   Úraw_responseÚmodel_responseÚlogging_objÚrequest_dataÚencodingztiktoken.Encoding | NoneÚ	json_modec           
      ó4  — 	 |j                  «       }|j
                  sg |_        t        |«      rÝ|j                  dg «      }|D ]}  }|j                  di «      }|j                  dg «      }|D ]R  }d|v sŒ|d   }d|v sŒ|j                  d	«      }|j
                  j                  t        |d   d|rd
|ind¬«      «       ŒT Œ d|v rt        |d   «      |_        t        |«      }|r#|j                  �t        |j                  d|«       |S |j                  dg «      }|D ]8  }|j
                  j                  t        |j                  dd«      d¬«      «       Œ: |S # t        $ r0}| j                  d|› �|j                  |j                  ¬«      ‚d}~ww xY w)zU
        Transform Google AI Imagen response to litellm ImageResponse format
        z.Error transforming image generation response: )Úerror_messageÚstatus_coder7   NÚ
candidatesÚcontentr@   Ú
inlineDataÚdataÚthoughtSignatureÚthought_signature)Úb64_jsonÚurlÚprovider_specific_fieldsÚusageMetadataÚweb_search_requestsÚpredictionsÚbytesBase64Encoded)re   rf   )ÚjsonÚ	ExceptionÚget_error_classr^   r7   rb   r	   rK   Úappendr   r   Úusager   Úsetattr)r!   r   rV   rW   rX   rY   r'   r/   rZ   r.   r[   Úresponse_dataÚer_   Ú	candidater`   r@   ÚpartÚinline_dataÚthought_sigri   rj   Ú
predictions                          r#   Ú#transform_image_generation_responsez8GoogleImageGenConfig.transform_image_generation_response§   sÒ  € ð 	Ø#/×#4Ñ#4Ó#6ˆMð ×"Ò"Ø"$ˆNÔô ! Ô'à -× 1Ñ 1°,ÀÓ CˆJØ'ò �	Ø#Ÿ-™-¨	°2Ó6�ØŸ™ G¨RÓ0�Ø!ò �Dà# tÒ+Ø&*¨<Ñ&8˜Ø! [Ò0Ø*.¯(©(Ð3EÓ*F˜KØ*×/Ñ/×6Ñ6Ü +Ø-8¸Ñ-@Ø(,áNYÐ)<¸kÑ(JÐ_cô	!"õñðð(  -Ñ/Ü'CÀMÐRaÑDbÓ'c�Ô$Ü)MÈmÓ)\ÐÙ" ~×';Ñ';Ð'GÜ˜×,Ñ,Ð.CÐEXÔYð Ðð "/×!2Ñ!2°=À"Ó!EˆKØ)ò �
à×#Ñ#×*Ñ*ÜØ!+§¡Ð0DÀdÓ!KØ ôõðð Ðøôe ò 	Ø×&Ñ&Ø NÈqÈcÐRØ(×4Ñ4Ø$×,Ñ,ð 'ó ð ûð	ús   ‚E Å	FÅ'+FÆFrT   )NN)Ú__name__Ú
__module__Ú__qualname__r   ÚstrÚ__annotations__Úlistr   r$   ÚdictÚboolr,   r6   r   r=   rQ   rU   ÚhttpxÚResponser   ÚLiteLLMLoggingObjry   rJ   r%   r#   r   r   $   s  … ØNÐ�cÓNð °ð  ¸Ð>aÑ9bó  ðà ðð ðð ð	ð
 ðð 
óð0 #ñà˜‘*ðð �t‘ðð ð	ð
 ðð ðð �t‘ðð 
óðF #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
óð$2Bàð2Bð ð2Bð ð	2Bð
 ð2Bð ð2Bð 
ó2Bðh<°Tó <ð #Ø!%ñDàðDð —n‘nðDð &ð	Dð
 'ðDð ðDð ðDð ðDð -ðDð �t‘ðDð ˜$‘;ðDð 
ôDr%   r   )Útypingr   r   r   r‚   Ú5litellm.llms.base_llm.image_generation.transformationr   Ú litellm.llms.gemini.common_utilsr   r   r	   r
   r   Ú.litellm.llms.gemini.image_usage_transformationr   Úlitellm.secret_managers.mainr   rL   r   Úlitellm.types.llms.openair   r   Úlitellm.types.utilsr   r   ÚtiktokenÚ*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjr„   r   rJ   r%   r#   ú<module>r�      sX   ðß ,Ñ ,ã õ÷õ õõ 8Ý B÷÷ ;áÛåXà*ÑàÐôGÐ4õ Gr%   