
    ho6                     t   d Z ddlZddlmZmZ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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e   de de!de de de"dee   de#fdZ$	 	 	 ddee   de de!de de de"dee   de#deee%ejL                  f      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)AnyCallableOptionalUnion)LlmProviders)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               a/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/openai_like/chat/handler.py	make_callr<      s      ~--[['_ !  H $!2!>!>  D 1"
 
&990O1'3355
 +.5	   /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   B   s     ~,,{{'_g  H s"(*>*>XX$-8840
 
&990O1'224$

 :.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	e
   de	e   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	e
   dede	e   dede	eeej$                  f      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	e   dedede	e   de	eeej$                  f      de	eee
f      de	e   de	e   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__p   s    "6"rH   NFr   r   custom_llm_providerr   custom_prompt_dictr%   print_verboser   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_functions   sg     , X"+D!#/	#
 	
 ,/ 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&    . ?mmE3?G>11F	C#[['

40@' )  H %%' $77)#+' 3!
 	
 $$ 	!JJ22

  %% 	V!c;TUU 	C!c3q6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   4 * 
_-@-@t.
 %4$7$7d$K
 66,+ 7 
' '**8T:Ce$((r:
#''T:	M40(.OH%$7$C3LLl3F&GO /?;z@ +>>%U ? 
  
 
 	
 	'+$" 	 	
 $~Z8H%I$!'X77%%'9#1"/%# +$3!#1'#!(;&7 +' 8  , 00%%'9(;#1"/%# +$3!#1'##)!') 1  0 ~$2 "-*V[2Q !%#D)% +&7 +#%!" +&7(; +	  >FK)H(9FK%{{$gDJJt<L  +  H --/ $77)#+' 3!
 	
 ,, )$%JJ$:$: !

  -- )$'1J  ! K)c3q6JJKs$   %7H? ?K5J+K2KK)__name__
__module____qualname__rM   rm   listdictr   r   r   r	   r   boolr   r]   r   floatrf   rg   rp   r
   r   __classcell__)rP   s   @r;   rJ   rJ   o   sq   #" -1>B!)(( ( !	(
 ( !( &(  ( ($ )*%(& $$:;'(( )(* 
+(v 9=+;
;
 ;
 	;

 !;
 &;
 !;
  ;
 )*;
 ;
 SM;
  !;
( %u}} 456);
* +;
, 
-;
V !"&9=AE*. !1y
 y
 	y

 y
 !y
 !y
 &y
  y
 #y
 y
 y
" $#y
$ %u}} 456%y
& {,<<=>'y
( "$)y
* $"
+y
0 1y
rH   rJ   )NF)NFN))__doc__r5   typingr   r   r   r   rf   r1   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      s2    1 1     I P I G 3 E D : 0 ;?%%&%% % 	%
 % %   67% %` ;?59*[!** * 	*
 * *   67* * eE5==012*Zd
N d
rH   