§
    æ˜ºh¼  ã                   óÚ   — d dl mZ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mZ d dlmZmZ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  G d„ d¦  «        Z G d„ de	e¦  «        ZdS )é    )ÚAnyÚDictÚIteratorÚListÚOptional)ÚCallbackManagerForLLMRun)ÚBaseChatModel)Ú	AIMessageÚAIMessageChunkÚBaseMessage)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)ÚExtra)Ú$convert_messages_to_prompt_anthropic)Ú convert_messages_to_prompt_llama)ÚBedrockBase)Úget_num_tokens_anthropicÚget_token_ids_anthropicc                   óB   — e Zd ZdZededee         defd„¦   «         ZdS )ÚChatPromptAdapterzeAdapter class to prepare the inputs from Langchain to prompt format
    that Chat model expects.
    ÚproviderÚmessagesÚreturnc                 óˆ   — |dk    rt          |¬¦  «        }n*|dk    rt          |¬¦  «        }nt          d|› d�¦  «        ‚|S )NÚ	anthropic)r   Úmetaz	Provider z model does not support chat.)r   r   ÚNotImplementedError)Úclsr   r   Úprompts       úo/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/chat_models/bedrock.pyÚconvert_messages_to_promptz,ChatPromptAdapter.convert_messages_to_prompt   se   € ð �{Ò"Ð"Ý9À8ÐLÑLÔLˆFˆFØ˜ÒÐÝ5¸xÐHÑHÔHˆFˆFå%ØC˜HÐCÐCÐCñô ð ð ˆó    N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚstrr   r   r"   © r#   r!   r   r      s[   € € € € € ðð ð ðØðØ&*¨;Ô&7ðà	ðð ð ñ „[ðð ð r#   r   c                   ó¢  ‡ — e Zd Z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 G d„ d¦  «        Z	 	 dd
e
e         dee
e                  dee         dedee         f
d„Z	 	 dd
e
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 )ÚBedrockChatz'A chat model that uses the Bedrock API.r   c                 ó   — dS )zReturn type of chat model.Úamazon_bedrock_chatr*   )Úselfs    r!   Ú	_llm_typezBedrockChat._llm_type-   s
   € ð %Ð$r#   c                 ó   — dS )z9Return whether this model can be serialized by Langchain.Tr*   ©r   s    r!   Úis_lc_serializablezBedrockChat.is_lc_serializable2   s	   € ð ˆtr#   c                 ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚchat_modelsÚbedrockr*   r2   s    r!   Úget_lc_namespacezBedrockChat.get_lc_namespace7   s   € ð 7Ð6Ð6Ð6r#   c                 ó,   — i }| j         r
| j         |d<   |S )NÚregion_name)r:   )r/   Ú
attributess     r!   Úlc_attributeszBedrockChat.lc_attributes<   s%   € à%'ˆ
àÔð 	9Ø(,Ô(8ˆJ�}Ñ%àÐr#   c                   ó    — e Zd ZdZej        ZdS )úBedrockChat.Configz'Configuration for this pydantic object.N)r$   r%   r&   r'   r   ÚforbidÚextrar*   r#   r!   ÚConfigr>   E   s   € € € € € Ø5Ð5à”ˆˆˆr#   rA   Nr   ÚstopÚrun_managerÚkwargsc              +   óà   K  — |                       ¦   «         }t                               ||¬¦  «        } | j        d|||dœ|¤ŽD ])}|j        }t          t          |¬¦  «        ¬¦  «        V — Œ*d S )N©r   r   ©r    rB   rC   ©Úcontent©Úmessager*   )Ú_get_providerr   r"   Ú _prepare_input_and_invoke_streamÚtextr   r   )	r/   r   rB   rC   rD   r   r    ÚchunkÚdeltas	            r!   Ú_streamzBedrockChat._streamJ   s­   è è € ð ×%Ò%Ñ'Ô'ˆÝ"×=Ò=Ø¨ð >ñ 
ô 
ˆð ;�TÔ:ð 
Ø °+ð
ð 
ØAGð
ð 
ð 	Mð 	MˆEð ”JˆEÝ%­nÀUÐ.KÑ.KÔ.KÐLÑLÔLÐLÐLÐLÐLð		Mð 	Mr#   c                 óF  — d}| j         r | j        |||fi |¤ŽD ]}||j        z  }ŒnL|                      ¦   «         }t                               ||¬¦  «        }i |¥}	|r||	d<    | j        d|||dœ|	¤Ž}t          |¬¦  «        }
t          t          |
¬¦  «        g¬¦  «        S )	NÚ rF   Ústop_sequencesrG   rH   rJ   )Úgenerationsr*   )
Ú	streamingrQ   rN   rL   r   r"   Ú_prepare_input_and_invoker
   r   r   )r/   r   rB   rC   rD   Ú
completionrO   r   r    ÚparamsrK   s              r!   Ú	_generatezBedrockChat._generate\   sü   € ð ˆ
àŒ>ð 	Ø%˜œ h°°kÐLÐLÀVÐLÐLð )ð )�Ø˜eœjÑ(�
�
ð)ð ×)Ò)Ñ+Ô+ˆHÝ&×AÒAØ!¨Hð Bñ ô ˆFð &0¨ ZˆFØð 0Ø+/�Ð'Ñ(à7˜Ô7ð Ø D°kðð ØEKðð ˆJõ  JÐ/Ñ/Ô/ˆÝ¥~¸gÐ'FÑ'FÔ'FÐ&GÐHÑHÔHÐHr#   rN   c                 ór   •— | j         rt          |¦  «        S t          ¦   «                              |¦  «        S ©N)Ú_model_is_anthropicr   ÚsuperÚget_num_tokens©r/   rN   Ú	__class__s     €r!   r_   zBedrockChat.get_num_tokensy   s4   ø€ ØÔ#ð 	0Ý+¨DÑ1Ô1Ð1å‘7”7×)Ò)¨$Ñ/Ô/Ð/r#   c                 ór   •— | j         rt          |¦  «        S t          ¦   «                              |¦  «        S r\   )r]   r   r^   Úget_token_idsr`   s     €r!   rc   zBedrockChat.get_token_ids   s4   ø€ ØÔ#ð 	/Ý*¨4Ñ0Ô0Ð0å‘7”7×(Ò(¨Ñ.Ô.Ð.r#   )NN)r$   r%   r&   r'   Úpropertyr)   r0   r(   Úboolr3   r   r8   r   r   r<   rA   r   r   r   r   r   rQ   r   rZ   Úintr_   rc   Ú__classcell__)ra   s   @r!   r,   r,   *   s3  ø€ € € € € Ø1Ð1àð%˜3ð %ð %ð %ñ „Xð%ð ð 4ð ð ð ñ „[ðð ð7  c¤ð 7ð 7ð 7ñ „[ð7ð ð˜t C¨ Hœ~ð ð ð ñ „Xððð ð ð ð ñ ô ð ð %)Ø:>ð	Mð Mà�{Ô#ðMð �t˜C”yÔ!ðMð Ð6Ô7ð	Mð
 ðMð 
Ð%Ô	&ðMð Mð Mð Mð* %)Ø:>ð	Ið Ià�{Ô#ðIð �t˜C”yÔ!ðIð Ð6Ô7ð	Ið
 ðIð 
ðIð Ið Ið Ið:0 3ð 0¨3ð 0ð 0ð 0ð 0ð 0ð 0ð/ #ð /¨$¨s¬)ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /r#   r,   N)Útypingr   r   r   r   r   Úlangchain_core.callbacksr   Ú*langchain_core.language_models.chat_modelsr	   Úlangchain_core.messagesr
   r   r   Úlangchain_core.outputsr   r   r   Úlangchain_core.pydantic_v1r   Ú)langchain_community.chat_models.anthropicr   Ú$langchain_community.chat_models.metar   Ú langchain_community.llms.bedrockr   Ú'langchain_community.utilities.anthropicr   r   r   r,   r*   r#   r!   ú<module>rr      s…  ðØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð EÐ DÐ DÐ DÐ DÐ DØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð RÐ QÐ QÐ QÐ QÐ QØ 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ðð ð ð ð ñ ô ð ð(Y/ð Y/ð Y/ð Y/ð Y/�- ñ Y/ô Y/ð Y/ð Y/ð Y/r#   