
    g'                     h   U d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZ ddlmZmZ ddlmZ ddlmZmZ ddlmZ  G d	 d
e      Z G d de      Zej<                  dej>                  f   Z 	 	 	 	 d/de!dejD                  e!   dejD                  e!   dejD                  e!   dejD                  e!   dejF                  e!ejH                  e    f   fdZ% ejL                  de!e!ejN                  d   d      Z( ejL                  de!ejN                  d   e!d      Z) G d de      Z*eee
edZ+ejF                  e!ej>                  f   e,d<   ee	dZ-ejF                  e!ej>                  f   e,d <   d!ej\                  d"e!dej^                  e0   fd#Z1d!ej\                  defd$Z2d% Z3d&ej>                  fd'Z4	 	 	 	 d/de!dejD                  e!   dejD                  e!   dejD                  e!   dejD                  e!   de fd(Z5d)e!dejD                  e!   d*e!d+e6de!f
d,Z7d-e!fd.Z8y)0    N)URLSyncByteStream
ByteStream   )	GenerateStreamedResponse
GenerationNonStreamedChatResponseEmbedResponseStreamedChatResponseRerankResponseApiMetaApiMetaTokensApiMetaBilledUnits)ClientClientEnvironment)construct_type)
lazy_boto3lazy_botocore)ClientV2c                      e Zd Zdddddddej                  e   dej                  e   dej                  e   dej                  e   dej                  e   dej                  ej                  d	   ej                  d
   f   fdZ	y)	AwsClientNaws_access_keyaws_secret_keyaws_session_token
aws_regiontimeoutr   r   r   r   r   servicebedrock	sagemakerc                    t        j                  | dt        j                  d|dt	        j                   t        |||||      |             y Nzhttps://api.cohere.comzn/ar   r   r   r   r   )event_hooksr   )base_urlenvironmentclient_namer   api_keyhttpx_client)r   __init__r   
PRODUCTIONhttpxget_event_hooksselfr   r   r   r   r   r   s          F/var/www/openai/venv/lib/python3.12/site-packages/cohere/aws_client.pyr*   zAwsClient.__init__   sP     	-)44+##1#1&7)  		
    
__name__
__module____qualname__typingOptionalstrfloatUnionLiteralr*    r1   r0   r   r           48376:/3.2
 #OOC0
 #OOC0	

  &s3
 ,
 __U+
 \\&..";V^^K=X"XY
r1   r   c                      e Zd Zdddddddej                  e   dej                  e   dej                  e   dej                  e   dej                  e   dej                  ej                  d	   ej                  d
   f   fdZ	y)AwsClientV2Nr   r   r   r   r   r   r   r   r    c                    t        j                  | dt        j                  d|dt	        j
                  t        |||||      |             y r"   )r   r*   r   r+   r,   r   r-   r.   s          r0   r*   zAwsClientV2.__init__1   sR     	-)44+##1#1&7)  		
r1   r2   r<   r1   r0   r?   r?   0   r=   r1   r?   .r   r   r   r   r   returnc                 <    t        | ||||      gt               gdS )Nr#   )requestresponse)map_request_to_bedrockmap_response_from_bedrockr#   s        r0   r-   r-   R   s7     #--"3%
 &'
 r1   TextGenerationztext-generation)textis_finished
event_type	StreamEndz
stream-end)rI   rJ   finish_reasonc                   ~    e Zd ZU ej                  e   ed<   dej                  e   fdZdej                  e   fdZy)Streamerlinesc                     || _         y NrO   )r/   rO   s     r0   r*   zStreamer.__init__v   s	    
r1   rA   c                     | j                   S rQ   rR   )r/   s    r0   __iter__zStreamer.__iter__y   s    zzr1   N)	r3   r4   r5   r6   Iteratorbytes__annotations__r*   rT   r<   r1   r0   rN   rN   s   s;    ??5!!fooe4 &//%0 r1   rN   )chatembedgeneratererankresponse_mapping)rX   rZ   stream_response_mappingrD   endpointc              #      K   d}| j                         D ]  }t        j                  ||      }|st        j                  |j                               }d|v sDt        j                  |d         j                  d      }t        j                  |      }d|v st        |   }t        j                  |t        ||            }	t        j                  |	j                               dz   j                  d        y w)Nz{[^\}]*}rV   utf-8rJ   type_object_
)
iter_linesresearchjsonloadsgroupbase64	b64decodedecoder]   r6   castr   dumpsdictencode)
rD   r^   regex_textmatchobjbase64_payloadstreamed_objresponse_typeparseds
             r0   stream_generatorrz      s     E$$&		%'**U[[]+C#~!'!1!1#g,!?!F!Fw!O#zz.9</$;H$EM#[[)7mUa)bdF::fkkm4t;CCGLL 's   .C>'C>A C>A$C>c                     t        | j                  j                  dd            }t        | j                  j                  dd            }t        t	        ||      t        ||            S )Nz X-Amzn-Bedrock-Input-Token-Countz!X-Amzn-Bedrock-Output-Token-Count)input_tokensoutput_tokens)tokensbilled_units)intheadersgetr   r   r   )rD   r}   r~   s      r0   map_token_countsr      sb    x''++,NPRSTL((,,-PRTUVM,mT'\Q^_ r1   c                  2    dt         j                  dd fd} | S )NrD   rA   c                 l   | j                   d   dk(  }| j                  j                  d   }|r6t        t	        j
                  | j                  | j                        |      }nt        |   }t        j                  | j                               }t        |       j                         |d<   t        j                  |t!        ||            }t#        t        j$                  |j                               j'                  d      g      }t)        |      | _        t+        | d      r| `d	| _        d	| _        y )
Nzcontent-typez"application/vnd.amazon.eventstreamr^   )streamstatus_codemetara   r`   _contentF)r   rC   
extensionsrz   r,   Responser   r   r\   rh   ri   readr   rp   r6   rn   r   iterro   rq   rN   hasattrr   is_stream_consumed	is_closed)rD   r   r^   outputrx   response_objcast_objs          r0   _hookz(map_response_from_bedrock.<locals>._hook   s    !!.15YY##..z: %enn$00' F
 -X6M::hmmo6L#3H#=#B#B#DL #);;}#1-:/;$=$>H 4::hmmo6==gFGHF"6* 8Z(!&+#"r1   )r,   r   )r   s    r0   rF   rF      s#    #nn#	#@ Lr1   kwargsc                      | j                         D ci c]  \  }}|	|| }}} t               j                  di |S c c}}w )Nr<   )itemsr   Session)r   kvnon_none_argss       r0   get_boto3_sessionr      sH     '-llnFndaQTnMF:<0-00 Gs
   
AAc                      t        |||      }|j                  |j                         }t               j                  j                  |       dt        j                  dd f fd}|S )N)region_nameaws_access_key_idaws_secret_access_keyr   rC   rA   c                    | j                   j                         }|d= | j                  j                  j	                  d      d   }| j                  j                  j	                  d      d   }t        j                  | j                               }|d   }t        
	|d|v xr |d         }t        |      | _        | j                  j                  | j                   d<   |d	k(  rt        |
      |d<   d|v r|d= d|v r|d= t        j                  |      j                  d      }t        |      | _        || _        t#        t%        |            |d<   t'               j(                  j+                  | j,                  ||| j                               }j/                  |       t1        j2                  |j5                         j                         | _         || j6                  d<   y )N
connection/r|   modelr   )platformr   r   r   hostr[   )versionapi_versionr`   zcontent-length)methodurlr   datar^   )r   copyr   pathsplitrh   ri   r   get_urlr   r   get_api_versionro   rq   r   r   r   r8   lenr   
awsrequest
AWSRequestr   add_authr,   Headerspreparer   )rC   r   r   r^   bodyr   r   new_bodyaws_requestr   r   signers            r0   _event_hookz+map_request_to_bedrock.<locals>._event_hook   s   //&&(L! kk&&,,S1"5;;##))#.r2zz',,.)W!t#6X	
 #h")++"2"2x"1+"FDtXd?W::d#**73#H-#$'H$6 !#o00;;>>	 < 
 	$--(;(;(=(E(EF)1:&r1   )r   r   get_credentialsr   auth	SigV4Authr,   Request)	r   r   r   r   r   sessioncredentialsr   r   s	   `   `   @r0   rE   rE      sr      (,+	G $$J))+K_!!++K*MF*2U]] *2t *2X r1   r   r   r   c                 b    | dk(  r|sdnd}d|  d| d| d| S | dk(  r|sd	nd
}d| d| d| S y)Nr   invokezinvoke-with-response-streamzhttps://z	-runtime.z.amazonaws.com/model/r   r    invocationszinvocations-response-streamzhttps://runtime.sagemaker.z.amazonaws.com/endpoints/ r<   )r   r   r   r   r^   s        r0   r   r     sm     9#)8/L(9ZL8MeWTUV^U_``	[	 (.=4Q+J<7PQVPWWXYaXbccr1   r   c                 0    ddd}|j                  | d      S )Nr      )v1v2)r   )r   int_versions     r0   r   r     s"    K
 ??7A&&r1   )NNNN)9rk   rh   rf   r6   r,   r   r   r   r   r   r   r	   r
   r   r   r   r   r   clientr   r   corer   !manually_maintained.lazy_aws_depsr   r   	client_v2r   r   r?   CallableAny	EventHookr8   r7   DictListr-   	TypedDictr;   rG   rK   rN   r\   rW   r]   r   rU   rV   rz   r   rF   r   rE   boolr   r   r<   r1   r0   <module>r      s     	   1 1   .   H 
 
>
( 
> OOCO,	
 04/326+/, , "??3/	
 OOC( [[fkk),,-. "!!"2+.sRXR`R`arRs"tvF[-0|@\or  !	~  $	2 &++c6::o.  !(9 S&**_5 Mu~~ M MQVAW M"u~~ ' !F1jj1 04/326+/==,= ,= "??3/	=
 OOC(= =@ OOC( 	
  	 ' 'r1   