
    ^h                         S SK r S SKJrJrJrJrJrJrJr  S SK	r	S SK
Jr  S SKJr  S SKJrJr  S SKJr  S SKJrJrJrJrJrJrJr  S SKJr  S	S
KJr  \(       a	  S SKJ r!  \!r"O\r" " S S\5      r# " S S\5      r$g)    N)TYPE_CHECKINGAnyAsyncIteratorIteratorListOptionalUnionconvert_content_list_to_str)FakeStreamResponseIterator)
BaseConfigBaseLLMException)AllMessageValues)ChatCompletionToolCallChunkChatCompletionUsageBlockChoicesGenericStreamingChunkMessageModelResponseUsage)token_counter   ClarifaiError)Loggingc                   <  ^  \ rS rSr% SrSr\\   \S'   Sr	\\   \S'   Sr
\\   \S'      S(S\\   S\\   S\\   SS4S jjr\U 4S	 j5       rS
\S\4S jrS\S\S
\S\S\4
S jrS\S\S\4S jrS
\S\4S jrS
\S\\   S\S\S\S\4S jr S)S\S
\S\\   S\S\\   S\4S jjrS\S\S\\\R8                  4   S\4S jr  S*S
\S\R>                  S\ S\!S \S\\   S\S\S!\S\\   S"\\   S\ 4S# jjr" S+S$\\#\   \$\   \ 4   S%\S"\\   S\%4S& jjr&S'r'U =r($ ),ClarifaiConfig!   zE
Reference: https://clarifai.com/meta/Llama-2/models/llama2-70b-chat
N
max_tokenstemperaturetop_kreturnc                     [        5       nUR                  5        H(  u  pVUS:w  d  M  Uc  M  [        U R                  XV5        M*     g )Nself)localsitemssetattr	__class__)r$   r   r    r!   locals_keyvalues          c/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/clarifai/chat/transformation.py__init__ClarifaiConfig.__init__*   s7     (!--/JCf}!23 *    c                     > [         TU ]  5       $ N)super
get_config)clsr(   s    r,   r3   ClarifaiConfig.get_config5   s    w!##r/   modelc                 
    SS/$ Nr    r    )r$   r6   s     r,   get_supported_openai_params*ClarifaiConfig.get_supported_openai_params9   s    
 	
r/   non_default_paramsoptional_paramsdrop_paramsc                 h    UR                  5        H  u  pVUS:X  a  XbS'   M  US:X  d  M  XbS'   M     U$ r8   )r&   )r$   r<   r=   r6   r>   paramr+   s          r,   map_openai_params ClarifaiConfig.map_openai_params?   sA     /446LE%16.,&05-	 7 r/   promptc                     0 nUR                  S5      =n(       a  XCS'   UR                  S5      =n(       a  XSS'   SSSU000/SSU00S.$ )	Nr    r   datatextrawoutput_infoparams)inputsr6   )get)r$   rC   r=   rI   r    r   s         r,   _completions_to_model$ClarifaiConfig._completions_to_modelN   sn    )--m<<;<$/=!(,,\::::#-< % 9:;#h%78
 	
r/   api_basec                 F    UR                  S5      u  p4nU SU SU SU S3$ )N.z/users/z/apps/z/models/z/outputs)split)r$   r6   rN   user_idapp_idmodel_ids         r,   _convert_model_to_url$ClarifaiConfig._convert_model_to_urlY   s4    $)KK$4!77)6&(8TTr/   messageslitellm_paramsheadersc                     SR                  S U 5       5      nU R                  5       nUR                  5        H  u  pX;  d  M  XU'   M     U R                  XcS9n
U
$ )N c              3   8   #    U  H  n[        U5      v   M     g 7fr1   r
   ).0messages     r,   	<genexpr>3ClarifaiConfig.transform_request.<locals>.<genexpr>e   s     Wh75g>>hs   )rC   r=   )joinr3   r&   rL   )r$   r6   rW   r=   rX   rY   rC   configkvrE   s              r,   transform_request ClarifaiConfig.transform_request]   sg     WhWW "LLNDA'%&" # )) * 
 r/   api_keyc                 .    SSS.nU(       a  SU 3US'   U$ )Nzapplication/json)acceptzcontent-typezBearer Authorizationr9   )r$   rY   r6   rW   r=   rg   s         r,   validate_environment#ClarifaiConfig.validate_environments   s,     ).

 )0	':GO$r/   error_messagestatus_codec                     [        XS9$ )Nr^   rn   r   )r$   rm   rn   rY   s       r,   get_error_classClarifaiConfig.get_error_class   s     ]LLr/   raw_responsemodel_responselogging_objrequest_dataencoding	json_modec           
         UR                  UU
UR                  SU0S9   UR                  5       n / n[        US   5       HY  u  nn[        US   S   S   5      S	:  a  [        US   S   S   S
9nO	[        S S
9n[        SUS-   US9nUR                  U5        M[     Xl        [        XS9n[        U	R!                  US   S	   S   R#                  S5      5      5      nXl        ['        US[)        UUUU-   S95        U$ ! [        R                   a"  n[        [        U5      UR                  S9eS nAf[         a  n[        [        U5      SS9eS nAff = f! [         a  n[        [        U5      SS9eS nAff = f)Ncomplete_input_dict)inputrg   original_responseadditional_argsrp   i  outputsrE   rF   rG   r   )contentstop   )finish_reasonindexr^   )r6   rW   choicesr^   r   usage)prompt_tokenscompletion_tokenstotal_tokens)	post_callrF   jsonhttpxHTTPStatusErrorr   strrn   	Exception	enumeratelenr   r   appendr   r   encoderK   r6   r'   r   )r$   r6   rs   rt   ru   rv   rW   r=   rX   rw   rg   rx   completion_responseechoices_listidxitemmessage_obj
choice_objr   r   s                        r,   transform_response!ClarifaiConfig.transform_response   s    	*//2LA	 	 	
	"."3"3"5	L&':9'EF	TtF|F+E23a7")$v,v2Fu2M"NK")$"7K$"(''

 ##J/ G &2" &EEOON95a8CGG	RS
  %+"3*->>	
 _ $$ 	A(44   	A 	*  	A 	s;   D  A3E  ED11E>EE
E;#E66E;streaming_responsesync_streamc                     [        UUS9$ N)rt   rx   )ClarifaiModelResponseIterator)r$   r   r   rx   s       r,   get_model_response_iterator*ClarifaiConfig.get_model_response_iterator   s     --
 	
r/   r9   )NNNr1   )NNF))__name__
__module____qualname____firstlineno____doc__r   r   int__annotations__r    r!   r-   classmethodr3   r   listr:   dictboolrA   rL   rU   r   r   re   rk   r	   r   Headersr   rq   Responser   LoggingClassr   r   r   r   r   __static_attributes____classcell__r(   s   @r,   r   r   !   s    !%J$!%K#%E8C= %)%)#		4SM	4 c]	4 }		4
 
	4 $ $
 
 
   	
  
	
C 	
$ 	
4 	
U3 U# U '( 	
   
8 "&  '(	
  # 
"M M/2M=B4CV=WM	M  "&$(FF nnF &	F
 "F F '(F F F F #F D>F 
FX %*		
!(3-s1C]"RS	
 	
 D>		

 
	
 	
r/   r   c                   j   ^  \ rS rSr S	S\\\   \\   \4   S\	\
   4U 4S jjjrS\S\4S jrSrU =r$ )
r      rt   rx   c                 "   > [         TU ]  UUS9  g r   )r2   r-   )r$   rt   rx   r(   s      r,   r-   &ClarifaiModelResponseIterator.__init__   s    
 	) 	 	
r/   chunkr"   c           
          SnS nSnSnS nS nUR                  SS5      S   R                  SS5      R                  SS5      R                  SS5      nSn[        UUUUUUUS9$ ! [        R                   a    [	        S	U 35      ef = f)
N Fr~   r   rE   rF   rG   )rF   tool_useis_finishedr   r   r   provider_specific_fieldsz"Failed to decode JSON from chunk: )rK   r   r   JSONDecodeError
ValueError)	r$   r   rF   r   r   r   r   r   r   s	            r,   chunk_parser*ClarifaiModelResponseIterator.chunk_parser   s    	KD>BHKM8<E'+$ 		)R(+VRVRUB	  E(!'+)A  ## 	KA%IJJ	Ks   A!A$ $#Br9   r   )r   r   r   r   r	   r   r   r   r   r   r   r-   r   r   r   r   r   r   s   @r,   r   r      sZ     %*
hsm]3-?NO
 D>
 
K$ K+@ K Kr/   r   )%r   typingr   r   r   r   r   r   r	   r   8litellm.litellm_core_utils.prompt_templates.common_utilsr   )litellm.llms.base_llm.base_model_iteratorr   )litellm.llms.base_llm.chat.transformationr   r   litellm.types.llms.openair   litellm.types.utilsr   r   r   r   r   r   r   litellm.utilsr   common_utilsr   *litellm.litellm_core_utils.litellm_loggingr   LiteLLMLoggingObjr   r   r   r9   r/   r,   <module>r      sj     U U U  Q R 6   ( (W$LLy
Z y
x'K$> 'Kr/   