Ë
    uPêjT5  ã                   ó€  — d Z ddlZddlmZ ddlmZmZ ddl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 dd
lmZ ddlmZ ddlmZmZ ddlmZmZ ddlmZm Z  ddl!m"Z" 	 	 ddedz  de#de$de#de#de%dedz  de&fd„Z'	 	 	 d dedz  de#de$de#de#de%dedz  de&de(ejR                  z  dz  fd„Z* G d„ de«      Z+y)!zh
OpenAI-like chat completion handler

For handling OpenAI-like chat completions, like IBM WatsonX, etc.
é    N)ÚCallable)ÚAnyÚFinal)ÚLlmProviders)ÚLogging)ÚMockResponseIterator)ÚAsyncHTTPHandlerÚHTTPHandler)ÚModelResponseIterator)ÚOpenAIGPTConfig)ÚOpenAIConfig)ÚCustomStreamingDecoderÚModelResponse)ÚCustomStreamWrapperÚProviderConfigManageré   )ÚOpenAILikeBaseÚOpenAILikeErroré   )ÚOpenAILikeChatConfigÚclientÚapi_baseÚheadersÚdataÚmodelÚmessagesÚstreaming_decoderÚfake_streamc	              ƒ   ón  K  — | €t         j                  } | j                  |||| ¬«      ƒ d {  –—† }	|�"|j                  |	j                  d¬«      «      }
nC|r&t	        d
i |	j                  «       ¤Ž}t        |¬«      }
nt        |	j                  «       d¬«      }
|j                  |d|
d|i¬	«       |
S 7 Œ„­w)N)r   r   Ústreamé   ©Ú
chunk_size©Úmodel_responseF©Ústreaming_responseÚsync_streamÚ Úcomplete_input_dict©ÚinputÚapi_keyÚoriginal_responseÚadditional_args© )
ÚlitellmÚmodule_level_aclientÚpostÚaiter_bytesr   Újsonr   r   Úaiter_linesÚ	post_call)r   r   r   r   r   r   Úlogging_objr   r   ÚresponseÚcompletion_streamr%   s               új/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/openai_like/chat/handler.pyÚ	make_callr<      sÅ   è ø€ ð €~Ü×-Ñ-ˆà"ŸK™K¨¸'ÈÐYdÐUd˜KÓe×e€HàÐ$Ø!2×!>Ñ!>¸x×?SÑ?SÐ_cÐ?SÓ?dÓ!eÑÙ	Ü -Ñ @°·±³Ñ @ˆÜ0ÀÔOÑä1ÀX×EYÑEYÓE[ÐinÔoÐà×ÑØØØ+Ø.°Ð5ð	 ô ð Ðð# fús   ‚,B5®B3¯BB5Útimeoutc
                 ó¼  — | €t         j                  } | j                  |||| |	¬«      }
|
j                  dk7  r%t	        |
j                  |
j                  «       ¬«      ‚|�"|j                  |
j                  d¬«      «      }nC|r&t        di |
j                  «       ¤Ž}t        |¬«      }nt        |
j                  «       d¬«      }|j                  |d	d
d|i¬«       |S )N)r   r   r    r=   éÈ   ©Ústatus_codeÚmessager!   r"   r$   Tr&   r)   zfirst stream response receivedr*   r+   r0   )r1   Úmodule_level_clientr3   rA   r   ÚreadÚ
iter_bytesr   r5   r   r   Ú
iter_linesr7   )r   r   r   r   r   r   r8   r   r   r=   r9   r:   r%   s                r;   Úmake_sync_callrG   >   sã   € ð €~Ü×,Ñ,ˆà—k‘k (°GÀ$ÐS^ÈÐho�kÓp€Hà×Ñ˜sÒ"Ü¨(×*>Ñ*>ÈÏÉËÔXÐXàÐ$Ø-×8Ñ8¸×9LÑ9LÐX\Ð9LÓ9]Ó^ÑÙ	Ü -Ñ @°·±³Ñ @ˆÜ0ÀÔOÑä1ÀX×EXÑEXÓEZÐhlÔmÐð ×ÑØØØ:Ø.°Ð5ð	 ô ð Ðó    c            #       ó”  ‡ — e Zd Zˆ fd„Zdddi dddfdededededed	ed
ede	dede
dz  dedz  dedefd„Zddi ddfdedededed	eded
ede
dz  dededz  dedeej"                  z  dz  dedefd„Zdi ddddddddœ	dededededed	ed
ededz  de	dedededz  deej"                  z  dz  dee
z  dz  dedz  dedz  def"d„Zˆ xZS )ÚOpenAILikeChatHandlerc                 ó$   •— t        ‰| �  di |¤Ž y )Nr0   )ÚsuperÚ__init__)ÚselfÚkwargsÚ	__class__s     €r;   rM   zOpenAILikeChatHandler.__init__f   s   ø€ Ü‰ÑÑ"˜6Ó"rH   NFr   r   Úcustom_llm_providerr   Úcustom_prompt_dictr%   Úprint_verboser8   r   r   r   r   Úreturnc           
   ƒ   ó–   K  — d|d<   t        |||t        j                  |«      |||
|¬«      ƒ d {  –—† }t        ||||
¬«      }|S 7 Œ­w)NTr    )r   r   r   r   r   r   r8   r   ©r:   r   rQ   r8   )r<   r5   Údumpsr   )rN   r   r   rQ   r   rR   r%   rS   Úencodingr-   r8   r    r   Úoptional_paramsÚlitellm_paramsÚ	logger_fnr   r   r   r   r:   Ústreamwrappers                         r;   Úacompletion_stream_functionz1OpenAILikeChatHandler.acompletion_stream_functioni   sg   è ø€ ð, ˆˆX‰Ü)2ØØØÜ—‘˜DÓ!ØØØ#Ø/ô	*
÷ 	$
Ðô  3Ø/ØØ 3Ø#ô	 
ˆð Ðð#	$
ús   ‚/A	±A²A	Ú
base_modelrY   r=   Ú	json_modec              ƒ   óN  K  — |€t        j                  dd¬«      }|€t        j                  }	 |j	                  ||t        j                  |«      |¬«      ƒ d {  –—† }|j                  «        t!        j"                  |||||||
||||	|||¬	«      S 7 Œ7# t         j                  $ r:}t        |j                  j                  |j                  j                  ¬«      ‚d }~wt         j                  $ r t        dd¬«      ‚t        $ r}t        dt        |«      ¬«      ‚d }~ww xY w­w)
Ng     À‚@g      @)r=   Úconnect)r   r   r=   r@   é˜  úTimeout error occurred.éô  ©r   r9   r%   r    r8   rY   r-   r   r   rS   rX   r_   rQ   r^   )ÚhttpxÚTimeoutr1   r2   r3   r5   rW   Úraise_for_statusÚHTTPStatusErrorr   r9   rA   ÚtextÚTimeoutExceptionÚ	ExceptionÚstrr   Ú_transform_response)rN   r   r   r   rR   r%   rQ   rS   r   rX   r-   r8   r    r   r^   rY   rZ   r[   r   r=   r_   r9   Úes                          r;   Úacompletion_functionz*OpenAILikeChatHandler.acompletion_function“   s   è ø€ ð. ˆ?Ü—m‘m¨E¸3Ô?ˆGàˆ>Ü×1Ñ1ˆFð	CØ$*§K¡K°À'ÔPT×PZÑPZÐ[_ÓP`Ðjq KÓ$r×rˆHØ×%Ñ%Ô'ô $×7Ñ7ØØØ)ØØ#Ø+ØØØØ'ØØØ 3Ø!ô
ð 	
ð sùä×$Ñ$ò 	Ü!ØŸJ™J×2Ñ2ØŸ
™
Ÿ™ôð ûô ×%Ñ%ò 	VÜ!¨cÐ;TÔUÐUÜò 	CÜ!¨c¼3¸q»6ÔBÐBûð	CüsF   ‚,D%¯+B ÁBÁB Á/#D%ÂB ÂD"Â'5CÃ+D"ÄDÄD"Ä"D%)	ÚacompletionrZ   r[   r   r=   r   Úcustom_endpointr   r   r-   rZ   r   rr   c                ó   — |xs |j                  dd «      }|j                  dd «      }| j                  ||	d||¬«      \  }}|j                  dd «      xs d}|j                  di «      }|j                  dd «      }|j                  d	d «       |s||d<   |�U|�St        j                  |t	        |«      ¬
«      }t        |t        «      st        |t        «      r|j                  ||¬«      }||dœ|¥|¥}|
j                  ||	|||dœ¬«       |du rf|�t        |t        «      sd }|du r)||d<   | j                  |||||||||	|
|||||||||¬«      S | j                  ||||||||||	|
|||||||||¬«      S |du rKt        |�t        |t        «      r|nd ||t        j                   |«      |||
|||¬«
      }t#        ||||
¬«      S |�t        |t        «      st        |¬«      }	 |j%                  ||t        j                   |«      ¬«      }|j'                  «        t;        j<                  |||||
||	|||||||¬«      S # t(        j*                  $ r:}t-        |j.                  j0                  |j.                  j2                  ¬«      ‚d }~wt(        j4                  $ r t-        dd¬«      ‚t6        $ r}t-        dt9        |«      ¬«      ‚d }~ww xY w)Nrr   r^   Úchat_completions)r   r-   Úendpoint_typerr   r   r    FÚ
extra_bodyr_   Úmax_retries)r   Úprovider)r   r   )r   r   )r*   r   r   )r,   r-   r/   T)r   r   r   r   rR   r%   rS   rX   r-   r8   rY   r    rZ   r[   r   r   rQ   r   r   )r   r   r   r   rR   rQ   r%   rS   rX   r-   r8   rY   r    rZ   r[   r   r=   r^   r   r_   )
r   r   r   r   r   r   r8   r   r   r=   rV   )r=   )Úurlr   r   r@   rb   rc   rd   re   )ÚpopÚ_validate_environmentr   Úget_provider_chat_configr   Ú
isinstancer   r   Ú_transform_messagesÚpre_callr	   r]   rp   rG   r
   r5   rW   r   r3   rh   rf   ri   r   r9   rA   rj   rk   rl   rm   r   rn   )rN   r   r   r   rQ   rR   r%   rS   rX   r-   r8   rY   rq   rZ   r[   r   r=   r   rr   r   r   r^   r    rv   r_   Úprovider_configr   r:   r9   ro   s                                 r;   Ú
completionz OpenAILikeChatHandler.completionÎ   s’  € ð2 *ÒY¨_×-@Ñ-@ÐARÐTXÓ-YˆØ(7×(;Ñ(;¸LÈ$Ó(Oˆ
Ø ×6Ñ6ØØØ,Ø+Øð 7ó 
Ñˆ�'ð .×1Ñ1°(¸DÓAÒJÀUˆØ+×/Ñ/°¸bÓAˆ
Ø*×.Ñ.¨{¸DÓAˆ	Ø×Ñ˜M¨4Ô0ÙØ(.ˆO˜HÑ%àÐÐ$7Ð$CÜ%:×%SÑ%SØ¤lÐ3FÓ&Gô&ˆOô ˜/¬?Ô;¼zÈ/Ô[gÔ?hØ*×>Ñ>ÈÐX]Ð>Ó^�ð Ø ñ
ð ð
ð ð	
ˆð 	×ÑØØà'+Ø$Ø"ñð 	ô 	
ð ˜$ÑØˆ~¤Z°Ô8HÔ%IØ�à˜$‘à!'��X‘Ø×7Ñ7ØØ%ØØ%Ø'9Ø#1Ø"/Ø%Ø#Ø +Ø$3Ø!Ø#1Ø'Ø#Ø!Ø(;Ø&7Ø +ð' 8ó ð ð, ×0Ñ0ØØ%ØØ%Ø'9Ø(;Ø#1Ø"/Ø%Ø#Ø +Ø$3Ø!Ø#1Ø'Ø#Ø#Ø)Ø!Ø'ð) 1ó ð ð0 ˜‰~Ü+9Ø&,Ð&8¼ZÈÔP[Ô=\™FÐbfØ%Ø#ÜŸ™ DÓ)ØØ%Ø +Ø&7Ø +Ø#ô,Ð!ô +Ø&7ØØ(;Ø +ô	ð ð �>¬°F¼KÔ)HÜ(°Ô9�FðKØ&,§k¡k°hÈÔVZ×V`ÑV`ÐaeÓVf kÓ&g�HØ×-Ñ-Ô/ô $×7Ñ7ØØØ)ØØ#Ø+ØØØØ'ØØØ 3Ø!ô
ð 	
øô ×,Ñ,ò Ü)Ø$%§J¡J×$:Ñ$:Ø !§
¡
§¡ôð ûô ×-Ñ-ò ^Ü)°cÐC\Ô]Ð]Ü ò KÜ)°cÄ3ÀqÃ6ÔJÐJûðKús$   Ç%7H? È?KÉ5JÊ+KÊ2KËK)Ú__name__Ú
__module__Ú__qualname__rM   rm   ÚlistÚdictr   r   ÚLiteLLMLoggingObjr	   r   Úboolr   r]   Úfloatrf   rg   rp   r
   r�   Ú__classcell__)rP   s   @r;   rJ   rJ   e   sr  ø„ ô#ð" ØØØØ*.Ø;?Ø!ñ)(àð(ð ð(ð !ð	(ð
 ð(ð !ð(ð &ð(ð  ð(ð 'ð(ð ð(ð$ ! 4Ñ'ð%(ð& 2°DÑ8ð'(ð( ð)(ð* 
ó+(ðv ØØØ04Øñ+9
àð9
ð ð9
ð ð	9
ð
 !ð9
ð &ð9
ð !ð9
ð  ð9
ð ! 4Ñ'ð9
ð ð9
ð ˜$‘Jð9
ð  ð!9
ð( ˜Ÿ™Ñ&¨Ñ-ð)9
ð* ð+9
ð, 
ó-9
ðR Ø!ØØ#Ø04Ø8<Ø'+àØ!ò/j
ð ðj
ð ð	j
ð
 ðj
ð !ðj
ð !ðj
ð &ðj
ð  ðj
ð �t‘ðj
ð 'ðj
ð ðj
ð ðj
ð" ˜‘ð#j
ð$ ˜Ÿ™Ñ&¨Ñ-ð%j
ð& Ð.Ñ.°Ñ5ð'j
ð(  ™ð)j
ð* 2Ø
ñð+j
ð. ÷/j
rH   rJ   )NF)NFN),Ú__doc__r5   Úcollections.abcr   Útypingr   r   rf   r1   r   Ú*litellm.litellm_core_utils.litellm_loggingr   r‡   Ú(litellm.llms.bedrock.chat.invoke_handlerr   Ú&litellm.llms.custom_httpx.http_handlerr	   r
   Ú'litellm.llms.databricks.streaming_utilsr   Ú+litellm.llms.openai.chat.gpt_transformationr   Úlitellm.llms.openai.openair   Úlitellm.types.utilsr   r   Úlitellm.utilsr   r   Úcommon_utilsr   r   Útransformationr   rm   r†   r…   rˆ   r<   r‰   rg   rG   rJ   r0   rH   r;   ú<module>r˜      s-  ðñó Ý $ß ã ã Ý  Ý SÝ Iß PÝ IÝ GÝ 3ß Eß Dç :Ý 0ð 8<ØñØ˜tÑ#ðàðð ðð ð	ð
 ðð ðð .°Ñ4ðð óðT 8<ØØ,0ñ$Ø˜$Ñð$àð$ð ð$ð ð	$ð
 ð$ð ð$ð .°Ñ4ð$ð ð$ð �U—]‘]Ñ" TÑ)ó$ôNS
˜Nõ S
rH   