
    gu(                     "   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	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)AsyncHTTPHandlerHTTPHandler_get_httpx_clientget_async_httpx_client)AllMessageValues)CustomStreamWrapperModelResponse   )ReplicateError   )ReplicateConfigheadershttp_clientc              #   n  K   d}d}d}|dvrt        j                  d        |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canceledg      ?z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sleep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               X/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/replicate/chat/handler.py$handle_prediction_response_streamingr4      s     OMF"EE

3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A "EE ! ($' B I I)(3! !) 0 0 s%   A&D5)C> =A>D5<D5>4D22D5c                  K   d}d}d}|dvrt        j                  d       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)   s               r3   *async_handle_prediction_response_streamingr7   D   s     OMF"EEmmC   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A "EE I ! ($' 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 ]X  }t        j&                  d       |j)                  ||      }t#        j*                         j-                  | |||||||||	
      c S  t/        ddd       )N)api_keyr   r8   r9   r<   )r8   r9   r<   r=   r   T)r;   r8   encodingr9   r<   r=   
version_id
input_datar@   r:   logging_objr,   r   r:   r8   r<   timeout     @)paramsurlr   datastreamzstreaming requestr   r   	replicaterD   custom_llm_providerr   rJ   r   
r8   raw_responser;   rD   r@   request_datar9   r<   r=   rA     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_urlr4   r   rangelitellmDEFAULT_MAX_RETRIESr!   r"   r   transform_responser   )r8   r9   r:   r;   r,   r<   r=   rD   r@   rA   custom_prompt_dict	logger_fnacompletionr   rB   rC   r*   httpx_clientr/   	_response_s                        r3   
completionrl   u   s     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w223AJJ $''NG'LH**,??%-''! /-! @   4$ 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 ]v  }t        j                  t        j                          d {    |j#                  ||       d {   }t        j$                         j'                  ||| |
||||||
      c S  t)        ddd       7 7 _7 Fw)NrE   rF   rG   )llm_providerrH   rI   rL   TrM   rN   rO   rQ   rR   rU   rV   r   )rW   r^   r	   rc   LlmProviders	REPLICATEr_   r#   r`   ra   r7   r   rb   !DEFAULT_REPLICATE_POLLING_RETRIESr6   r!   'DEFAULT_REPLICATE_POLLING_DELAY_SECONDSr"   r   re   r   )r;   r8   r9   rA   r<   r=   rB   rC   r@   r:   rD   r,   r   r*   async_handlerr/   rj   rk   s                     r3   r[   r[      s~      &66 7 N +))335!M #''G$**Z2H (  H &88BN?"x'@D'H>%
	 #9ebmnn7<<=mm;;
 	
 	
 '**~w*OO&&(;;!)##+) < 
 	
 >$ K C 	
 Ps8   A*E,E-BE2E3EEAEEE)r6   r#   r    typingr   r   r   rc   &litellm.llms.custom_httpx.http_handlerr   r   r   r	   litellm.types.llms.openair
   litellm.utilsr   r   common_utilsr   transformationr   rW   dictr4   r7   strlistrl   r[    rm   r3   <module>r      s4      ( (   7 < ) +"$ )7;)JU)Z- 	-
 "-x hhh h "	h
 h h h =--.hV<!<< #$<
 < < < =--.<rm   