
    ho+                     .   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mZmZmZ d dlmZ d dlmZmZ ddlmZ d	d
lmZ  e       ZdedefdZdedefdZi ddi fdedededededededeeef   fdZdededee   dedededeeef   fdZy)    N)CallableListUnion)REPLICATE_POLLING_DELAY_SECONDS)AsyncHTTPHandlerHTTPHandler_get_httpx_clientget_async_httpx_client)AllMessageValues)CustomStreamWrapperModelResponse   )ReplicateError   )ReplicateConfigheadershttp_clientc              #   v  K   d}d}d}|dvrt        j                  t                |d|         |j                  | |      }|j                  dk(  r|j                         }	|	d   }d|	v r7	 dj                  |	d         }|t        |      d  }
 |d|
        |
|d |}|	d   }|dk(  rN|	j                  dd      }t        dd| |j                  
       |d|j                   |j                          |dvry y # t        $ r+ t        dd	j                  |	d         |j                  
      w xY wwN )	succeededfailedcanceledzreplicate: polling endpoint: )r      statusoutputi  z Unable to parse response. Got={}status_codemessager   zNew chunk: )r   r   r   errori  zError: z8Replicate: Failed to fetch prediction status and output.)timesleepr   getr   jsonjoin	Exceptionr   formatr   lentextprediction_url	api_tokenprint_verboser   r   previous_outputoutput_stringr   responseresponse_data
new_outputreplicate_errors               _/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/replicate/chat/handler.py$handle_prediction_response_streamingr5      s     OMF"EE

+	
 	5n5EFG??>7?C3&$MMOM"8,F=(	$&GGM(,C$DM +3+?+AB
J<89!+v>>"/"8,F!"/"3"3GR"@$ #%o%67$,,  J8K_K_J`aianan`opE "EE ! ($' B I I)(3! !) 0 0 s%   A*D9-D A>D9 D94D66D9c                  K   d}d}d}|dvrt        j                  t               d {     |d|         |j                  | |       d {   }|j                  dk(  r|j                         }	|	d   }d|	v r8	 dj                  |	d         }|t        |      d  }
 |d|
        |
|d |}|	d   }|dk(  rN|	j                  dd      }t        dd| |j                  
       |d|j                   |j                          |dvry y 7 7 # t        $ r+ t        dd	j                  |	d         |j                  
      w xY wwr   )asyncior"   r   r#   r   r$   r%   r&   r   r'   r   r(   r)   r*   s               r4   *async_handle_prediction_response_streamingr8   G   s     OMF"EEmm+
 	
 	
 	5n5EFG$II3&$MMOM"8,F=(	$&GGM(,C$DM +3+?+AB
J<89!+v>>"/"8,F!"/"3"3GR"@$ #%o%67$,,  J8K_K_J`aianan`opE "EE	
 J ! ($' B I I)(3! !) 0 0 s@   (ED%ED,E>D A?EEE4EEmodelmessagesapi_basemodel_responser-   optional_paramslitellm_paramsreturnc                    t         j                  ||| |||      }t         j                  |       }t         j                  | ||||      }||du rt	        || |	||||||||||      S t        t        j                               |_        t         j                  ||| ||      }t        ddi      }|j                  ||t        j                  |      	      }t         j                  |      }d
|v r.|d
   du r' |d       t        |||||      }t        || |d      S t!        t"        j$                        D ]  }t        j&                  t"        j(                  d|z  z          |j+                  ||      }|j,                  dk(  r#|j                         j+                  d      dk(  rqt#        j.                         j1                  | |||||||||	
      c S  t3        ddd       )N)api_keyr   r9   r:   r=   r>   )r9   r:   r=   r>   r   T)r<   r9   encodingr:   r=   r>   
version_id
input_datarA   r;   logging_objr-   r   r;   rA   r9   r=   r>   timeout     @)paramsurlr   datastreamzstreaming requestr   r   	replicaterE   custom_llm_providerr   rK   r   r   r   
processing
r9   raw_responser<   rE   rA   request_datar:   r=   r>   rB     9No response received from Replicate API after max retriesr   )replicate_configvalidate_environmentmodel_to_version_idtransform_requestasync_completionintr!   createdget_complete_urlr	   postr$   dumpsget_prediction_urlr5   r   rangelitellm!DEFAULT_REPLICATE_POLLING_RETRIESr"   'DEFAULT_REPLICATE_POLLING_DELAY_SECONDSr#   r   r   transform_responser   )r9   r:   r;   r<   r-   r=   r>   rE   rA   rB   custom_prompt_dict	logger_fnacompletionr   rC   rD   r+   httpx_clientr0   	_responseretrys                        r4   
completionro   z   sJ     33'% 4 G "55e<J!33'% 4 J ;$#6)+)!!#'
 	
  !		N &66'% 7 N %5!L   ZZ
# ! H &88BN ?"x'@D'H)*8$
	 #9ebmnn7DDEEJJ??!e)K $''NG'LH$$+MMO''1\A**,??%-''! /-! @   F. K     c                 &  K   t         j                  |	||||      }t        t        j                  j
                  ddi      }|j                  ||t        j                  |             d {   }t         j                  |      }d|v r&|d   du rt        |||||      }t        |||
d	
      S t        t        j                        D ]  }t        j                  t        j                   d|z  z          d {    |j#                  ||       d {   }|j$                  dk(  r#|j                         j#                  d      dk(  rt        j&                         j)                  ||| |
||||||
      c S  t+        ddd       7 7 7 yw)NrF   rG   rH   )llm_providerrI   rJ   rM   TrN   rO   rP   r   rR   r   r   rS   rT   rW   rX   r   )rY   r`   r
   re   LlmProviders	REPLICATEra   r$   rb   rc   r8   r   rd   rf   r7   r"   rg   r#   r   r   rh   r   )r<   r9   r:   rB   r=   r>   rC   rD   rA   r;   rE   r-   r   r+   async_handlerr0   rm   rn   s                     r4   r]   r]      s     &66'% 7 N +))335!M #''G$**Z2H (  H &88BN?"x'@D'H>%
	 #9ebmnnw@@Amm;;a%iG
 	
 	
 '**~w*OO  C'##H-=&&(;;!)##+) < 
 	
 B. K M 	
 Ps8   A,F.F
/BF:F;FFA5FFF) r7   r$   r!   typingr   r   r   re   litellm.constantsr   &litellm.llms.custom_httpx.http_handlerr   r   r	   r
   litellm.types.llms.openair   litellm.utilsr   r   common_utilsr   transformationr   rY   dictr5   r8   strlistro   r]    rp   r4   <module>r      s?      ( (  =  7 < ) +"$ +7;+JU+^/ 	/
 "/| rrr r "	r
 r r r =--.rjD!DD #$D
 D D D =--.Drp   