Ë
    uPêjî‡  ã                   óê  — U d dl Z d dlmZmZ d dlmZmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZ d dl­ d dlmZmZm Z m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl#m+Z, ddl-m.Z.m/Z/m0Z0m1Z1  edd¬«      Z2ee   e3d<   d dl4m5Z5  e5«       Z6ee3d<    G d„ d«      Z7	 	 	 	 d1dedz  de8de9de8de8de:d ed!e;d"e;dz  d#ejx                  dz  d$e=dz  d%e>e?ej€                  f   fd&„ZA	 	 	 	 d1dedz  de8de9de8d'eBdz  de8de:d ed!e;d"e;dz  d#ejx                  dz  d$e=dz  d%e>e?ej€                  f   fd(„ZC G d)„ d*«      ZD G d+„ d,eD«      ZE G d-„ d.eD«      ZF G d/„ d0«      ZGy)2é    N)ÚAsyncIteratorÚIterator)ÚFinalÚcast)Úverbose_logger)Úuuid)ÚInMemoryCache)ÚRESPONSE_FORMAT_TOOL_NAME)Úmap_finish_reason)ÚLogging)ÚModelResponseIterator)ÚAsyncHTTPHandlerÚHTTPHandlerÚ_get_httpx_clientÚget_async_httpx_client)Ú*)Ú#ChatCompletionRedactedThinkingBlockÚChatCompletionThinkingBlockÚChatCompletionToolCallChunkÚ#ChatCompletionToolCallFunctionChunkÚChatCompletionUsageBlock)ÚChatCompletionMessageToolCallÚChoicesÚDeltaÚModelResponseÚModelResponseStreamÚStreamingChoicesÚUsage)ÚGenericStreamingChunké   )ÚBedrockErrorÚbuild_bedrock_stream_errorÚ!get_bedrock_response_stream_shapeÚget_bedrock_tool_nameé2   iX  )Úmax_size_in_memoryÚdefault_ttlÚbedrock_tool_name_mappings)ÚAmazonConverseConfigÚconverse_configc                   ó(  — e Zd ZU dZdZee   dz  ed<   dZe	dz  ed<   dZ
edz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed	<   dZedz  ed
<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZe	dz  ed<   dZee   dz  ed<   dZe	dz  ed<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddee   dz  de	dz  dedz  dedz  dedz  dedz  d	edz  d
edz  dedz  dedz  dedz  de	dz  dedz  de	dz  ddfd„Zed„ «       Zdee   fd„Zdededefd„Zy)ÚAmazonCohereChatConfigzv
    Reference - https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-cohere-command-r-plus.html
    NÚ	documentsÚsearch_queries_onlyÚpreambleÚ
max_tokensÚtemperatureÚpÚkÚprompt_truncationÚfrequency_penaltyÚpresence_penaltyÚseedÚreturn_promptÚstop_sequencesÚraw_promptingÚreturnc                 ó¤   — t        «       j                  «       }|j                  «       D ]%  \  }}|dk7  sŒ|€Œt        | j                  ||«       Œ' y )NÚself)ÚlocalsÚcopyÚitemsÚsetattrÚ	__class__)r=   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   Úlocals_ÚkeyÚvalues                     úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/bedrock/chat/invoke_handler.pyÚ__init__zAmazonCohereChatConfig.__init__K   sF   € ô"  ›Ÿ™›ˆØ!Ÿ-™-›/ò 	4‰JˆC�Ø�f‹} Ñ!2Ü˜Ÿ™¨¨UÕ3ñ	4ó    c                 óø   — | j                   j                  «       D ��ci c]O  \  }}|j                  d«      s9t        |t        j
                  t        j                  t        t        f«      s|�||“ŒQ c}}S c c}}w )NÚ__)	Ú__dict__r@   Ú
startswithÚ
isinstanceÚtypesÚFunctionTypeÚBuiltinFunctionTypeÚclassmethodÚstaticmethod)Úclsr3   Úvs      rF   Ú
get_configz!AmazonCohereChatConfig.get_configa   st   € ð Ÿ™×*Ñ*Ó,÷
á��1Ø—<‘< Ô%ÜØä×&Ñ&Ü×-Ñ-ÜÜ ð	ôð �ð ˆq‰Dó
ð 	
ùó 
s   žAA6c                 ó
   — g d¢S )N)r0   Úmax_completion_tokensÚstreamÚstopr1   Útop_pr5   r6   r7   rY   ÚtoolsÚtool_choice© ©r=   s    rF   Úget_supported_openai_paramsz2AmazonCohereChatConfig.get_supported_openai_paramss   s   € ò
ð 	
rH   Únon_default_paramsÚoptional_paramsc                 óþ   — |j                  «       D ]i  \  }}|dk(  s|dk(  r||d<   |dk(  r||d<   |dk(  rt        |t        «      r|g}||d<   |dk(  r||d<   |dk(  r||d<   |d	k(  r||d	<   |d
k(  r||d
<   	 ||d<   Œk |S )Nr0   rW   rX   rY   r9   r1   rZ   r2   r5   r6   r7   )r@   rM   Ústr)r=   r`   ra   ÚparamrE   s        rF   Úmap_openai_paramsz(AmazonCohereChatConfig.map_openai_paramsƒ   sÎ   € Ø.×4Ñ4Ó6ò 	0‰LˆE�5Ø˜Ò$¨Ð1HÒ(HØ05� Ñ-Ø˜Ò Ø,1� Ñ)Ø˜ŠÜ˜e¤SÔ)Ø"˜G�EØ49�Ð 0Ñ1Ø˜Ò%Ø16� Ñ.Ø˜ÒØ',� Ñ$ØÐ+Ò+Ø7<�Ð 3Ñ4ØÐ*Ò*Ø6;�Ð 2Ñ3ØØ*/� Ò'ð%	0ð& ÐrH   )NNNNNNNNNNNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r-   ÚlistÚDocumentÚ__annotations__r.   Úboolr/   rc   r0   Úintr1   Úfloatr2   r3   r4   r5   r6   r7   r8   r9   r:   rG   rQ   rU   r_   Údictre   r]   rH   rF   r,   r,   7   s  … ñð (,€Iˆt�H‰~ Ñ$Ó+Ø'+Ð˜ ™Ó+Ø€Hˆc�D‰jÓØ!€J��d‘
Ó!Ø $€K�˜‘Ó$Ø€A€uˆt�|ÓØ€A€uˆt�|ÓØ$(Ð�s˜T‘zÓ(Ø&*Ð�u˜t‘|Ó*Ø%)Ð�e˜d‘lÓ)Ø€Dˆ#�‰*ÓØ!%€M�4˜$‘;Ó%Ø'+€N�D˜‘I Ñ$Ó+Ø!%€M�4˜$‘;Ó%ð ,0Ø+/Ø#Ø!%Ø$(ØØØ(,Ø*.Ø)-ØØ%)Ø%)Ø%)ñ4à˜‘> DÑ(ð4ð " D™[ð4ð ˜‘*ð	4ð
 ˜$‘Jð4ð ˜T‘\ð4ð �4‰<ð4ð �4‰<ð4ð  ™:ð4ð ! 4™<ð4ð   $™,ð4ð �D‰jð4ð ˜d‘{ð4ð ˜d™
ð4ð ˜d‘{ð4ð  
ó!4ð, ñ
ó ð
ð"
¨T°#©Yó 
ð °Dð È4ð ÐTXô rH   r,   ÚclientÚapi_baseÚheadersÚdataÚmodelÚmessagesÚlogging_objÚfake_streamÚ	json_modeÚbedrock_invoke_providerÚstream_chunk_sizer;   c              ƒ   óâ  K  — 	 | €kt        t        j                  j                  |rD|j                  r8|j                  j                  d«      rd|j                  j                  d«      ind ¬«      } | j                  |||| |¬«      ƒ d {  –—† }|j                  dk7  r!t        |j                  |j                  ¬«      ‚|r[t        j                  «       j                  ||t        j                  «       d|i d||t        j                  ¬«
      }t        ||¬	«      }n—|	d
k(  r0t        |d|¬«      }|j!                  |j!                  |
¬«      «      }nb|	dk(  r/t#        |d¬«      }|j!                  |j!                  |
¬«      «      }n.t%        ||¬«      }|j!                  |j!                  |
¬«      «      }|j'                  |ddd|i¬«       ||j(                  fS 7 �ŒN# t*        j,                  $ r<}|j.                  j                  }t        ||j.                  j                  ¬«      ‚d }~wt*        j0                  $ r t        dd¬«      ‚t2        $ r}t        dt5        |«      ¬«      ‚d }~ww xY w­w)NÚ
ssl_verify)Úllm_providerÚparams©rs   rt   rX   rw   éÈ   ©Ústatus_codeÚmessageTÚ ©
ru   ÚresponseÚmodel_responserX   rw   ra   Úapi_keyrt   rv   Úencoding©rˆ   ry   Ú	anthropicF©ru   Úsync_streamry   ©Ú
chunk_sizeÚdeepseek_r1©ru   rŽ   ©ru   ry   úfirst stream response receivedÚcomplete_input_dict©Úinputr‰   Úoriginal_responseÚadditional_argsé˜  úTimeout error occurred.éô  )r   ÚlitellmÚLlmProvidersÚBEDROCKÚlitellm_paramsÚgetÚpostrƒ   r!   Útextr)   Ú_transform_responser   rŠ   ÚMockResponseIteratorÚ"AmazonAnthropicClaudeStreamDecoderÚaiter_bytesÚAmazonDeepSeekR1StreamDecoderÚAWSEventStreamDecoderÚ	post_callrs   ÚhttpxÚHTTPStatusErrorr‡   ÚTimeoutExceptionÚ	Exceptionrc   )rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r‡   rˆ   Úcompletion_streamÚdecoderÚerrÚ
error_codeÚes                     rF   Ú	make_callr´   š   sr  è ø€ ðD<Øˆ>Ü+Ü$×1Ñ1×9Ñ9ñ # {×'AÒ'AÀk×F`ÑF`×FdÑFdÐeqÔFrð " ;×#=Ñ#=×#AÑ#AÀ,Ó#OÑPàôˆFð !'§¡ØØØØ"�?Ø#ð !,ó !
÷ 
ˆð ×Ñ 3Ò&Ü¨8×+?Ñ+?ÈÏÉÔWÐWáÜ3:×3OÑ3OÓ3Q×3eÑ3eØØ!Ü&×4Ñ4Ó6ØØ'Ø "ØØØ!Ü ×)Ñ)ð 4fó 4ˆNô &:ÈÐclÔ%mÑØ$¨Ò3Ü-OØØ!Ø#ô.ˆGð
 !(× 3Ñ 3°H×4HÑ4HÐTeÐ4HÓ4fÓ gÑØ$¨Ò5Ü3ØØ!ôˆGð !(× 3Ñ 3°H×4HÑ4HÐTeÐ4HÓ4fÓ gÑä+°%À9ÔMˆGØ '× 3Ñ 3°H×4HÑ4HÐTeÐ4HÓ4fÓ gÐð 	×ÑØØØ>Ø2°DÐ9ð	 	ô 	
ð ! (×"2Ñ"2Ð2Ð2ðe
úôf × Ñ ò NØŸL™L×4Ñ4ˆ
Ü z¸3¿<¹<×;LÑ;LÔMÐMûÜ×!Ñ!ò OÜ sÐ4MÔNÐNÜò <Ü s´C¸³FÔ;Ð;ûð<üsH   ‚I/„BG ÂGÂEG ÇI/ÇG ÇI,Ç/7H&È&+I,ÉI'É'I,É,I/Úsigned_json_bodyc                 óš  — 	 | €Rt        |rD|j                  r8|j                  j                  d«      rd|j                  j                  d«      ind ¬«      } | j                  |||�|n|| |¬«      }|j                  dk7  r!t        |j                  |j                  ¬«      ‚|r[t        j                  «       j                  ||t        j                  «       d|i d||t        j                  ¬«
      }t        ||	¬	«      }n—|
d
k(  r0t        |d|	¬«      }|j                  |j                  |¬«      «      }nb|
dk(  r/t        |d¬«      }|j                  |j                  |¬«      «      }n.t!        ||	¬«      }|j                  |j                  |¬«      «      }|j#                  |ddd|i¬«       ||j$                  fS # t&        j(                  $ r<}|j*                  j                  }t        ||j*                  j                  ¬«      ‚d }~wt&        j,                  $ r t        dd¬«      ‚t.        $ r}t        dt1        |«      ¬«      ‚d }~ww xY w)Nr}   )r   r€   r�   r‚   Tr…   r†   r‹   rŒ   r�   r�   r‘   r’   r“   r”   r•   r–   rš   r›   rœ   )r   r    r¡   r¢   rƒ   r!   r£   r�   r)   r¤   r   rŠ   r¥   r¦   Ú
iter_bytesr¨   r©   rª   rs   r«   r¬   r‡   r­   r®   rc   )rq   rr   rs   rt   rµ   ru   rv   rw   rx   ry   rz   r{   r‡   rˆ   r¯   r°   r±   r²   r³   s                      rF   Úmake_sync_callr¸   î   sZ  € ðC<Øˆ>Ü&ñ # {×'AÒ'AÀk×F`ÑF`×FdÑFdÐeqÔFrð " ;×#=Ñ#=×#AÑ#AÀ,Ó#OÑPàô	ˆFð !Ÿ+™+ØØØ%5Ð%AÑ!ÀtØ"�?Ø#ð &ó 
ˆð ×Ñ 3Ò&Ü¨8×+?Ñ+?ÈÏÉÔWÐWáÜ3:×3OÑ3OÓ3Q×3eÑ3eØØ!Ü&×4Ñ4Ó6ØØ'Ø "ØØØ!Ü ×)Ñ)ð 4fó 4ˆNô &:ÈÐclÔ%mÑØ$¨Ò3Ü-OØØ Ø#ô.ˆGð
 !(× 2Ñ 2°8×3FÑ3FÐRcÐ3FÓ3dÓ eÑØ$¨Ò5Ü3ØØ ôˆGð !(× 2Ñ 2°8×3FÑ3FÐRcÐ3FÓ3dÓ eÑä+°%À9ÔMˆGØ '× 2Ñ 2°8×3FÑ3FÐRcÐ3FÓ3dÓ eÐð 	×ÑØØØ>Ø2°DÐ9ð	 	ô 	
ð ! (×"2Ñ"2Ð2Ð2øÜ× Ñ ò NØŸL™L×4Ñ4ˆ
Ü z¸3¿<¹<×;LÑ;LÔMÐMûÜ×!Ñ!ò OÜ sÐ4MÔNÐNÜò <Ü s´C¸³FÔ;Ð;ûð<ús$   ‚F7F: Æ:I
Ç7HÈ+I
È/IÉI
c                   ó’  — e Zd Zddededz  ddfd„Zdefd„Zdededz  fd„Zd	ede	e
ez     dz  fd
„Zdefd„Zdedeedz  ee	e
ez     dz  f   fd„Zdededeeedz  eedz  e	e
ez     dz  f   fd„Zdededz  fd„Zdedefd„Zdedeez  ez  fd„Zdee   deeez  ez     fd„Zdee   deeez  ez     fd„Zdedz  fd„Z y)r©   ru   ry   Nr;   c                 ó˜   — ddl m} || _         |«       | _        g | _        d | _        d | _        || _        d | _        d| _	        d | _
        y )Nr   )ÚEventStreamJSONParserF)Úbotocore.parsersr»   ru   ÚparserÚcontent_blocksÚtool_calls_indexÚresponse_idry   Ú_current_tool_nameÚ_thinking_ranÚ_provider_reasoning_tokens)r=   ru   ry   r»   s       rF   rG   zAWSEventStreamDecoder.__init__C  sM   € Ý:àˆŒ
Ù+Ó-ˆŒØ<>ˆÔØ,0ˆÔØ'+ˆÔØ"ˆŒØ.2ˆÔØ"ˆÔØ6:ˆÕ'rH   c                 ó¾   — d}t        | j                  «      dk(  ryd| j                  d   vry| j                  D ]  }d|v sŒ||d   d   z  }Œ t        |«      dk(  ryy)zN
        Check if the tool call block so far has been an empty string
        r…   r   FÚtoolUser—   T)Úlenr¾   )r=   ÚargsÚblocks      rF   Úcheck_empty_tool_call_argsz0AWSEventStreamDecoder.check_empty_tool_call_argsP  s{   € ð ˆäˆt×"Ñ"Ó# qÒ(Øð ˜T×0Ñ0°Ñ3Ñ3àà×(Ñ(ò 	2ˆEØ˜EÒ!Ø˜˜iÑ(¨Ñ1Ñ1‘ð	2ô ˆt‹9˜Š>ØØrH   Úreasoning_content_blockc                 ó   — d|v r|d   S y )Nr£   r]   )r=   rÊ   s     rF   Úextract_reasoning_content_strz3AWSEventStreamDecoder.extract_reasoning_content_strf  s   € ð Ð,Ñ,Ø*¨6Ñ2Ð2ØrH   Úthinking_blockc                 óÊ   — g }d}d|v rt        d¬«      }|d   |d<   n2d|v rt        d¬«      }|d   |d<   d|d<   nd|v rt        d|d   ¬	«      }|�|j                  |«       |S )
z;
        Translate the thinking blocks to a string
        Nr£   Úthinking)ÚtypeÚ	signaturer…   ÚredactedContentÚredacted_thinking)rÐ   rt   )r   r   Úappend)r=   rÍ   Úthinking_blocks_listÚ_thinking_blocks       rF   Útranslate_thinking_blocksz/AWSEventStreamDecoder.translate_thinking_blocksm  s–   € ð prÐØdhˆà�^Ñ#Ü9¸zÔJˆOØ*8¸Ñ*@ˆO˜JÒ'Ø˜NÑ*Ü9¸zÔJˆOØ+9¸+Ñ+FˆO˜KÑ(Ø*,ˆO˜JÒ'Ø .Ñ0ÜAØ(¨~Ð>OÑ/PôˆOð Ð&Ø ×'Ñ'¨Ô8Ø#Ð#rH   Ú
chunk_datac                 ó¢   — | j                   €Cd|v r"|d   j                  d«      }|rd|› �| _         yydt        j                  «       › �| _         yy)z:Initialize response_id from chunk data if not already set.NÚmessageStartÚconversationIdz	chatcmpl-)rÀ   r¡   r   Úuuid4)r=   rØ   Úconversation_ids      rF   Ú _initialize_converse_response_idz6AWSEventStreamDecoder._initialize_converse_response_id†  s`   € à×ÑÐ#Ø Ñ+Ø)3°NÑ)C×)GÑ)GÐHXÓ)Y�Ù"Ø)2°?Ð2CÐ'D�DÕ$ð #ð &/¬t¯z©z«|¨nÐ#=�Õ ð $rH   Ú	start_objc                 ól  — d}i }d}g | _         |�¡d|v ry|d   �t|d   d   }t        |¬«      }|| _        | j                  du r|t        k(  r|||fS | j
                  €dn| j
                  dz   | _        |d   d   d	|d
dœ| j
                  dœ}n$d|v r |d   �| j                  |d   «      }d|d   i}|||fS )z/Handle 'start' event in converse chunk parsing.NrÅ   Úname)Úresponse_tool_nameTr   é   Ú	toolUseIdÚfunctionr…   ©rá   Ú	arguments©ÚidrÐ   rå   ÚindexÚreasoningContent)r¾   r$   rÁ   ry   r
   r¿   r×   )r=   rß   Útool_useÚprovider_specific_fieldsÚthinking_blocksÚ_response_tool_namerâ   s          rF   Ú_handle_converse_start_eventz2AWSEventStreamDecoder._handle_converse_start_event‘  s  € ð 8<ˆØ)+Ð Øjnˆà ˆÔØÐ Ø˜IÑ%¨)°IÑ*>Ð*Jà-6°yÑ-AÀ&Ñ-IÐ#Ü,AÐUhÔ,iÐ"Ø*<�Ô'ð —>‘> TÑ)Ð.@ÔD]Ò.]Ø#Ð%=¸ÐNÐNà-1×-BÑ-BÐ-J©ÐPT×PeÑPeÐhiÑPi�Ô%à# IÑ.¨{Ñ;Ø&à 2Ø%'ñ!ð "×2Ñ2ñ‘ð # iÑ/°IÐ>PÑ4QÐ4]à"&×"@Ñ"@ÀÐK]ÑA^Ó"_�à&¨	Ð2DÑ(Eð,Ð(ð Ð1°?ÐBÐBrH   Ú	delta_objrê   c                 óÂ  — d}d}i }d}d}| j                   j                  |«       d|v r|d   }nªd|v rS| j                  du r| j                  t        k(  r	|d   d   }n|ddd|d   d   dœ| j
                  �| j
                  n|d	œ}nSd
|v rDd
|d
   i}| j                  |d
   «      }| j                  |d
   «      }|rt        |«      dkD  r|€d}nd|v rd|d   i}|||||fS )z/Handle 'delta' event in converse chunk parsing.r…   Nr£   rÅ   Tr—   rå   ræ   rè   rë   r   ÚcitationsContent)	r¾   rÔ   ry   rÁ   r
   r¿   rÌ   r×   rÆ   )r=   rñ   rê   r£   rì   rí   Úreasoning_contentrî   s           rF   Ú_handle_converse_delta_eventz2AWSEventStreamDecoder._handle_converse_delta_event¾  sT  € ð ˆØ7;ˆØ)+Ð Ø(,ÐØjnˆà×Ñ×"Ñ" 9Ô-Ø�YÑØ˜VÑ$‰DØ˜)Ñ#ð �~‰~ Ñ%¨$×*AÑ*AÔE^Ò*^Ø  Ñ+¨GÑ4‘ð Ø&à $Ø%.¨yÑ%9¸'Ñ%Bñ!ð 8<×7LÑ7LÐ7X˜d×3Ò3Ð^cñ‘ð   9Ñ,à" IÐ.@Ñ$Að(Ð$ð !%× BÑ BÀ9ÐM_ÑC`Ó aÐØ"×<Ñ<¸YÐGYÑ=ZÓ[ˆOÙ¤3 Ó#7¸!Ò#;Ð@QÐ@YØ$&Ñ!Ø 9Ñ,ð # IÐ.@Ñ$Að(Ð$ð ØØ$ØØð
ð 	
rH   c                 óÔ   — d}| j                   du r| j                  t        k(  r	d| _        |S d| _        | j                  «       }|r"dddddœ| j                  �| j                  n|dœ}|S )z>Handle stop/contentBlockIndex event in converse chunk parsing.NTrå   z{}ræ   rè   )ry   rÁ   r
   rÉ   r¿   )r=   rê   rì   Úis_emptys       rF   Ú_handle_converse_stop_eventz1AWSEventStreamDecoder._handle_converse_stop_event÷  s�   € à7;ˆð �>‰>˜TÑ! d×&=Ñ&=ÔAZÒ&ZØ&*ˆDÔ#ØˆOà"&ˆÔØ×9Ñ9Ó;ˆÙàØ"à Ø!%ñð 48×3HÑ3HÐ3T˜$×/Ò/ÐZ_ñˆHð ˆrH   c                 óà  ‡— 	 | j                  ‰«       t        j                  d‰«       d}d }d}d }i }d }d }t        ‰j	                  dd«      «      }	d‰v r$t        di ‰d   ¤Ž}
| j                  |
«      \  }}}nÊd‰v r't        di ‰d   ¤Ž}| j                  ||	«      \  }}}}}nŸd‰v r| j                  |	«      }n‰d‰v rEt        ‰j	                  dd«      «      }t        j                  ‰j	                  d	«      «      | _        n@d
‰v r<t        j                  ‰j	                  d
i «      | j                   | j                  ¬«      }|rd| _        t#        ˆfd„dD «       «      }i }d‰v r‰j	                  d«      }||d<   t%        t'        |dt)        |r|nd |rdnd |r|gnd |r|nd ||¬«      ¬«      g| j*                  | j,                  ||¬«      }|S # t.        $ r}t/        d|› �«      ‚d }~ww xY w)Nz

Raw Chunk: %s

r…   ÚcontentBlockIndexr   ÚstartÚdeltaÚ
stopReasonrY   ÚadditionalModelResponseFieldsÚusage)Úthinking_ranÚprovider_reasoning_tokensTc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w©Nr]   )Ú.0rD   rØ   s     €rF   ú	<genexpr>z>AWSEventStreamDecoder.converse_chunk_parser.<locals>.<genexpr>?  s   øè ø€ ò 1Ø&)��zÔ!ñ1ùs   ƒ)rû   rü   rú   rý   Útracer  Ú	assistant)ÚcontentÚroleÚ
tool_callsrí   rî   rô   )Úfinish_reasonrê   rü   )Úchoicesré   ru   rÿ   rí   zReceived streaming error - r]   )rÞ   r   Údebugrn   r¡   ÚContentBlockStartEventrð   ÚContentBlockDeltaEventrõ   rø   r   r)   Ú&thinking_tokens_from_additional_fieldsrÃ   r*   Útransform_usagerÂ   Úanyr   r   r   rÀ   ru   r®   )r=   rØ   r£   rì   r  rÿ   rí   rô   rî   Úcontent_block_indexrß   rñ   Úcarries_message_contentÚ'model_response_provider_specific_fieldsr  r‡   r³   s    `               rF   Úconverse_chunk_parserz+AWSEventStreamDecoder.converse_chunk_parser  sQ  ø€ ðN	?ð ×1Ñ1°*Ô=ä× Ñ Ð!8¸*ÔEØˆDØ;?ˆHØˆMØ"&ˆEØ-/Ð$Ø,0ÐØnrˆOä),¨Z¯^©^Ð<OÐQRÓ-SÓ)TÐØ˜*Ñ$Ü#9Ñ#P¸JÀwÑ<OÑ#P�	ð
 ×5Ñ5°iÓ@ñ	ØØ,Ù#à˜JÑ&Ü#9Ñ#P¸JÀwÑ<OÑ#P�	ð ×5Ñ5°iÐATÓUñØØØ,Ø%Ù#à$¨
Ñ2Ø×;Ñ;Ð<OÓP‘Ø Ñ+Ü 1°*·.±.ÀÈvÓ2VÓ W�Ü2F×2mÑ2mØ—N‘NÐ#BÓCó3�Õ/ð ˜JÑ&Ü'×7Ñ7Ø—N‘N 7¨BÓ/Ø!%×!3Ñ!3Ø.2×.MÑ.Mð 8ó �ñ
 Ø%)�Ô"ä-0ó 1Ø-kô1ó .Ð#ð >@Ð3Ø˜*Ñ$Ø)Ÿ~™~¨gÓ6�ØCHÐ7¸Ñ@Ü1ä$Ø&3ØÜ#Ù,C¡DÈÙ0G¡ÈTÙ5=¨¡zÀ4ÙRjÑ6NÐptØ,;Ø.?ôôðð ×#Ñ#Ø—j‘jØØ)Pô%ˆHð* ˆOøÜò 	?ÜÐ9¸!¸Ð=Ó>Ð>ûð	?ús   ƒGG Ç	G-ÇG(Ç(G-c                 ó.  — d}d}d}d|v r|d   }nõd| j                   v r|d   d   d   d   }d	}d
}nÔd|v sd|v sd|v sd|v r| j                  |¬«      S d|v r$|j                  di «      }| j                  |¬«      S d|v rMt        |d   «      dk(  r#|d   d   j                  dd «      �|d   d   d   }|j                  dd «      }|�>d	}|}n9d|v r|d   }n/d|v r|d   }n%d|v r|d   }d	}n|j                  dd «      rd	}|d   }t	        |||d dd ¬«      S )Nr…   FÚ
outputTextÚai21Úcompletionsr   rt   r£   TrY   rú   rý   Úmetricsr  ©rØ   ÚcontentBlockDeltaÚoutputsrã   Ústop_reasonÚ
generationr  ÚcompletionReason)r£   Úis_finishedr  rÿ   rê   rì   )ru   r  r¡   rÆ   ÚGChunk)r=   rØ   r£   r"  r  Ú_chunk_datar  s          rF   Ú_chunk_parserz#AWSEventStreamDecoder._chunk_parser`  sœ  € ØˆØˆØˆØ˜:Ñ%Ø˜lÑ+‰Dà�t—z‘zÑ!Ø˜mÑ,¨QÑ/°Ñ7¸Ñ?ˆDØˆKØ"‰Mð   :Ñ-Ø˜zÑ)Ø˜JÑ&Ø˜*Ñ$à×-Ñ-¸Ð-ÓDÐDà  JÑ.à!+§¡Ð0CÀRÓ!HˆKØ×-Ñ-¸Ð-ÓEÐEà˜*Ñ$Ü�:˜iÑ(Ó)¨QÒ.°:¸iÑ3HÈÑ3K×3OÑ3OÐPVÐX\Ó3]Ð3iØ! )Ñ,¨QÑ/°Ñ7�Ø!+§¡°¸tÓ!DˆKØÐ&Ø"�Ø +‘ð ˜ZÑ'Ø˜lÑ+‰Dà�zÑ!Ø˜fÑ%‰Dà 
Ñ*Ø& Ñ7ˆMØ‰KØ�^‰^Ð.°Ô5ØˆKØ&Ð'9Ñ:ˆMÜØØ#Ø'ØØØô
ð 	
rH   Úiteratorc              #   óÞ   K  — ddl m}  |«       }|D ]W  }|j                  |«       |D ]?  }| j                  |«      }|sŒt        j                  |«      }| j                  |¬«      –— ŒA ŒY y­w)zTGiven an iterator that yields lines, iterate over it & yield every event encounteredr   ©ÚEventStreamBufferr  N©Úbotocore.eventstreamr)  Úadd_dataÚ_parse_message_from_eventÚjsonÚloadsr%  ©r=   r&  r)  Úevent_stream_bufferÚchunkÚeventr„   Ú_datas           rF   r·   z AWSEventStreamDecoder.iter_bytes—  ss   è ø€ å:á%6Ó%8ÐØò 	?ˆEØ×(Ñ(¨Ô/Ø,ò ?�Ø×8Ñ8¸Ó?�Úä ŸJ™J wÓ/�EØ×,Ñ,¸Ð,Ó>Ó>ñ?ñ	?ùs
   ‚<A-¿.A-c                óð   K  — ddl m}  |«       }|2 3 d{  –—† }|j                  |«       |D ]@  }| j                  |«      }|sŒt        j                  |«      }| j                  |¬«      ­–— ŒB Œ`7 Œ[6 y­w)zZGiven an async iterator that yields lines, iterate over it & yield every event encounteredr   r(  Nr  r*  r0  s           rF   r§   z!AWSEventStreamDecoder.aiter_bytes¥  s{   è ø€ å:á%6Ó%8ÐØ#÷ 	?ð 	?�%Ø×(Ñ(¨Ô/Ø,ò ?�Ø×8Ñ8¸Ó?�ÚÜ ŸJ™J wÓ/�EØ×,Ñ,¸Ð,Ó>Ô>ñ	?ð	?ø™8ùs+   ‚A6’A4–A2—A4š*A6Á-A6Á2A4Á4A6c                 ój  — t        «       }|€t        dd¬«      ‚|j                  «       }| j                  j	                  ||«      }|d   dk7  rt        ||«      ‚d|v r3|j                  d«      }|sy |j                  d«      j                  «       S |j                  d«      }|sy |j                  «       S )	Nrœ   zeBedrock event-stream shape could not be loaded from botocore. Ensure botocore is correctly installed.r‚   rƒ   r�   r2  ÚbytesÚbody)r#   r!   Úto_response_dictr½   Úparser"   r¡   Údecode)r=   r3  Úresponse_stream_shapeÚresponse_dictÚparsed_responser2  s         rF   r-  z/AWSEventStreamDecoder._parse_message_from_event²  sÀ   € Ü'HÓ'JÐØ Ð(ÜØð>ôð ð  %×5Ñ5Ó7ˆØ!%§¡×!2Ñ!2°=ÐBWÓ!Xˆà˜Ñ'¨3Ò.Ü,¨]Ð<QÓRÐRØ�oÑ%Ø#×'Ñ'¨Ó0ˆEÙØØ—9‘9˜WÓ%×,Ñ,Ó.Ð.à!×%Ñ% fÓ-ˆEÙØà—<‘<“>Ð!rH   ©F)!rf   rg   rh   rc   rm   rG   rÉ   Ú)BedrockConverseReasoningContentBlockDeltarÌ   rj   r   r   r×   rp   rÞ   r  Útupler   rð   r  rn   rõ   rø   r   r  r#  r%  r   r7  r·   r   r§   r-  r]   rH   rF   r©   r©   B  sÉ  „ ñ;˜cð ;¨d°T©kð ;Àdó ;ð¨Dó ð,Ø'Pðà	ˆt‰óð$ØGð$à	Ð)Ð,OÑOÑ	PÐSWÑ	Wó$ð2	>¸4ó 	>ð+Cà)ð+Cð 
Ø# dÑ*ØØÐ(Ð+NÑNÑOÐRVÑVð	Xñ
ó+CðZ7
à)ð7
ð ð7
ð 
ØØ# dÑ*ØØˆd‰
ØÐ(Ð+NÑNÑOÐRVÑVð		Xñ
ó	7
ðr°ð Ð9TÐW[Ñ9[ó ð0O?°ð O?Ð9Ló O?ðb5
¨ð 5
°Ð:MÑ1MÐPTÑ1Tó 5
ðn? 8¨E¡?ð ?°xÀÐI\Ñ@\Ð_cÑ@cÑ7dó ?ð?¨-¸Ñ*>ð ?À=ÐQWÐZmÑQmÐptÑQtÑCuó ?ð"°#¸±*ô "rH   r©   c            	       óJ   ‡ — e Zd Z	 d	dedededz  ddfˆ fd„Zdedefd„Zˆ xZ	S )
r¦   Nru   rŽ   ry   r;   c                 óL   •— t         ‰| �  |¬«       t        d||¬«      | _        y)zý
        Child class of AWSEventStreamDecoder that handles the streaming response from the Anthropic family of models

        The only difference between AWSEventStreamDecoder and AmazonAnthropicClaudeStreamDecoder is the `chunk_parser` method
        ©ru   N)Ústreaming_responserŽ   ry   )ÚsuperrG   ÚAnthropicModelResponseIteratorÚ!anthropic_model_response_iterator)r=   ru   rŽ   ry   rB   s       €rF   rG   z+AmazonAnthropicClaudeStreamDecoder.__init__Ï  s+   ø€ ô 	‰Ñ˜uÐÔ%Ü1OØ#Ø#Øô2
ˆÕ.rH   rØ   c                 ó:   — | j                   j                  |¬«      S ©N)r2  )rH  Úchunk_parser©r=   rØ   s     rF   r%  z0AmazonAnthropicClaudeStreamDecoder._chunk_parserá  s   € Ø×5Ñ5×BÑBÈÐBÓTÐTrH   r  )
rf   rg   rh   rc   rm   rG   rp   r   r%  Ú__classcell__©rB   s   @rF   r¦   r¦   Î  sN   ø„ ð
 "&ñ	
àð
ð ð
ð ˜$‘;ð	
ð
 
õ
ð$U¨ð UÐ1D÷ UrH   r¦   c                   óH   ‡ — e Zd Zdededdfˆ fd„Zdedeez  ez  fd„Z	ˆ xZ
S )r¨   ru   rŽ   r;   Nc                 óP   •— t         ‰| �  |¬«       ddlm}  |d |¬«      | _        y )NrD  r   )Ú AmazonDeepseekR1ResponseIterator)rE  rŽ   )rF  rG   ÚOlitellm.llms.bedrock.chat.invoke_transformations.amazon_deepseek_transformationrQ  Ú deepseek_model_response_iterator)r=   ru   rŽ   rQ  rB   s       €rF   rG   z&AmazonDeepSeekR1StreamDecoder.__init__æ  s0   ø€ ô
 	‰Ñ˜uÐÔ%õ	
ñ 1QØ#Ø#ô1
ˆÕ-rH   rØ   c                 ó:   — | j                   j                  |¬«      S rJ  )rS  rK  rL  s     rF   r%  z+AmazonDeepSeekR1StreamDecoder._chunk_parserõ  s   € Ø×4Ñ4×AÑAÈ
ÐAÓSÐSrH   )rf   rg   rh   rc   rm   rG   rp   r#  r   r%  rM  rN  s   @rF   r¨   r¨   å  sF   ø„ ð
àð
ð ð
ð 
õ	
ðT¨ð T°Ð:MÑ1MÐPTÑ1T÷ TrH   r¨   c            	       óx   — e Zd Zddedz  fd„Zd„ Zdedee   dz  de	eedz  f   fd„Z
d	edefd
„Zd„ Zd„ Zd„ Zy)r¥   ry   Nc                 ó.   — || _         || _        d| _        y )NF)rˆ   ry   Úis_done)r=   rˆ   ry   s      rF   rG   zMockResponseIterator.__init__ú  s   € Ø,ˆÔØ"ˆŒØˆ�rH   c                 ó   — | S r  r]   r^   s    rF   Ú__iter__zMockResponseIterator.__iter__   ó   € ØˆrH   r£   r
  r;   c                 óÐ   — d}| j                   du r>|�<t        j                  «       j                  |¬«      }|�|j                  xs d}d}||fS |�t        |«      dkD  r|d   }||fS )a+  
        If JSON mode is enabled, convert the tool call to a message.

        Bedrock returns the JSON schema as part of the tool call
        OpenAI returns the JSON schema as part of the content, this handles placing it in the content

        Args:
            text: str
            tool_use: Optional[ChatCompletionToolCallChunk]
        Returns:
            Tuple[str, Optional[ChatCompletionToolCallChunk]]

            text: The text to use in the content
            tool_use: The ChatCompletionToolCallChunk to use in the chunk response
        NT)r
  r…   r   )ry   r�   ÚAnthropicConfigÚ!_convert_tool_response_to_messager  rÆ   )r=   r£   r
  rì   r„   s        rF   Ú_handle_json_mode_chunkz,MockResponseIterator._handle_json_mode_chunk  s‚   € ð$ 8<ˆØ�>‰>˜TÑ! jÐ&<Ü$×4Ñ4Ó6×XÑXÐdnÐXÓoˆGØÐ"Ø—‘Ò,¨"�Ø�ð �Xˆ~Ðð Ð#¬¨J«¸!Ò(;Ø! !‘}ˆHØ�Xˆ~ÐrH   rØ   c                 óB  — 	 t        |d«      }|j                  d   j                  j                  xs d}d }t	        t
        t           d z  t	        t        |j                  d   «      j                  j                  «      }| j                  du r8| j                  ||j                  d   j                  j                  ¬«      \  }}nW|�Ut        |d   j                  dt        |d   j                  j                  |d   j                  j                   ¬«      d¬«      }t#        ||dt%        |j                  d   j&                  xs d¬	«      t)        |j*                  |j,                  |j.                  ¬
«      d¬«      }|S # t0        $ r}t3        d|› d|› �«      ‚d }~ww xY w)Nrÿ   r   r…   T)r£   r
  rå   ræ   rè   )r  )Úprompt_tokensÚcompletion_tokensÚtotal_tokens)r£   rì   r"  r  rÿ   rê   zFailed to decode chunk: z	. Error: )Úgetattrr  r„   r  r   rj   r   r   r
  ry   r^  r   ré   r   rå   rá   rç   r#  r   r  r   r`  ra  rb  r®   Ú
ValueError)r=   rØ   Úchunk_usager£   rì   Ú_model_response_tool_callÚprocessed_chunkr³   s           rF   r%  z"MockResponseIterator._chunk_parser  s   € ð%	RÜ(/°
¸GÓ(DˆKØ×%Ñ% aÑ(×0Ñ0×8Ñ8Ò>¸BˆDØˆHÜ/3ÜÔ2Ñ3°dÑ:Ü”W˜j×0Ñ0°Ñ3Ó4×<Ñ<×GÑGó0Ð%ð �~‰~ Ñ%Ø!%×!=Ñ!=ØØ)×1Ñ1°!Ñ4×<Ñ<×GÑGð ">ó "‘�‘hð +Ð6Ü6Ø0°Ñ3×6Ñ6Ø#Ü@Ø6°qÑ9×BÑB×GÑGØ";¸AÑ">×"GÑ"G×"QÑ"Qôð ô�ô &,ØØ!Ø Ü/¸j×>PÑ>PÐQRÑ>S×>aÑ>aÒ>gÐegÔhÜ.Ø"-×";Ñ";Ø&1×&CÑ&CØ!,×!9Ñ!9ôð
 ô&ˆOð #Ð"øÜò 	RÜÐ7¸
°|À9ÈQÈCÐPÓQÐQûð	Rús   ‚E<E? Å?	FÆFÆFc                 ój   — | j                   rt        ‚d| _         | j                  | j                  «      S ©NT)rW  ÚStopIterationr%  rˆ   r^   s    rF   Ú__next__zMockResponseIterator.__next__G  s-   € Ø�<Š<ÜÐØˆŒØ×!Ñ! $×"5Ñ"5Ó6Ð6rH   c                 ó   — | S r  r]   r^   s    rF   Ú	__aiter__zMockResponseIterator.__aiter__N  rZ  rH   c              ƒ   ór   K  — | j                   rt        ‚d| _         | j                  | j                  «      S ­wri  )rW  ÚStopAsyncIterationr%  rˆ   r^   s    rF   Ú	__anext__zMockResponseIterator.__anext__Q  s1   è ø€ Ø�<Š<Ü$Ð$ØˆŒØ×!Ñ! $×"5Ñ"5Ó6Ð6ùs   ‚57r?  )rf   rg   rh   rm   rG   rY  rc   rj   r   rA  r^  r   r#  r%  rk  rm  rp  r]   rH   rF   r¥   r¥   ù  su   „ ñ°$¸±+ó òðØðØ%)Ð*EÑ%FÈÑ%Mðà	ˆsÐ/°$Ñ6Ð6Ñ	7óð8&R¨ð &R¸&ó &RòP7òó7rH   r¥   )FFNN)HrN   Úcollections.abcr   r   Útypingr   r   r«   r�   r   Úlitellm._uuidr   Úlitellm.caching.cachingr	   Úlitellm.constantsr
   Ú'litellm.litellm_core_utils.core_helpersr   Ú*litellm.litellm_core_utils.litellm_loggingr   Ú#litellm.llms.anthropic.chat.handlerr   rG  Ú&litellm.llms.custom_httpx.http_handlerr   r   r   r   Úlitellm.types.llms.bedrockÚlitellm.types.llms.openair   r   r   r   r   Úlitellm.types.utilsr   r   r   r   r   r   r   r   r#  Úcommon_utilsr!   r"   r#   r$   r(   rl   Ú1litellm.llms.bedrock.chat.converse_transformationr)   r*   r,   rc   rp   rj   rm   Ú BEDROCK_INVOKE_PROVIDERS_LITERALrn   rA  ÚAnyÚHeadersr´   r7  r¸   r©   r¦   r¨   r¥   r]   rH   rF   ú<module>r‚     sX  ðÜ ß 3ß ã ã Ý "Ý Ý 1Ý 7Ý EÝ >õ÷ó ô )÷õ ÷÷ ñ õ @÷ó ñ 4AÐTVÐdgÔ3hÐ ˜E -Ñ0Ó hÝ Rá-Ó/€�Ó /÷`ñ `ðV Ø"ØOSØ$(ñQ<Ø˜tÑ#ðQ<àðQ<ð ðQ<ð ð	Q<ð
 ðQ<ð ðQ<ð ðQ<ð ðQ<ð �d‰{ðQ<ð %×EÑEÈÑLðQ<ð ˜T‘zðQ<ð ˆ3�—‘ÐÑóQ<ðz Ø"ØOSØ$(ñQ<Ø˜$ÑðQ<àðQ<ð ðQ<ð ð	Q<ð
 ˜d‘lðQ<ð ðQ<ð ðQ<ð ðQ<ð ðQ<ð �d‰{ðQ<ð %×EÑEÈÑLðQ<ð ˜T‘zðQ<ð ˆ3�—‘ÐÑóQ<÷hI"ñ I"ôXUÐ)>ô Uô.TÐ$9ô T÷(\7ò \7rH   