
    i-                     .   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output   Unable to parse response. Got={}status_codemessager   New chunk: r   r   r   error  Error: 8Replicate: 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               t/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/replicate/chat/handler.py$handle_prediction_response_streamingr<      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           
     J  K   d}d}d}|dvrJt        j                  t               d {    |j                  | |       d {   }|j                  dk(  r|j                         }	|	j                  dd      }d|	v xr |	d   d u}
|
rb	 t        |	d   t              rdj                  |	d         }n|	d   d}nt        |	d         }|t        |      d  } |d
|        ||d |}|	j                  dd      }|dk(  rN|	j                  dd      }t        dd| |j                  	       |d|j                   |j                          |dvrIy y 7 /7 # t        $ r8 t        ddj                  |	j                  dd             |j                  	      w xY ww)Nr   r   r   r   r   r   r   r   r    r#   r$   r   r%   r&   r'   r(   )asyncior*   r   r+   r!   r,   
isinstancelistr-   strr.   r   r/   r   r0   r1   )r2   r3   r4   r   r   r5   r6   r   r7   r8   output_presentr9   r:   s                r;   *async_handle_prediction_response_streamingrC   G   s     OMF"EEmm+
 	
 	
 %II3&$MMOM"&&x4F M)QmH.ET.Q  !-"94@(*h0G(H&x08(* ),M(,C(D +3+?+AB
J<89!+v>>"/"&&x4F!"/"3"3GR"@$ #%o%67$,,  J8K_K_J`aianan`opY "EE	
 J$ ! ($' B I I)--h=! !) 0 0 sB   (F#EF#EAF#>E 	BF#F#F#AF  F#modelmessagesapi_basemodel_responser4   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v rpt#        j.                         j1                  | |||||||||	
      c S  t3        ddd       )N)api_keyr   rD   rE   rH   rI   )rD   rE   rH   rI   r   T)rG   rD   encodingrE   rH   rI   
version_id
input_datarL   rF   logging_objr4   r   rF   rL   rD   rH   rI   timeout     @)paramsurlr   datastreamzstreaming requestr   r   	replicaterP   custom_llm_providerr   rV   r   r   r   
processingstarting
rD   raw_responserG   rP   rL   request_datarE   rH   rI   rM     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_urlr<   r   rangelitellm!DEFAULT_REPLICATE_POLLING_RETRIESr*   'DEFAULT_REPLICATE_POLLING_DELAY_SECONDSr+   r!   r   transform_responser   )rD   rE   rF   rG   r4   rH   rI   rP   rL   rM   custom_prompt_dict	logger_fnacompletionr   rN   rO   r2   httpx_clientr7   	_responseretrys                        r;   
completionr|      sQ     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##s*x}}/B/B8/L Q 0 **,??%-''! /-! @   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v rt        j&                         j)                  ||| |
||||||
      c S  t+        ddd       7 7 7 xw)NrQ   rR   rS   )llm_providerrT   rU   rX   TrY   rZ   r[   r   r]   r   r   r^   ra   rd   re   r    )rf   rm   r
   rr   LlmProviders	REPLICATErn   r,   ro   rp   rC   r   rq   rs   r>   r*   rt   r+   r!   r   ru   r   )rG   rD   rE   rM   rH   rI   rN   rO   rL   rF   rP   r4   r   r2   async_handlerr7   rz   r{   s                     r;   rj   rj      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3&8==?+>+>x+H M
 ,
 &&(;;!)##+) < 
 	
 B. K M 	
 Ps8   A,F.F	/BF:F;FFA4FFF) r>   r,   r)   typingr   r   r   rr   litellm.constantsr   &litellm.llms.custom_httpx.http_handlerr   r   r	   r
   litellm.types.llms.openair   litellm.utilsr   r   common_utilsr   transformationr   rf   dictr<   rC   rA   r@   r|   rj    r}   r;   <module>r      s?      ( (  =  7 < ) +"$ +7;+JU+^9 	9
 "9P rrr r "	r
 r r r =--.rjD!DD #$D
 D D D =--.Dr}   