Ë
    uPêjŠ;  ã                   óŒ  — U d dl Z d dlZd dlZ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mZmZmZ d dlmZ d d	lmZ d d
lmZ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(d<    G d„ de«      Z) G d„ de«      Z*dddœdddœdddœdddœdddœZ+ee(d<   de,e-   fd„Z.de,e-   fd„Z/de,e-   fd„Z0y) é    N)ÚTYPE_CHECKINGÚAnyÚFinal)Úexception_type)Útrack_llm_api_timing)Úencode_url_path_segments)Ú
BaseConfigÚBaseLLMException)ÚAsyncHTTPHandlerÚHTTPHandlerÚ_get_httpx_clientÚget_async_httpx_clientÚversion)ÚAllMessageValues)ÚLlmProviders)ÚCustomStreamWrapperÚModelResponseÚUsageé   )ÚAPI_BASEÚ
BytezError)ÚLoggingi,  ÚSTREAMING_TIMEOUTc                   óT  — e Zd ZdZ	 	 d&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edee   dedededz  dedz  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ede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e   dededddedz  de	dz  defd„Z e«       	 	 	 d)dedededededededeez  dz  de	dz  dedz  dd fd!„«       Z e«       	 	 	 d)dedededededededeez  dz  de	dz  dedz  dd fd"„«       Zd#ed$edeej6                  z  defd%„Zy)*ÚBytezChatConfigz8
    Configuration class for Bytez's API interface.
    ÚreturnNc           
      ó\  — t        «       j                  «       }|j                  «       D ]%  \  }}|dk7  sŒ|€Œt        | j                  ||«       Œ' t        | j                  dd«       i dd“dd“dd“dd“d	d	“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dddddddddœ¥| _        y )NÚselfÚhas_custom_stream_wrapperTÚstreamÚ
max_tokensÚmax_new_tokensÚmax_completion_tokensÚtemperatureÚtop_pÚnÚnum_return_sequencesÚmax_retriesÚseedFÚstopÚ
logit_biasÚlogprobsÚfrequency_penaltyÚpresence_penaltyÚtop_logprobsÚ
modalitiesÚ
predictionÚstream_options)ÚtoolsÚtool_choiceÚfunction_callÚ	functionsÚextra_headersÚparallel_tool_callsÚaudioÚweb_search_options)ÚlocalsÚcopyÚitemsÚsetattrÚ	__class__Úopenai_to_bytez_param_map)r   Úlocals_ÚkeyÚvalues       úk/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/bytez/chat/transformation.pyÚ__init__zBytezChatConfig.__init__,   sM  € ô  ›Ÿ™›ˆØ!Ÿ-™-›/ò 	4‰JˆC�Ø�f‹} Ñ!2Ü˜Ÿ™¨¨UÕ3ð	4ô 	�—‘Ð ;¸TÔBð*
Ø�hð*
àÐ*ð*
ð $Ð%5ð*
ð ˜=ð	*
ð
 �Wð*
ð Ð'ð*
ð ˜=ð*
ð �Eð*
ð �Eð*
ð ˜%ð*
ð ˜ð*
ð   ð*
ð  ð*
ð ˜Eð*
ð ˜%ð*
ð  ˜%ð!*
ð" ˜eð#*
ð$ Ø Ø"ØØ"Ø#(ØØ"'ò3*
ˆÕ&ó    Úmodelc                 óv   — g }| j                   j                  «       D ]  \  }}|sŒ	|j                  |«       Œ |S ©N)r@   r=   Úappend)r   rG   Úsupported_paramsrB   rC   s        rD   Úget_supported_openai_paramsz+BytezChatConfig.get_supported_openai_paramsR   sC   € Ø"$ÐØ×8Ñ8×>Ñ>Ó@ò 	-‰JˆC�ÚØ ×'Ñ'¨Õ,ð	-ð  ÐrF   Únon_default_paramsÚoptional_paramsÚdrop_paramsc                 óÂ   — i }i |¥|¥}|j                  «       D ]C  \  }}| j                  j                  |«      }	|	du r|rŒ(t        d|› d�«      ‚|	€|||<   Œ?|||	<   ŒE |S )NFzparam `z` is not supported on Bytez)r=   r@   ÚgetÚ	Exception)
r   rM   rN   rG   rO   Úadapted_paramsÚ
all_paramsrB   rC   Úaliass
             rD   Úmap_openai_paramsz!BytezChatConfig.map_openai_paramsZ   s‘   € ð !#ˆàEÐ1ÐE°_ÐEˆ
à$×*Ñ*Ó,ò 	*‰JˆC�Ø×2Ñ2×6Ñ6°sÓ;ˆEà˜‰~ÙØä '¨#¨Ð.IÐ JÓKÐKàˆ}Ø&+�˜sÑ#Øà$)ˆN˜5Ò!ð	*ð ÐrF   ÚheadersÚmessagesÚlitellm_paramsÚapi_keyÚapi_basec                 óx   — |j                  dd|› �dt        › �dœ«       |st        d«      ‚|st        d«      ‚|S )Nzapplication/jsonzKey zlitellm/)zcontent-typeÚAuthorizationz
user-agentzRkwarg `messages` must be an array of messages that follow the openai chat standardz3Missing api_key, make sure you pass in your api key)Úupdater   rR   )r   rW   rG   rX   rN   rY   rZ   r[   s           rD   Úvalidate_environmentz$BytezChatConfig.validate_environmentv   sQ   € ð 	�‰à 2Ø#'¨ yÐ!1Ø (¬¨	Ð2ñô	
ñ ÜÐpÓqÐqáÜÐQÓRÐRàˆrF   r    c                 ó2   — t        |d¬«      }t        › d|› �S )NrG   )Ú
field_nameú/)r   r   )r   r[   rZ   rG   rN   rY   r    Úencoded_models           rD   Úget_complete_urlz BytezChatConfig.get_complete_url�   s!   € ô  8¸È'ÔRˆÜ�˜1˜]˜OÐ,Ð,rF   c                 óv   — |j                  dd«      }|j                  d«      r|d= t        |¬«      }|||dœ}|S )Nr    F©rX   )rX   r    Úparams)rQ   Ú adapt_messages_to_bytez_standard)r   rG   rX   rN   rY   rW   r    Údatas           rD   Útransform_requestz!BytezChatConfig.transform_requestœ   sQ   € ð (×+Ñ+¨H°eÓ<ˆð ×Ñ˜xÔ(Ø Ð)ä3¸XÔFˆð !ØØ%ñ
ˆð ˆrF   Úraw_responseÚmodel_responseÚlogging_objÚrequest_dataÚencodingztiktoken.Encoding | NoneÚ	json_modec                 ó4  — |j                  «       } |j                  d«      }|�#t        t        |d   «      |j                  ¬«      ‚t        t        j                  «       «      |_        ||_         |j                  d«      }|j                  d   j                  }|d   d   d   |_        t        |¬«      }t        |«      }t        |g¬«      }t        |«      }||z   }t        |||¬«      }||_        |j                   |j"                  d	<   |j                   j                  d
«      |j                   j                  d«      |j                   j                  d«      |j                   j                  d«      |j                   j                  d«      dœ|_        |S )NÚerror)ÚmessageÚstatus_codeÚoutputr   ÚcontentÚtextrf   )Úprompt_tokensÚcompletion_tokensÚtotal_tokensÚadditional_headersúratelimit-limitúratelimit-remainingúratelimit-resetúinference-meterúinference-time)r|   r}   r~   r   r€   )ÚjsonrQ   r   Ústrrt   ÚintÚtimeÚcreatedrG   Úchoicesrs   rv   rh   Úget_tokens_from_messagesr   ÚusagerW   Ú_hidden_paramsÚprovider_specific_fields)r   rG   rk   rl   rm   rn   rX   rN   rY   ro   rZ   rp   r�   rr   ru   rs   rx   Úoutput_messagesry   rz   rˆ   s                        rD   Útransform_responsez"BytezChatConfig.transform_response´   sŒ  € ð #×'Ñ'Ó)ˆà�t—x‘x Ó(ˆàÐÜÜ˜D ™MÓ*Ø(×4Ñ4ôð ô "%¤T§Y¡Y£[Ó!1ˆÔØ$ˆÔð !˜Ÿ™ Ó*ˆà'×/Ñ/°Ñ2×:Ñ:ˆà  Ñ+¨AÑ.¨vÑ6ˆŒä3¸XÔFˆô  8¸ÓAˆä!AÈFÈ8Ô!Tˆä#;¸OÓ#LÐà+Ð.?Ñ?ˆäØ'Ø/Ø%ô
ˆð  %ˆÔà>J×>RÑ>Rˆ×%Ñ%Ð&:Ñ;à+×3Ñ3×7Ñ7Ð8IÓJØ#/×#7Ñ#7×#;Ñ#;Ð<QÓ#RØ+×3Ñ3×7Ñ7Ð8IÓJØ+×3Ñ3×7Ñ7Ð8IÓJØ*×2Ñ2×6Ñ6Ð7GÓHñ,
ˆÔ(ð ÐrF   Úcustom_llm_providerri   ÚclientÚsigned_json_bodyÚBytezCustomStreamWrapperc                 óÞ  — |�t        |t        «      rt        i ¬«      }	 |j                  ||t	        j
                  |«      d|t        ¬«      }|j                  dk7  r!t        |j                  |j                  ¬«      ‚|j                  «       }t        ||||¬«      }|S # t        j                  $ r:}t        |j                  j                  |j                  j                  ¬«      ‚d }~ww xY w)N)rg   T©rW   ri   r    rm   Útimeout©rt   rs   éÈ   ©Úcompletion_streamrG   r�   rm   )Ú
isinstancer   r   Úpostr�   Údumpsr   ÚhttpxÚHTTPStatusErrorr   Úresponsert   rw   Ú	iter_textr�   ©r   rG   r�   rm   r[   rW   ri   rX   rŽ   rp   r�   r�   Úer—   Ústreaming_responses                  rD   Úget_sync_custom_stream_wrapperz.BytezChatConfig.get_sync_custom_stream_wrapperù   sß   € ð ˆ>œZ¨Ô0@ÔAÜ&¨bÔ1ˆFð
	ZØ$Ÿk™kØØÜ—Z‘Z Ó%ØØ'Ü)ð *ó ˆHð ×Ñ 3Ò&Ü¨×)=Ñ)=ÀxÇ}Á}ÔUÐUà#+×#5Ñ#5Ó#7Ðä$<Ø/ØØ 3Ø#ô	%
Ðð "Ð!øô ×$Ñ$ò 	ZÜ¨¯©×)?Ñ)?ÈÏÉÏÉÔYÐYûð	Zús    .B ÂC,Â25C'Ã'C,c              ƒ   ó  K  — |�t        |t        «      rt        t        j                  i ¬«      }	 |j                  ||t        j                  |«      d|t        ¬«      ƒ d {  –—† }|j                  dk7  r!t        |j                  |j                  ¬«      ‚|j                  «       }t!        ||||¬«      }|S 7 ŒU# t        j                  $ r:}t        |j                  j                  |j                  j                  ¬«      ‚d }~ww xY w­w)N)Úllm_providerrg   Tr’   r”   r•   r–   )r˜   r   r   r   ÚBYTEZr™   r�   rš   r   r›   rœ   r   r�   rt   rw   Ú
aiter_textr�   rŸ   s                  rD   Úget_async_custom_stream_wrapperz/BytezChatConfig.get_async_custom_stream_wrapper#  sô   è ø€ ð ˆ>œZ¨´Ô<Ü+¼×9KÑ9KÐTVÔWˆFð
	ZØ$*§K¡KØØÜ—Z‘Z Ó%ØØ'Ü)ð %0ó %÷ ˆHð ×Ñ 3Ò&Ü¨×)=Ñ)=ÀxÇ}Á}ÔUÐUà#+×#6Ñ#6Ó#8Ðä$<Ø/ØØ 3Ø#ô	%
Ðð "Ð!ð-ùô ×$Ñ$ò 	ZÜ¨¯©×)?Ñ)?ÈÏÉÏÉÔYÐYûð	Züs;   ‚.D
±1B: Á"B8Á#B: Á'AD
Â8B: Â:DÃ5DÄDÄD
Úerror_messagert   c                 ó   — t        ||¬«      S )Nr”   )r   )r   r¨   rt   rW   s       rD   Úget_error_classzBytezChatConfig.get_error_classM  s   € Ü k¸=ÔIÐIrF   )r   N)NNrI   )NNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rE   r‚   ÚlistrL   ÚdictÚboolrV   r   r_   rd   rj   r›   ÚResponser   ÚLiteLLMLoggingObjrŒ   r   r   r   Úbytesr¢   r§   rƒ   ÚHeadersr
   rª   © rF   rD   r   r   '   s†  „ ñð$
à	ó$
ðL °ð  ¸¸c¹ó  ðà ðð ðð ð	ð
 ðð 
óðF #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
óðB #ñ
-à˜‘*ð
-ð �t‘ð
-ð ð	
-ð
 ð
-ð ð
-ð �t‘ð
-ð 
ó
-ðàðð Ð'Ñ(ðð ð	ð
 ðð ðð 
óðF #Ø!%ñCàðCð —n‘nðCð &ð	Cð
 'ðCð ðCð Ð'Ñ(ðCð ðCð ðCð -ðCð �t‘ðCð ˜$‘;ðCð 
óCñJ Óð 9=Ø!%Ø)-ñ'"àð'"ð !ð'"ð 'ð	'"ð
 ð'"ð ð'"ð ð'"ð ð'"ð Ð.Ñ.°Ñ5ð'"ð ˜$‘;ð'"ð   $™,ð'"ð 
$ò'"ó ð'"ñR Óð 9=Ø!%Ø)-ñ'"àð'"ð !ð'"ð 'ð	'"ð
 ð'"ð ð'"ð ð'"ð ð'"ð Ð.Ñ.°Ñ5ð'"ð ˜$‘;ð'"ð   $™,ð'"ð 
$ò'"ó ð'"ðRJ¨Sð J¸sð JÈTÐTY×TaÑTaÑMað JÐfvô JrF   r   c                   ó   — e Zd Zdefd„Zy)r�   Úchunkc                 ó:  — 	 | j                  «       }i }|dddœ}d|i}| j                  |||¬«      S # t        $ r t        ‚t        $ rQ}t	        j
                  «        t        |dt        |«      «       t        | j                  | j                  |¬«      ‚d }~ww xY w)NFÚ )rw   Úis_finishedÚfinish_reasonrv   )Úcompletion_objrl   Úresponse_objrs   )rG   r�   Úoriginal_exception)Úmodel_response_creatorÚreturn_processed_chunk_logicÚStopIterationrR   Ú	tracebackÚ
format_excr>   r‚   r   rG   r�   )r   r¸   rl   r¾   r½   r    s         rD   Úchunk_creatorz&BytezCustomStreamWrapper.chunk_creatorR  sµ   € ð	Ø$(×$?Ñ$?Ó$AˆNØ+-ˆLð Ø$Ø!#ñˆLð 6?ÀÐ4FˆNà×4Ñ4Ø-Ø-Ø)ð 5ó ð øô ò 	 ÜÐÜò 	Ü× Ñ Ô"Ü�A�y¤# a£&Ô)Ü Ø—j‘jØ$(×$<Ñ$<Ø#$ôð ûð	ús   ‚/2 ²BÁ	ABÂBN)r«   r¬   r­   r   rÅ   r¶   rF   rD   r�   r�   Q  s   „ ð 3ô rF   r�   rw   )ÚtypeÚ
value_nameÚimageÚurlr9   Úvideo)rw   Ú	image_urlÚinput_audioÚ	video_urlÚdocumentÚfileÚ!open_ai_to_bytez_content_item_maprX   c                 ón  — t        | «      } g }| D ]¢  }|d   }|d   }g }|D ]{  }|j                  d«      }|st        d«      ‚t        |   }|st        d|› d�«      ‚|d   }	|d   }
|j                  |
«      }|st        d|
› d�«      ‚|j	                  d|	|
|i«       Œ} |j	                  ||d	œ«       Œ¤ |S )
NÚrolerv   rÆ   zProp `type` is not a stringzProp `z` is not supportedrÇ   z` is not a string©rÒ   rv   )Ú#_adapt_string_only_content_to_listsrQ   rR   rÐ   rJ   )rX   Únew_messagesrs   rÒ   rv   Únew_contentÚcontent_itemrÆ   Úcontent_item_mapÚnew_typerÇ   rC   s               rD   rh   rh   |  sý   € Ü2°8Ó<€Hà€Làò DˆØ�v‰ˆØ 	Ñ*ˆàˆà#ò 	FˆLØ+×/Ñ/°Ó7ˆDáÜÐ =Ó>Ð>ä@ÀÑFÐá#Ü &¨¨Ð.@Ð AÓBÐBà'¨Ñ/ˆHà)¨,Ñ7ˆJà ,× 0Ñ 0°Ó <ˆEáÜ &¨¨Ð4EÐ FÓGÐGà×Ñ ¨°*¸eÐDÕEð)	Fð, 	×Ñ T°kÑBÕCð9Dð< ÐrF   c                 ó  — g }| D ]ü  }|j                  d«      }|j                  d«      }g }t        |t        «      r|j                  d|dœ«       n�t        |t        «      r|j                  |«       n{t        |t
        «      r`g }|D ]S  }t        |t        «      r|j                  d|dœ«       Œ(t        |t        «      r|j                  |«       ŒJt        d«      ‚ ||z  }nt        d«      ‚|j                  ||dœ«       Œþ |S )NrÒ   rv   rw   )rÆ   rw   z:`content` can only contain strings or openai content dictszContent must be a stringrÓ   )rQ   r˜   r‚   rJ   r°   r¯   rR   )rX   rÕ   rs   rÒ   rv   rÖ   Únew_content_itemsr×   s           rD   rÔ   rÔ   ¥  s  € Ø€Làò DˆØ�{‰{˜6Ó"ˆØ—+‘+˜iÓ(ˆàˆä�gœsÔ#Ø×Ñ¨¸Ñ@ÕAä˜¤Ô&Ø×Ñ˜wÕ'ä˜¤Ô&Ø "ÐØ 'ò b�Ü˜l¬CÔ0Ø%×,Ñ,°fÀlÑ-SÕTÜ ¬dÔ3Ø%×,Ñ,¨\Õ:ä#Ð$`ÓaÐaðbð Ð,Ñ,‰KäÐ6Ó7Ð7à×Ñ T°kÑBÕCð5Dð8 ÐrF   c                 ó˜   — d}| D ]B  }|d   }|D ]6  }|d   }|dk(  r%|d   }|j                  d«      }|t        |«      z  }Œ2|dz  }Œ8 ŒD |S )Nr   rv   rÆ   rw   ú é   )ÚsplitÚlen)rX   Útotalrs   rv   r×   rÆ   rC   Úwordss           rD   r‡   r‡   È  sy   € Ø€Eàò ˆØ% iÑ0ˆà#ò 	ˆLØ Ñ'ˆDØ�vŠ~Ø)¨&Ñ1�ØŸ™ CÓ(�Øœ˜U›Ñ#�Øà�Q‰J‰Eñ	ðð €LrF   )1r�   r„   rÃ   Útypingr   r   r   r›   Ú2litellm.litellm_core_utils.exception_mapping_utilsr   Ú(litellm.litellm_core_utils.logging_utilsr   Ú$litellm.litellm_core_utils.url_utilsr   Ú)litellm.llms.base_llm.chat.transformationr	   r
   Ú&litellm.llms.custom_httpx.http_handlerr   r   r   r   r   Úlitellm.types.llms.openair   Úlitellm.types.utilsr   Úlitellm.utilsr   r   r   Úcommon_utilsr   r   ÚtiktokenÚ*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjr³   r   Ú__annotations__r   r�   rÐ   r¯   r°   rh   rÔ   r‡   r¶   rF   rD   ú<module>rñ      sè   ðÜ Û Û ß ,Ñ ,ã å MÝ IÝ Iß R÷õ õ 7Ý ,ß CÑ Cç /áÛåXà*ÑàÐð "Ð �5Ó !ôgJ�jô gJôT	Ð2ô ðD ¨6Ñ2Ø!°Ñ7Ø#°5Ñ9Ø!°Ñ7ØØñ,Ð ! 5ó ð#¨t°D©zó #ðR°$°t±*ó ðF t¨D¡zô rF   