Ë
    µŒj {  ã                   óv  — d dl 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	m
Z
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 d dlmZmZ d d	lmZmZmZ d d
lm Z  d dl!m"Z"m#Z# dZ$dZ%dZ&dZ'dZ(de)de)fd„Z*de)de)fd„Z+de	e)ef   defd„Z, G d„ d«      Z- G d„ dee«      Z. eddd¬«       G d„ d ee.«      «       Z/y)!é    N)ÚABC)	ÚAnyÚAsyncGeneratorÚAsyncIteratorÚDictÚIteratorÚListÚMappingÚOptionalÚTuple)Ú
deprecated)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚLLM)ÚGenerationChunk)Úget_from_dict_or_envÚpre_init)Ú	BaseModelÚ
ConfigDictÚField)Úenforce_stop_tokens)Úget_num_tokens_anthropicÚget_token_ids_anthropiczamazon-bedrock-tracez"amazon-bedrock-guardrailAssessmentz

Human:z

Assistant:zCError: Prompt must alternate between '

Human:' and '

Assistant:'.Ú
input_textÚreturnc                 ó’   — | }dD ]?  }|j                  |d|z   «      }t        d«      D ]  }|j                  d|z   d|z   «      }Œ ŒA |S )N)úHuman:ú
Assistant:ú

é   z


)ÚreplaceÚrange)r   Únew_textÚwordÚis       új/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/bedrock.pyÚ_add_newlines_before_har'   *   sV   € Ø€HÛ(ˆØ×#Ñ# D¨&°4©-Ó8ˆÜ�q–ˆAØ×'Ñ'¨°4©¸À$¹ÓG‰Hñ ð )ð €Oó    c                 óŽ  — | j                  d«      dk(  s'| j                  d«      | j                  d«      kD  rd| v rt        dz   | z   } | j                  d«      dk(  r	| t        z   } | d t	        d«       dk(  rd| z   } t        | «      } d}t        t	        | «      «      D ]•  }| ||t	        t        «      z    t        k(  r-|dz  dk(  r|dz  }nt        j                  t        d| › �z   «       | ||t	        t        «      z    t        k(  sŒi|dz  dk(  r|dz  }Œwt        j                  t        d| › �z   «       Œ— |dz  dk(  r	| t        z   } | S )	Nr   r   r   Ú r   r    é   z
 Received )
ÚcountÚfindÚHUMAN_PROMPTÚASSISTANT_PROMPTÚlenr'   r"   ÚwarningsÚwarnÚALTERNATION_ERROR)r   r,   r%   s      r&   Ú_human_assistant_formatr4   3   sO  € Ø×Ñ˜Ó! QÒ&Ø�‰˜Ó! J§O¡O°LÓ$AÒAØ˜JÑ&ä! CÑ'¨*Ñ4ˆ
Ø×Ñ˜Ó%¨Ò*ØÔ"2Ñ2ˆ
Ø�/”C˜“MÐ" hÒ.Ø˜jÑ(ˆ
Ü(¨Ó4€JØ€Eä”3�z“?Ö#ˆØ�a˜!œc¤,Ó/Ñ/Ð0´LÒ@Ø�q‰y˜AŠ~Ø˜‘
‘ä—‘Ô/°J¸z¸lÐ2KÑKÔLØ�a˜!œcÔ"2Ó3Ñ3Ð4Ô8HÓHØ�q‰y˜AŠ~Ø˜‘
‘ä—‘Ô/°J¸z¸lÐ2KÑKÕLð $ð ˆq�y�A‚~ØÔ"2Ñ2ˆ
àÐr(   Ústream_responsec           	      ó~   — | d   st        d¬«      S t        | d   d   t        | j                  dd«      ¬«      ¬«      S )	z0Convert a stream response to a generation chunk.ÚdeltaÚ ©Útextr:   Ústop_reasonN)Úfinish_reason©r:   Úgeneration_info)r   ÚdictÚget)r5   s    r&   Ú$_stream_response_to_generation_chunkrA   R   sI   € ð ˜7Ò#Ü BÔ'Ð'ÜØ˜WÑ% fÑ-ÜØ)×-Ñ-¨m¸TÓBô
ôð r(   c                   ó  — e Zd ZdZddddddœZe	 	 	 dd	ed
eeef   de	e   de	e   de	e
e      deeef   fd„«       Zed	ededefd„«       Ze	 	 dd	edede	e
e      dedee   f
d„«       Ze	 dd	edede	e
e      dee   fd„«       Zy)ÚLLMInputOutputAdapterz»Adapter class to prepare the inputs from Langchain to a format
    that LLM model expects.

    It also provides helper function to extract
    the generated text from the model response.Ú
completionÚ
outputTextr:   Ú
generationÚoutputs)Ú	anthropicÚamazonÚcohereÚmetaÚmistralNÚproviderÚmodel_kwargsÚpromptÚsystemÚmessagesr   c                 óà   — i |¥}|dk(  r7|rd|d<   ||d<   |r||d<   d|vrd|d<   |rt        |«      |d<   d	|vrd|d	<   |S |d
v r||d<   |S |dk(  rt        «       }||d<   i |¥|d<   |S ||d<   |S )NrH   zbedrock-2023-05-31Úanthropic_versionrQ   rP   Ú
max_tokensi   rO   Úmax_tokens_to_sample)Úai21rJ   rK   rL   rI   Ú	inputTextÚtextGenerationConfig)r4   r?   )ÚclsrM   rN   rO   rP   rQ   Ú
input_bodys          r&   Úprepare_inputz#LLMInputOutputAdapter.prepare_inputo   sÜ   € ð &˜Ð%ˆ
Ø�{Ò"ÙØ2F�
Ð.Ñ/Ø)1�
˜:Ñ&ÙØ+1�J˜xÑ(Ø zÑ1Ø/3�J˜|Ñ,ÙÜ'>¸vÓ'F�
˜8Ñ$Ø)°Ñ;Ø9=�JÐ5Ñ6ð Ðð Ð>Ñ>Ø#)ˆJ�xÑ ð Ðð ˜Ò!Ü›ˆJØ&,ˆJ�{Ñ#Ø1A°LÐ1AˆJÐ-Ñ.ð Ðð '-ˆJ�{Ñ#àÐr(   Úresponsec                 óÊ  — d}|dk(  r‚t        j                  |j                  d«      j                  «       j	                  «       «      }d|v r|j                  d«      }�n!d|v �r|j                  d«      }|d   j                  d«      }nöt        j                  |j                  d«      j                  «       «      }|dk(  r3|j                  d	«      d   j                  d
«      j                  d«      }nŒ|dk(  r$|j                  d«      d   j                  d«      }nc|dk(  r|j                  d«      }nL|dk(  r$|j                  d«      d   j                  d«      }n#|j                  d«      d   j                  d«      }|j                  di «      j                  di «      }t        |j                  dd«      «      }t        |j                  dd«      «      }||||||z   dœdœS )Nr8   rH   ÚbodyrD   Úcontentr   r:   rV   ÚcompletionsÚdatarJ   ÚgenerationsrK   rF   rL   rG   ÚresultsrE   ÚResponseMetadataÚHTTPHeadersz x-amzn-bedrock-input-token-countz!x-amzn-bedrock-output-token-count)Úprompt_tokensÚcompletion_tokensÚtotal_tokens)r:   r^   Úusage)ÚjsonÚloadsr@   ÚreadÚdecodeÚint)	rY   rM   r\   r:   Úresponse_bodyr_   Úheadersrf   rg   s	            r&   Úprepare_outputz$LLMInputOutputAdapter.prepare_output�   sÅ  € àˆØ�{Ò"Ü ŸJ™J x§|¡|°FÓ';×'@Ñ'@Ó'B×'IÑ'IÓ'KÓLˆMØ˜}Ñ,Ø$×(Ñ(¨Ó6’Ø˜mÒ+Ø'×+Ñ+¨IÓ6�Ø˜q‘z—~‘~ fÓ-‘ä ŸJ™J x§|¡|°FÓ';×'@Ñ'@Ó'BÓCˆMà˜6Ò!Ø$×(Ñ(¨Ó7¸Ñ:×>Ñ>¸vÓF×JÑJÈ6ÓR‘Ø˜XÒ%Ø$×(Ñ(¨Ó7¸Ñ:×>Ñ>¸vÓF‘Ø˜VÒ#Ø$×(Ñ(¨Ó6‘Ø˜YÒ&Ø$×(Ñ(¨Ó3°AÑ6×:Ñ:¸6ÓB‘à$×(Ñ(¨Ó3°AÑ6×:Ñ:¸<ÓH�à—,‘,Ð1°2Ó6×:Ñ:¸=È"ÓMˆÜ˜GŸK™KÐ(JÈAÓNÓOˆÜ §¡Ð,OÐQRÓ SÓTÐàØ!à!.Ø%6Ø -Ð0AÑ Aññ
ð 	
r(   ÚstopÚmessages_apic              #   óê  K  — |j                  d«      }|sy |rd}n| j                  j                  |d«      }|st        d|› �«      ‚|D �]$  }|j                  d«      }|sŒt        j                  |j                  d«      j                  «       «      }	|dk(  r|	d   s|	|   d	k(  r y |d
k(  r+|	j                  |i g«      d   j                  dd«      dk(  r y |r|	j                  d«      dk(  r y |r8|	j                  d«      dv r%|	j                  d«      dk(  rt        |	«      }
|
–— ŒßŒàt        |d
k7  r|	|   n
|	|   d   d   t        t        |	v r|	j                  t        «      nd i¬«      –— �Œ' y ­w)Nr^   Úmessager8   ú4Unknown streaming response output key for provider: ÚchunkÚbytesrJ   Úis_finishedú<EOS_TOKEN>rL   r   r;   rr   ÚtypeÚcontent_block_stop)Úmessage_startÚcontent_block_startÚcontent_block_deltar   r:   r=   )	r@   Úprovider_to_output_key_mapÚ
ValueErrorrj   rk   rm   rA   r   ÚGUARDRAILS_BODY_KEY)rY   rM   r\   rr   rs   ÚstreamÚ
output_keyÚeventrw   Ú	chunk_objÚchks              r&   Úprepare_output_streamz+LLMInputOutputAdapter.prepare_output_streamµ   s™  è ø€ ð —‘˜fÓ%ˆáØáØ"‰Jà×7Ñ7×;Ñ;¸HÀbÓIˆJáÜØFÀxÀjÐQóð ô ˆEØ—I‘I˜gÓ&ˆEÙØäŸ
™
 5§9¡9¨WÓ#5×#<Ñ#<Ó#>Ó?ˆIà˜8Ò#Ø˜-Ò(¨I°jÑ,AÀ]Ò,Ráð ˜IÒ%Ø—M‘M *¨r¨dÓ3°AÑ6×:Ñ:¸=È"ÓMÐQWÒWáá 9§=¡=°Ó#8Ð<PÒ#PÙá 	§¡¨fÓ 5ð :ñ !ð
 —=‘= Ó(Ð,AÒAÜ>¸yÓI�CØ“Iàô &ð $ yÒ0ð " *Ò-à& zÑ2°1Ñ5°fÑ=ô ,ä2°iÑ?ð &ŸM™MÔ*=Ô>à!%ð	%ôô ñC ùs   ‚E1E3c                óò  K  — |j                  d«      }|sy | j                  j                  |d «      }|st        d|› �«      ‚|D ]®  }|j                  d«      }|sŒt        j                  |j                  d«      j                  «       «      }|dk(  r|d   s||   dk(  r y |dk(  r+|j                  |i g«      d	   j                  d
d«      dk(  r y t        |dk7  r||   n
||   d	   d   ¬«      ­–— Œ° y ­w)Nr^   rv   rw   rx   rJ   ry   rz   rL   r   r;   r8   rr   r:   r9   )r@   r€   r�   rj   rk   rm   r   )	rY   rM   r\   rr   rƒ   r„   r…   rw   r†   s	            r&   Úaprepare_output_streamz,LLMInputOutputAdapter.aprepare_output_streamü   s  è ø€ ð —‘˜fÓ%ˆáØà×3Ñ3×7Ñ7¸À$ÓGˆ
áÜØFÀxÀjÐQóð ó ˆEØ—I‘I˜gÓ&ˆEÙØäŸ
™
 5§9¡9¨WÓ#5×#<Ñ#<Ó#>Ó?ˆIà˜8Ò#Ø˜-Ò(¨I°jÑ,AÀ]Ò,Ráð ˜IÒ%Ø—M‘M *¨r¨dÓ3°AÑ6×:Ñ:¸=È"ÓMÐQWÒWáä!ð   9Ò,ð ˜jÒ)à" :Ñ.¨qÑ1°&Ñ9ô	ô ñ% ùs   ‚C5C7)NNN)NF©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r€   ÚclassmethodÚstrr   r   r   r	   r[   r?   rq   Úboolr   r   rˆ   r   rŠ   © r(   r&   rC   rC   `   sl  „ ñ3ð "ØØØØñ"Ðð ð
 !%Ø $Ø)-ñàðð ˜3 ˜8‘nðð ˜‘ð	ð
 ˜‘ðð ˜4 ™:Ñ&ðð 
ˆc�3ˆh‰òó ðð@ ð"
 cð "
°Sð "
¸Tò "
ó ð"
ðH ð
 %)Ø"ñDàðDð ðDð �t˜C‘yÑ!ð	Dð
 ðDð 
�/Ñ	"òDó ðDðL àGKñ'Øð'Ø&)ð'Ø19¸$¸s¹)Ñ1Dð'à	�Ñ	'ò'ó ñ'r(   rC   c                   óæ  — e Zd ZU dZ ed¬«      Z ed¬«      Zee	d<   dZ
ee   e	d<   	  edd¬	«      Zee   e	d
<   	 dZee	d<   	 dZee   e	d<   	 ee	d<   	 dZee   e	d<   	 dZee   e	d<   	 dZee	d<   	 ddddddœZeeef   e	d<   ddddœZeeeef      e	d<   	 ededefd„«       Zedeeef   fd„«       Zdefd„Zedefd„«       Zedefd„«       Zdeeef   fd „Z	 	 	 	 	 d,d!ee   d"ee   d#ee e      dee e      d$ee!   d%ede"eeeef   f   fd&„Z#d'e$de$fd(„Z%d'e$defd)„Z&	 	 	 	 	 d,d!ee   d"ee   d#ee e      dee e      d$ee!   d%ede'e(   fd*„Z)	 	 d-d!edee e      d$ee*   d%ede+e(   f
d+„Z,y).ÚBedrockBasezBase class for Bedrock models.r“   )Úprotected_namespacesT)ÚexcludeÚclientNÚregion_name)Údefaultr—   Úcredentials_profile_nameÚconfigrM   Úmodel_idrN   Úendpoint_urlFÚ	streamingÚstop_sequencesÚstopSequencesrr   )rH   rI   rV   rJ   rL   Ú#provider_stop_sequence_key_name_map)ÚidÚversionÚtraceÚ
guardrailsÚvaluesr   c                 óÚ  — |j                  d«      �|S 	 ddl}|d   �|j                  |d   ¬«      }n|j                  «       }t        |dd|j                  ¬«      |d<   i }|d   r|d   |d<   |d	   r|d	   |d	<   |d
   r|d
   |d
<    |j
                  di |¤Ž|d<   |S # t        $ r t        d«      ‚t        $ r}t        d|› �«      ‚d}~wt        $ r}t        d|› �«      |‚d}~ww xY w)zJValidate that AWS credentials to and python package exists in environment.r˜   Nr   r›   )Úprofile_namer™   ÚAWS_DEFAULT_REGION)rš   rž   rœ   zRCould not import boto3 python package. Please install it with `pip install boto3`.ú!Error raised by bedrock service: z’Could not load credentials to authenticate with AWS client. Please check that credentials in the specified profile name are valid. Bedrock error: )zbedrock-runtime)	r@   Úboto3ÚSessionr   r™   r˜   ÚImportErrorr�   Ú	Exception)rY   r§   r¬   ÚsessionÚclient_paramsÚes         r&   Úvalidate_environmentz BedrockBase.validate_environmentŠ  sG  € ð
 �:‰:�hÓÐ+ØˆMð&	ÛàÐ0Ñ1Ð=ØŸ-™-°VÐ<VÑ5W˜-ÓX‘ð  Ÿ-™-›/�ä$8ØØØ$Ø×+Ñ+ô	%ˆF�=Ñ!ð ˆMØ�mÒ$Ø/5°mÑ/D�˜mÑ,Ø�nÒ%Ø06°~Ñ0F�˜nÑ-Ø�hÒØ*0°Ñ*:�˜hÑ'à-˜wŸ~™~ÑQÀ=ÑQˆF�8Ñð  ˆøô ò 	Üð>óð ô ò 	FÜÐ@ÀÀÐDÓEÐEûÜò 	Üð:à:;¸ð>óð ð	ûð	ús$   •B	B  Â C*Â<C
Ã
C*ÃC%Ã%C*c                 ó.   — | j                   xs i }i d|i¥S )zGet the identifying parameters.rN   )rN   )ÚselfÚ_model_kwargss     r&   Ú_identifying_paramszBedrockBase._identifying_params¼  s+   € ð ×)Ñ)Ò/¨Rˆð
Ø˜}Ð-ð
ð 	
r(   c                 óº   — | j                   r| j                   S | j                  j                  d«      rt        d«      ‚| j                  j	                  d«      d   S )NÚarnzFModel provider should be supplied when passing a model ARN as model_idÚ.r   )rM   r�   Ú
startswithr�   Úsplit©rµ   s    r&   Ú_get_providerzBedrockBase._get_providerÄ  sQ   € Ø�=Š=Ø—=‘=Ð Ø�=‰=×#Ñ# EÔ*ÜØXóð ð �}‰}×"Ñ" 3Ó'¨Ñ*Ð*r(   c                 ó(   — | j                  «       dk(  S )NrH   )r¾   r½   s    r&   Ú_model_is_anthropiczBedrockBase._model_is_anthropicÎ  s   € à×!Ñ!Ó# {Ñ2Ð2r(   c                 óÚ   — 	 t        | j                  t        «      xr2 t        | j                  d   «      xr t        | j                  d   «      S # t        $ r}t        d«      |‚d}~ww xY w)aŒ  
        Determines if guardrails are enabled and correctly configured.
        Checks if 'guardrails' is a dictionary with non-empty 'id' and 'version' keys.
        Checks if 'guardrails.trace' is true.

        Returns:
            bool: True if guardrails are correctly configured, False otherwise.
        Raises:
            TypeError: If 'guardrails' lacks 'id' or 'version' keys.
        r£   r¤   z=Guardrails must be a dictionary with 'id' and 'version' keys.N)Ú
isinstancer¦   r?   r’   ÚKeyErrorÚ	TypeError)rµ   r²   s     r&   Ú_guardrails_enabledzBedrockBase._guardrails_enabledÒ  sk   € ð
	ä˜4Ÿ?™?¬DÓ1ò 5Ü˜Ÿ™¨Ñ.Ó/ò5ä˜Ÿ™¨Ñ3Ó4ðøô ò 	ÜØOóàðûð	ús   ‚AA Á	A*ÁA%Á%A*c                 ót   — d| j                   j                  d«      | j                   j                  d«      dœiS )zÿ
        The canonical way to pass in guardrails to the bedrock service
        adheres to the following format:

        "amazon-bedrock-guardrailDetails": {
            "guardrailId": "string",
            "guardrailVersion": "string"
        }
        zamazon-bedrock-guardrailDetailsr£   r¤   )ÚguardrailIdÚguardrailVersion)r¦   r@   r½   s    r&   Ú_get_guardrails_canonicalz%BedrockBase._get_guardrails_canonicalê  s:   € ð .Ø#Ÿ™×2Ñ2°4Ó8Ø$(§O¡O×$7Ñ$7¸	Ó$Bñ0ð
ð 	
r(   rO   rP   rQ   Úrun_managerÚkwargsc                 ó  — | j                   xs i }| j                  «       }i |¥|¥}	| j                  r|	j                  | j	                  «       «       t
        j                  ||	|||¬«      }
t        j                  |
«      }d}d}|| j                  ||dœ}| j                  r%d|d<   | j                  j                  d«      rd|d<   	  | j                  j                  d
i |¤Ž}t
        j                  ||«      j                  «       \  }}}|�t%        ||«      }| j'                  |«      }|j                  d«      r0|�. |j(                  t!        d|j                  d	«      › �«      fi |¤Ž ||fS # t         $ r}t#        d|› �«      ‚d }~ww xY w)N)rM   rN   rO   rP   rQ   úapplication/json©r^   ÚmodelIdÚacceptÚcontentTypeÚENABLEDÚ	guardrailr¥   r«   ÚsignalÚreasonr“   )rN   r¾   rÅ   ÚupdaterÉ   rC   r[   rj   Údumpsr�   r¦   r@   r˜   Úinvoke_modelrq   r§   r¯   r�   r   Ú_get_bedrock_services_signalÚon_llm_error)rµ   rO   rP   rQ   rr   rÊ   rË   r¶   rM   ÚparamsrZ   r^   rÐ   rÑ   Úrequest_optionsr\   r:   Ú
usage_infor²   Úservices_traces                       r&   Ú_prepare_input_and_invokez%BedrockBase._prepare_input_and_invokeû  sÀ  € ð ×)Ñ)Ò/¨Rˆà×%Ñ%Ó'ˆØ,�MÐ, VÐ,ˆØ×#Ò#Ø�M‰M˜$×8Ñ8Ó:Ô;Ü*×8Ñ8ØØØØØð 9ó 
ˆ
ô �z‰z˜*Ó%ˆØ#ˆØ(ˆð Ø—}‘}ØØ&ñ	
ˆð ×#Ò#Ø+4ˆO˜KÑ(Ø�‰×"Ñ" 7Ô+Ø+4� Ñ(ð	FØ/�t—{‘{×/Ñ/ÑB°/ÑBˆHä%:×%IÑ%IØ˜(ó&ç‰f‹hñ #ˆD�$˜
ð ÐÜ& t¨TÓ2ˆDð
 ×:Ñ:¸4Ó@ˆà×Ñ˜hÔ'¨KÐ,CØ$ˆK×$Ñ$ÜØ7¸×8JÑ8JÈ8Ó8TÐ7UÐVóñð !ò	ð �ZÐÐøô' ò 	FÜÐ@ÀÀÐDÓEÐEûð	Fús   ÃAE0 Å0	FÅ9FÆFr^   c                 ó°   — | j                   rE| j                  j                  d«      r*| j                  |«      rdd|j                  t        «      dœS ddddœS )ak  
        This function checks the response body for an interrupt flag or message that indicates
        whether any of the Bedrock services have intervened in the processing flow. It is
        primarily used to identify modifications or interruptions imposed by these services
        during the request-response cycle with a Large Language Model (LLM).
        r¥   TÚGUARDRAIL_INTERVENED)rÔ   rÕ   r¥   FN)rÅ   r¦   r@   Ú_is_guardrails_interventionÚAMAZON_BEDROCK_TRACE_KEY©rµ   r^   s     r&   rÙ   z(BedrockBase._get_bedrock_services_signal=  sa   € ð ×$Ò$Ø—‘×#Ñ# GÔ,Ø×0Ñ0°Ô6ð Ø0ØŸ™Ô":Ó;ñð ð ØØñ
ð 	
r(   c                 ó2   — |j                  t        «      dk(  S )Nrá   )r@   r‚   rä   s     r&   râ   z'BedrockBase._is_guardrails_interventionV  s   € Ø�x‰xÔ+Ó,Ð0FÑFÐFr(   c              +   óT  K  — | j                   xs i }| j                  «       }|r;|| j                  vrt        d|› d�«      ‚||| j                  j	                  |«      <   |dk(  rd|d<   i |¥|¥}	| j
                  r|	j                  | j                  «       «       t        j                  |||||	¬«      }
t        j                  |
«      }|| j                  dddœ}| j
                  r%d	|d
<   | j                  j	                  d«      rd	|d<   	  | j                  j                  di |¤Ž}t        j#                  ||||rdnd«      D ]@  }| j%                  |j&                  «       |�|j)                  |j*                  |¬«       |–— ŒB y # t         $ r}t        d|› �«      ‚d }~ww xY w­w)NúStop sequence key name for ú is not supported.rJ   Trƒ   )rM   rO   rP   rQ   rN   rÍ   rÎ   rÒ   rÓ   r¥   r«   F©rw   r“   )rN   r¾   r¢   r�   r@   rÅ   rÖ   rÉ   rC   r[   rj   r×   r�   r¦   r˜   Ú!invoke_model_with_response_streamr¯   rˆ   rÙ   r>   Úon_llm_new_tokenr:   )rµ   rO   rP   rQ   rr   rÊ   rË   r¶   rM   rÛ   rZ   r^   rÜ   r\   r²   rw   s                   r&   Ú _prepare_input_and_invoke_streamz,BedrockBase._prepare_input_and_invoke_streamY  sÎ  è ø€ ð ×)Ñ)Ò/¨RˆØ×%Ñ%Ó'ˆáØ˜t×GÑGÑGÜ Ø1°(°Ð;MÐNóð ð UYˆM˜$×BÑB×FÑFÀxÓPÑQà�xÒØ&*ˆM˜(Ñ#à,�MÐ, VÐ,ˆà×#Ò#Ø�M‰M˜$×8Ñ8Ó:Ô;ä*×8Ñ8ØØØØØð 9ó 
ˆ
ô �z‰z˜*Ó%ˆð Ø—}‘}Ø(Ø-ñ	
ˆð ×#Ò#Ø+4ˆO˜KÑ(Ø�‰×"Ñ" 7Ô+Ø+4� Ñ(ð	FØD�t—{‘{×DÑDÑWÀÑWˆHô
 +×@Ñ@Ø�h ©h¡d¸Eö
ˆEð ×-Ñ-¨e×.CÑ.CÔDàÐ&Ø×,Ñ,¨U¯Z©Z¸uÐ,ÔEØ‹Kñ
øô ò 	FÜÐ@ÀÀÐDÓEÐEûð	Füs+   ‚D
F(ÄF	 Ä)A F(Æ		F%ÆF Æ F%Æ%F(c                óÊ  ‡ ‡K  — ‰ j                   xs i }‰ j                  «       }|r;|‰ j                  vrt        d|› d�«      ‚||‰ j                  j	                  |«      <   |dk(  rd|d<   i |¥|¥}t
        j                  |||¬«      }t        j                  |«      Št        j                  «       j                  d ˆˆ fd„«      ƒ d {  –—† }	t
        j                  ||	|«      2 3 d {  –—† }
|�Et        j                  |j                  «      r&|j                  |
j                  |
¬«      ƒ d {  –—†  n|�|j                  |
j                  |
¬«       |
­–— Œu7 Œ�7 Œr7 Œ.6 y ­w)	Nrç   rè   rJ   Trƒ   )rM   rO   rN   c                  óV   •— ‰j                   j                  ‰ ‰j                  dd¬«      S )NrÍ   rÎ   )r˜   rê   r�   )r^   rµ   s   €€r&   Ú<lambda>z?BedrockBase._aprepare_input_and_invoke_stream.<locals>.<lambda>¸  s*   ø€ �D—K‘K×AÑAØØŸ™Ø)Ø.ð	 Bô r(   ré   )rN   r¾   r¢   r�   r@   rC   r[   rj   r×   ÚasyncioÚget_running_loopÚrun_in_executorrŠ   Úiscoroutinefunctionrë   r:   )rµ   rO   rr   rÊ   rË   r¶   rM   rÛ   rZ   r\   rw   r^   s   `          @r&   Ú!_aprepare_input_and_invoke_streamz-BedrockBase._aprepare_input_and_invoke_streamœ  sy  ùè ø€ ð ×)Ñ)Ò/¨RˆØ×%Ñ%Ó'ˆáØ˜t×GÑGÑGÜ Ø1°(°Ð;MÐNóð ð UYˆM˜$×BÑB×FÑFÀxÓPÑQà�xÒØ&*ˆM˜(Ñ#à,�MÐ, VÐ,ˆÜ*×8Ñ8Ø f¸6ð 9ó 
ˆ
ô �z‰z˜*Ó%ˆä ×1Ñ1Ó3×CÑCØôó
÷ 
ˆô 1×GÑGØ�h ô
÷ 		�%ð Ð&¬7×+FÑ+FØ×,Ñ,ô,ð "×2Ñ2°5·:±:ÀUÐ2ÓK×KÑKØÐ(Ø×,Ñ,¨U¯Z©Z¸uÐ,ÔEØŒKð'
øð		øð Løñ
ùsI   „CE#Ã
EÃE#Ã&E!Ã*EÃ+E!Ã.AE#Ä0EÄ1+E#ÅE!ÅE#Å!E#)NNNNN©NN)-rŒ   r�   rŽ   r�   r   Úmodel_configr   r˜   r   Ú__annotations__r™   r   r‘   r›   rœ   rM   rN   r   rž   rŸ   r’   r¢   r
   r¦   r   r³   Úpropertyr·   r¾   rÀ   rÅ   rÉ   r	   r   r   rß   r?   rÙ   râ   r   r   rì   r   r   rô   r“   r(   r&   r•   r•   '  s7  … Ù(á°2Ô6€Lá Ô%€FˆCÓ%à!%€K�˜#‘Ó%ðñ /4¸DÈ$Ô.OÐ˜h s™mÓOðð €FˆCÓØLà"€Hˆh�s‰mÓ"ðð ƒMð5ð $(€L�(˜4‘.Ó'Ø1à"&€L�(˜3‘-Ó&ØCà€IˆtÓØ(ð &Ø!Ø Ø"Øñ>Ð'¨°°c°Ñ):ó ð ØØñ/€J�˜  c Ñ*Ñ+ó ð
(ðT ð/¨$ð /°4ò /ó ð/ðb ð
 W¨S°#¨XÑ%6ò 
ó ð
ð+˜só +ð ð3 Tò 3ó ð3ð ð Tò ó ðð.
¨4°°S°©>ó 
ð& !%Ø $Ø)-Ø$(Ø:>ñ@ à˜‘ð@ ð ˜‘ð@ ð ˜4 ™:Ñ&ð	@ ð
 �t˜C‘yÑ!ð@ ð Ð6Ñ7ð@ ð ð@ ð 
ˆs�D˜˜c˜‘NÐ"Ñ	#ó@ ðD
°ð 
¸$ó 
ð2G°ð G¸ó Gð
 !%Ø $Ø)-Ø$(Ø:>ñAà˜‘ðAð ˜‘ðAð ˜4 ™:Ñ&ð	Að
 �t˜C‘yÑ!ðAð Ð6Ñ7ðAð ðAð 
�/Ñ	"óAðL %)Ø?Cñ	-àð-ð �t˜C‘yÑ!ð-ð Ð;Ñ<ð	-ð
 ð-ð 
�Ñ	'ô-r(   r•   z0.0.34z1.0zlangchain_aws.BedrockLLM)ÚsinceÚremovalÚalternative_importc                   óÀ  ‡ — e Zd ZdZ	 ededefˆ fd„«       Zedefd„«       Z	e
defd„«       Ze
dee   fd„«       Zedeeef   fd„«       Z ed	¬
«      Z	 	 ddedeee      dee   dedee   f
d„Z	 	 ddedeee      dee   dedef
d„Z	 	 ddedeee      dee   dedeedf   f
d„Z	 	 ddedeee      dee   dedef
d„Zdedefˆ fd„Zdedee   fˆ fd„Zˆ xZ S )ÚBedrockaÍ  Bedrock models.

    To authenticate, the AWS client uses the following methods to
    automatically load credentials:
    https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html

    If a specific credential profile should be used, you must pass
    the name of the profile from the ~/.aws/credentials file that is to be used.

    Make sure the credentials / roles used have the required policies to
    access the Bedrock service.
    r§   r   c                 ód   •— |d   }|j                  d«      rt        d«      ‚t        ‰| �  |«      S )Nr�   zanthropic.claude-3z|Claude v3 models are not supported by this LLM.Please use `from langchain_community.chat_models import BedrockChat` instead.)r»   r�   Úsuperr³   )rY   r§   r�   Ú	__class__s      €r&   r³   zBedrock.validate_environmentë  s@   ø€ à˜*Ñ%ˆØ×ÑÐ3Ô4Üðóð ô
 ‰wÑ+¨FÓ3Ð3r(   c                  ó   — y)zReturn type of llm.Úamazon_bedrockr“   r½   s    r&   Ú	_llm_typezBedrock._llm_typeö  s   € ð  r(   c                  ó   — y)z9Return whether this model can be serialized by Langchain.Tr“   ©rY   s    r&   Úis_lc_serializablezBedrock.is_lc_serializableû  s   € ð r(   c                 ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚllmsÚbedrockr“   r  s    r&   Úget_lc_namespacezBedrock.get_lc_namespace   s
   € ò 0Ð/r(   c                 ó@   — i }| j                   r| j                   |d<   |S )Nr™   )r™   )rµ   Ú
attributess     r&   Úlc_attributeszBedrock.lc_attributes  s&   € à%'ˆ
à×ÒØ(,×(8Ñ(8ˆJ�}Ñ%àÐr(   Úforbid)ÚextraNrO   rr   rÊ   rË   c                 ó.   —  | j                   d|||dœ|¤ŽS )a�  Call out to Bedrock service with streaming.

        Args:
            prompt (str): The prompt to pass into the model
            stop (Optional[List[str]], optional): Stop sequences. These will
                override any stop sequences in the `model_kwargs` attribute.
                Defaults to None.
            run_manager (Optional[CallbackManagerForLLMRun], optional): Callback
                run managers used to process the output. Defaults to None.

        Returns:
            Iterator[GenerationChunk]: Generator that yields the streamed responses.

        Yields:
            Iterator[GenerationChunk]: Responses from the model.
        ©rO   rr   rÊ   r“   )rì   )rµ   rO   rr   rÊ   rË   s        r&   Ú_streamzBedrock._stream  s-   € ð. 5ˆt×4Ñ4ð 
Ø °+ñ
ØAGñ
ð 	
r(   c                 ó¬   — | j                   r.d} | j                  d|||dœ|¤ŽD ]  }||j                  z  }Œ |S  | j                  d|||dœ|¤Ž\  }}|S )ag  Call out to Bedrock service model.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = llm.invoke("Tell me a joke.")
        r8   r  r“   )rŸ   r  r:   rß   )	rµ   rO   rr   rÊ   rË   rD   rw   r:   Ú_s	            r&   Ú_callzBedrock._call-  s‚   € ð, �>Š>ØˆJØ%˜Ÿ™ð Ø D°kñØEKô�ð ˜eŸj™jÑ(‘
ðð Ðà0�$×0Ñ0ð 
Ø °+ñ
ØAGñ
‰ˆˆað ˆr(   c                ó\   K  —  | j                   d|||dœ|¤Ž2 3 d{  –—† }|­–— Œ7 Œ
6 y­w)ad  Call out to Bedrock service with streaming.

        Args:
            prompt (str): The prompt to pass into the model
            stop (Optional[List[str]], optional): Stop sequences. These will
                override any stop sequences in the `model_kwargs` attribute.
                Defaults to None.
            run_manager (Optional[CallbackManagerForLLMRun], optional): Callback
                run managers used to process the output. Defaults to None.

        Yields:
            AsyncGenerator[GenerationChunk, None]: Generator that asynchronously yields
            the streamed responses.
        r  Nr“   )rô   )rµ   rO   rr   rÊ   rË   rw   s         r&   Ú_astreamzBedrock._astreamP  sF   è ø€ ð* B˜4×AÑAð 
Ø °+ñ
ØAGò
÷ 	�%ð ŒKð	øñ 
ùs   ‚,™*�(ž*¡,¨*ª,c              ‹   óÐ   K  — | j                   st        d«      ‚ | j                  d|||dœ|¤Ž2 �cg c3 d{  –—† }|j                  ‘Œ7 Œ6 nc c}w }}dj	                  |«      S ­w)am  Call out to Bedrock service model.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = await llm._acall("Tell me a joke.")
        z4Streaming must be set to True for async operations. r  Nr8   r“   )rŸ   r�   r  r:   Újoin)rµ   rO   rr   rÊ   rË   rw   Úchunkss          r&   Ú_acallzBedrock._acallj  s}   è ø€ ð, �~Š~ÜÐSÓTÐTð  -˜tŸ}™}ð  Ø D°kñ ØEKò ÷
ó 
àð �J‹Jð
øñ 
ùò 
ˆð 
ð �w‰w�v‹Ðùs0   ‚0A&²A´A¸A

¹A¼AÁ
AÁAÁA&r:   c                 óP   •— | j                   rt        |«      S t        ‰| �  |«      S r‹   )rÀ   r   rÿ   Úget_num_tokens©rµ   r:   r   s     €r&   r  zBedrock.get_num_tokens‹  s'   ø€ Ø×#Ò#Ü+¨DÓ1Ð1ä‘7Ñ)¨$Ó/Ð/r(   c                 óP   •— | j                   rt        |«      S t        ‰| �  |«      S r‹   )rÀ   r   rÿ   Úget_token_idsr  s     €r&   r!  zBedrock.get_token_ids‘  s'   ø€ Ø×#Ò#Ü*¨4Ó0Ð0ä‘7Ñ(¨Ó.Ð.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   r   r  r  rn   r  r!  Ú__classcell__)r   s   @r&   rý   rý   Ì  s&  ø„ ñðð ð4¨$ð 4°4ô 4ó ð4ð ð ˜3ò  ó ð ð ð 4ò ó ðð ð0  c¡ò 0ó ð0ð ð˜t C¨ H™~ò ó ðñ Øô€Lð %)Ø:>ñ	
àð
ð �t˜C‘yÑ!ð
ð Ð6Ñ7ð	
ð
 ð
ð 
�/Ñ	"ó
ð< %)Ø:>ñ	!àð!ð �t˜C‘yÑ!ð!ð Ð6Ñ7ð	!ð
 ð!ð 
ó!ðL %)Ø?Cñ	àðð �t˜C‘yÑ!ðð Ð;Ñ<ð	ð
 ðð 
˜¨Ð-Ñ	.óð: %)Ø?Cñ	àðð �t˜C‘yÑ!ðð Ð;Ñ<ð	ð
 ðð 
óðB0 3ð 0¨3õ 0ð/ #ð /¨$¨s©)÷ /ñ /r(   rý   )0rð   rj   r1   Úabcr   Útypingr   r   r   r   r   r	   r
   r   r   Úlangchain_core._api.deprecationr   Úlangchain_core.callbacksr   r   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   Úlangchain_core.utilsr   r   Úpydanticr   r   r   Úlangchain_community.llms.utilsr   Ú'langchain_community.utilities.anthropicr   r   rã   r‚   r.   r/   r3   r‘   r'   r4   rA   rC   r•   rý   r“   r(   r&   Ú<module>r-     sò   ðÛ Û Û Ý ÷
÷ 
õ 
õ 7÷õ 4Ý 2ß ?ß 1Ñ 1å >÷ð
 2Ð Ø:Ð Ø€Ø#Ð àMð ð
¨ð °ó ð¨ð °ó ð>Ø˜#˜s˜(‘^ðàó÷Dñ DôNb�)˜Sô bñJ Ø
˜EÐ6PôôF/ˆc�;ó F/óñF/r(   