
    jB@                         d dl Z d dlmZmZmZ d dl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 ddlmZmZ dd	lmZ d
dlmZmZmZ 	 	 ddee   dededededede	dee   defdZ  G d de      Z!y)    N)AnyOptionalUnion)Logging)AsyncHTTPHandlerHTTPHandler_get_httpx_clientget_async_httpx_client)ModelResponse)CustomStreamWrapper   )
BaseAWSLLMCredentials)BedrockError   )AWSEventStreamDecoderMockResponseIterator	make_callclientapi_baseheadersdatamodelmessageslogging_obj	json_modefake_streamc	                    | 
t               } | j                  |||| |      }	|	j                  dk7  r.t        |	j                  t	        |	j                                     |r[t        j                         j                  ||	t        j                         d|i d||t        j                  
      }
t        |
|      }n-t        |      }|j                  |	j                  d	
            }|j                  |ddd|i       |S )N)r   r   streamr      status_codemessageT )
r   responsemodel_responser   r   optional_paramsapi_keyr   r   encoding)r&   r   )r   i   )
chunk_sizezfirst stream response receivedcomplete_input_dict)inputr(   original_responseadditional_args)r	   postr"   r   strreadlitellmAmazonConverseConfig_transform_responser   r)   r   r   
iter_bytes	post_call)r   r   r   r   r   r   r   r   r   r%   r&   completion_streamdecoders                /Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/litellm/llms/bedrock/chat/converse_handler.pymake_sync_callr:      s(    ~"${{  H s" ,,c(--/6J
 	
  ((*>>"002#%% ? 
 	 "6)Y"
 (e4#..x/B/Bd/B/ST :.5	       c                       e Zd Zd fdZdi ddddfdedededed	eee	e
j                  f      d
edededee   dedee   dee   defdZdi ddfdedededed	eee	e
j                  f      ded
ededededee   dee   deeef   fdZ	 	 	 	 ddededee   dededed
eded	eee	e
j                  f      dedee   deeeef      dee   fdZ xZS )BedrockConverseLLMreturnNc                 "    t         |           y )N)super__init__)self	__class__s    r9   rA   zBedrockConverseLLM.__init__S   s    r;   Fr   r   r   r&   timeoutr'   litellm_paramscredentialsr   r   r   r(   c                   K   t        j                         j                  |||	|
|       d {   }t        j                  |      }| j                  ||
j                  d      xs d|||||      }|j                  |d||t        |j                        d       t        ||t        |j                        ||||||	       d {   }t        ||d	|
      }|S 7 7 w)Nr   r   r'   rE   r   aws_region_name	us-west-2rF   rI   extra_headersendpoint_urlr   r   r(   r$   r+   r   r   r,   r(   r.   )	r   r   r   r   r   r   r   r   r   bedrockr7   r   custom_llm_providerr   )r2   r3   _async_transform_requestjsondumpsget_request_headersgetpre_calldictr   r   r   )rB   r   r   r   r&   rD   r)   r   r   r'   rE   rF   	logger_fnr   r   r   r   r(   request_datar   preppedr7   streaming_responses                          r9   async_streamingz"BedrockConverseLLM.async_streamingV   s    ( %99;TT+) U 
 
 zz,'**#*../@AP[!! + 
 	'+$0 	 	
 #,)##
#
 

 1/ )#	
 "!_
<

s"   ,C"CBC"C 	C" C"r   r   c                   K   t        j                         j                  |||	|
|       d {   }t        j                  |      }| j                  ||
j                  d      xs d|||||      }|j                  |d|||j                  d       t        |j                        }|t        |t              sdi }|:t        |t              st        |t              rt        j                  |      }||d<   t!        |t         j"                  j$                  	      }n|}	 |j'                  ||||
       d {   }|j)                          t        j                         j7                  |||t        |t8              r|nd|d|||	|
      S 7 a7 V# t        j*                  $ r<}|j,                  j.                  }t1        ||j,                  j2                        d }~wt        j4                  $ r t1        dd      w xY ww)NrH   rI   rJ   rK   r$   rN   rO   rD   )paramsllm_providerurlr   r   r   r!     Timeout error occurred.F
r   r%   r&   r   r   r(   r   r   r'   r)   )r2   r3   rS   rT   rU   rV   rW   rX   r   rY   
isinstancer   floatinthttpxTimeoutr
   LlmProvidersBEDROCKr/   raise_for_statusHTTPStatusErrorr%   r"   r   textTimeoutExceptionr4   bool)rB   r   r   r   r&   rD   r)   r   r   r'   rE   rF   rZ   r   r   r(   r[   r   r\   _paramsr%   err
error_codes                          r9   async_completionz#BedrockConverseLLM.async_completion   s    $ %99;TT+) U 
 
 zz,'**#*../@AP[!! + 
 	'+$"?? 	 	
 w'>F4D!EG"gu-GS1I#mmG4G%,	"+W-A-A-I-IF F	S#[['	 )  H %%' ++-AA)'565#+ B 
 	
s
X $$ 	R11J:s||?P?PQQ%% 	S38QRR	SsG   ,HFC3H#F ;F<F A HF H'7G$HHcustom_prompt_dictacompletionrL   c                 j   |j                  dd       }|j                  dd       }|j                  dd      }|j                  dd      }|| j                  |      }n| j                  |      }t        j                         j                  |||d      }| j                  |||	      }|j                  d
d       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd        ||d<   | j                  ||||||||||
      } | j                  |||      \  }!}"||du r|s|! d| d}!|" d| d}"n|! d| d}!|" d| d}"ddi}#|ddi|}#|	rXt        |t              rd }|du r"| j                  |||"||||d|||#|
|||| |      S | j                  |||"||||||||#|
|| |      S t        j                         j                  |||||      }$t        j                  |$      }%| j!                  | |||"|%|#|       }&|j#                  |d!|%|"|&j$                  d"#       |t        |t&              rJi }'|
:t        |
t(              st        |
t*              rt-        j.                  |
      }
|
|'d$<   t1        |'      }n|}|G|du rCt3        |t        |t              r|nd |"|&j$                  |%|||||%	      }(t5        |(|d|&      })|)S 	 |j7                  |"|&j$                  |%|'      }*|*j9                          t        j                         jG                  ||*|t        |tH              r|nd|d!|%|||+
      S # t,        j:                  $ r<}+|+j<                  j>                  },tA        |,|+j<                  jB                  (      d }+~+wt,        jD                  $ r tA        d)d*(      w xY w),Nr   model_idr   Fr   )rz   rP   )r   r   r   rR   )r'   r   rz   aws_secret_access_keyaws_access_key_idaws_session_tokenaws_role_nameaws_session_nameaws_profile_nameaws_bedrock_runtime_endpointaws_web_identity_tokenaws_sts_endpointaws_external_idrI   )
r|   r{   r}   rI   r   r   r~   r   r   r   )r   r   rI   Tz/model/z/converse-streamz	/conversezContent-Typezapplication/json)r   r   r   r&   r)   r   r'   r   rE   rZ   r   rD   r   r   r   rF   r(   )r   r   r   r&   r)   r   r'   r   rE   rZ   r   rD   r   rF   r(   rH   rK   r$   rN   rO   rD   )	r   r   r   r   r   r   r   r   r   rQ   rb   r!   rd   re   rf   )%poprW   encode_model_idr2   r3   should_fake_stream_get_aws_region_nameget_credentialsget_runtime_endpointrg   r   r^   rv   _transform_requestrT   rU   rV   rX   r   r   rh   ri   rj   rk   r	   r:   r   r/   rn   ro   r%   r"   r   rp   rq   r4   rr   )-rB   r   r   r   rw   r&   r)   r   r'   rx   rD   rE   rZ   rL   r   r(   r   unencoded_model_idr   r   modelIdrI   r{   r|   r}   r~   r   r   r   r   r   r   rF   rM   proxy_endpoint_urlr   _datar   r\   rs   r7   r]   r%   rt   ru   s-                                                r9   
completionzBedrockConverseLLM.completion   sx   & !$$Xt4,00TB%))-?#''U;	)**4F*GG**E*:G224GG# )	 H 
 33+' 4 
 !0 3 34KT R+//0CTJ+//0CTJ'++OTB*../A4H*../A4H'6':':*D(
$ "1!4!45Mt!T*../A4H)--.?F-t4  		
 $(#7#7/"7/+--'#9-+ $8 $
 ,0+D+D)E+ ,E ,
((
 6T>;*^77);KLL$6#7wwiGW!X*^77)9EL$6#7wwiy!Q "#56$%'9K]KG &+.~++%/#1% +$3#1'##!' + +## ,  ( ((!+-!' /-#' )  ( ,,.AA+)! B 
 zz% **#+'+ + 
 	'+."?? 	 	
 >Z0@AG"gu-GS1I#mmG4G%,	"&w/FF&D. . )j.M +!'#'! "5"3$-'	" &%	S{{&'	 # H %%' ++-AA)'565#+ B 
 	
 $$ 	R11J:s||?P?PQQ%% 	S38QRR	Ss   /O P27P$P2)r>   N)NNNN)__name__
__module____qualname__rA   r0   listr   r   r   rh   rj   rk   rY   r   r   rr   r   r^   LiteLLMLoggingObjectrv   r   r   __classcell__)rC   s   @r9   r=   r=   R   sk     -1!$)!%%C"C" C" 	C"
 &C" %u}} 456C" C" C" !C" )*C"  !C"" D>#C"$ #%C"& 
'C"d -1!%!V
V
 V
 	V

 &V
 %u}} 456V
 *V
 V
 V
 !V
 V
 )*V
  #!V
" 
}11	2#V
J (,AE!%!f
f
 f
 3-	f

 !f
 &f
 *f
 f
 f
 %u}} 456f
 f
  ~f
 /<=>f
  #!f
r;   r=   )FF)"rT   typingr   r   r   rj   r2   *litellm.litellm_core_utils.litellm_loggingr   r   &litellm.llms.custom_httpx.http_handlerr   r   r	   r
   litellm.types.utilsr   litellm.utilsr   base_aws_llmr   r   common_utilsr   invoke_handlerr   r   r   r0   rY   r   rr   r:   r=    r;   r9   <module>r      s     ' '   V  . - 2 ' R R !&9[!99 9 	9
 9 9 &9 ~9 9xG
 G
r;   