§
    šŠtjâ  ã                   óÂ   — d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	 ddddddddddd	d	dd
œZ
dddd	d	d	d	d	d	ddddd
œZdededeedf         defd„Z G d„ de¦  «        ZdS )é    N)ÚAnyÚDictÚListÚUnion)ÚBaseCallbackHandler)Ú	LLMResultg-Cëâ6J?gü©ñÒMb€?gú~j¼t“h?gü©ñÒMb0?g¸…ëQ¸Ž?)zanthropic.claude-instant-v1zanthropic.claude-v2zanthropic.claude-v2:1z'anthropic.claude-3-sonnet-20240229-v1:0z)anthropic.claude-3-5-sonnet-20240620-v1:0z)anthropic.claude-3-5-sonnet-20241022-v2:0z)anthropic.claude-3-7-sonnet-20250219-v1:0z'anthropic.claude-sonnet-4-20250514-v1:0z)anthropic.claude-sonnet-4-5-20250929-v1:0z&anthropic.claude-3-haiku-20240307-v1:0z%anthropic.claude-3-opus-20240229-v1:0z%anthropic.claude-opus-4-20250514-v1:0z(anthropic.claude-3-5-haiku-20241022-v1:0ga2U0*©c?gú~j¼t“˜?g{®GázT?g333333³?gü©ñÒMbp?Úprompt_tokensÚcompletion_tokensÚmodel_idÚreturnc                 ób  — |r;|                      d¦  «        d         dz   |                      d¦  «        d         z   }nd }	 |t          vr@t          d|› d�d                     t                               ¦   «         ¦  «        z   ¦  «        ‚| dz  t          |         z  |dz  t
          |         z  z   S )Nú.éþÿÿÿéÿÿÿÿzUnknown model: z@. Please provide a valid Anthropic model name.Known models are: z, iè  )ÚsplitÚMODEL_COST_PER_1K_INPUT_TOKENSÚ
ValueErrorÚjoinÚkeysÚMODEL_COST_PER_1K_OUTPUT_TOKENS)r	   r
   r   Úbase_model_ids       úv/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/callbacks/bedrock_anthropic_callback.pyÚ _get_anthropic_claude_token_costr   (   sÔ   € ð ð 	ð !Ÿš sÑ+Ô+¨BÔ/°#Ñ5¸¿ºÀsÑ8KÔ8KÈBÔ8OÑOˆˆàˆØ6ØÕ:Ð:Ð:Ýð!˜hð !ð !ð !Ø#'§9¢9Õ-K×-PÒ-PÑ-RÔ-RÑ#SÔ#SñTñ
ô 
ð 	
ð ˜DÑ Õ$BÀ=Ô$QÑQØ˜DÑ Ý'¨Ô6ñU7ñ 7ð 7ó    c                   ó  ‡ — e Zd ZU dZdZeed<   dZeed<   dZeed<   dZ	eed<   dZ
eed<   dˆ fd„Zd	efd„Zed	efd„¦   «         Zdeeef         dee         ded	d
fd„Zdeded	d
fd„Zdeded	d
fd„Zdd„Zded	d fd„Zˆ xZS )Ú)BedrockAnthropicTokenUsageCallbackHandlerz4Callback Handler that tracks bedrock anthropic info.r   Útotal_tokensr	   r
   Úsuccessful_requestsg        Ú
total_costr   Nc                 óx   •— t          ¦   «                              ¦   «          t          j        ¦   «         | _        d S )N)ÚsuperÚ__init__Ú	threadingÚLockÚ_lock)ÚselfÚ	__class__s    €r   r"   z2BedrockAnthropicTokenUsageCallbackHandler.__init__I   s,   ø€ Ý‰Œ×ÒÑÔÐÝ”^Ñ%Ô%ˆŒ
ˆ
ˆ
r   c           
      óV   — d| j         › d| j        › d| j        › d| j        › d| j        › �
S )NzTokens Used: z
	Prompt Tokens: z
	Completion Tokens: z
Successful Requests: z
Total Cost (USD): $)r   r	   r
   r   r   ©r&   s    r   Ú__repr__z2BedrockAnthropicTokenUsageCallbackHandler.__repr__M   s^   € ð4˜DÔ-ð 4ð 4Ø $Ô 2ð4ð 4à$(Ô$:ð4ð 4ð %)Ô$<ð4ð 4ð #'¤/ð	4ð 4ð	
r   c                 ó   — dS )z;Whether to call verbose callbacks even if verbose is False.T© r)   s    r   Úalways_verbosez8BedrockAnthropicTokenUsageCallbackHandler.always_verboseV   s	   € ð ˆtr   Ú
serializedÚpromptsÚkwargsc                 ó   — dS )zPrint out the prompts.Nr,   )r&   r.   r/   r0   s       r   Úon_llm_startz6BedrockAnthropicTokenUsageCallbackHandler.on_llm_start[   s	   € ð 	ˆr   Útokenc                 ó   — dS )zPrint out the token.Nr,   )r&   r3   r0   s      r   Úon_llm_new_tokenz:BedrockAnthropicTokenUsageCallbackHandler.on_llm_new_tokena   s   € àˆr   Úresponsec                 ód  — |j         €dS d|j         vr1| j        5  | xj        dz  c_        ddd¦  «         n# 1 swxY w Y   dS |j         d         }|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }|j                              dd¦  «        }t	          |||¬	¦  «        }| j        5  | xj        |z  c_        | xj        |z  c_        | xj        |z  c_        | xj        |z  c_        | xj        dz  c_        ddd¦  «         dS # 1 swxY w Y   dS )
zCollect token usage.NÚusageé   r
   r   r	   r   r   )r	   r
   r   )	Ú
llm_outputr%   r   Úgetr   r   r   r	   r
   )	r&   r6   r0   Útoken_usager
   r	   r   r   r   s	            r   Ú
on_llm_endz4BedrockAnthropicTokenUsageCallbackHandler.on_llm_ende   sâ  € àÔÐ&Ø�4à˜(Ô-Ð-Ð-Ø”ð .ð .ØÐ(Ô(¨AÑ-Ð(Ô(ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .à�4ð Ô)¨'Ô2ˆØ'ŸOšOÐ,?ÀÑCÔCÐØ#Ÿš¨¸Ñ;Ô;ˆØ"—’ ~°qÑ9Ô9ˆØÔ&×*Ò*¨:°tÑ<Ô<ˆÝ5Ø'Ø/Øð
ñ 
ô 
ˆ
ð ŒZð 	*ð 	*ØˆOŒO˜zÑ)ˆOŒOØÐÔ Ñ-ÐÔØÐÔ -Ñ/ÐÔØÐ"Ô"Ð&7Ñ7Ð"Ô"ØÐ$Ô$¨Ñ)Ð$Ô$ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s   š7·;¾;ÃAD%Ä%D)Ä,D)c                 ó   — | S )z&Return a copy of the callback handler.r,   r)   s    r   Ú__copy__z2BedrockAnthropicTokenUsageCallbackHandler.__copy__ƒ   ó   € àˆr   Úmemoc                 ó   — | S )z+Return a deep copy of the callback handler.r,   )r&   rA   s     r   Ú__deepcopy__z6BedrockAnthropicTokenUsageCallbackHandler.__deepcopy__‡   r@   r   )r   N)r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚintÚ__annotations__r	   r
   r   r   Úfloatr"   Ústrr*   ÚpropertyÚboolr-   r   r   r   r2   r5   r   r=   r?   rC   Ú__classcell__)r'   s   @r   r   r   @   s¢  ø€ € € € € € Ø>Ð>à€L�#ÐÐÑØ€M�3ÐÐÑØÐ�sÐÐÑØ Ð˜Ð Ð Ñ Ø€J�ÐÐÑð&ð &ð &ð &ð &ð &ð
˜#ð 
ð 
ð 
ð 
ð ð ð ð ð ñ „XððØ˜s C˜xœ.ðØ37¸´9ðØHKðà	ðð ð ð ð cð °Sð ¸Tð ð ð ð ð* 9ð *¸ð *Àð *ð *ð *ð *ð<ð ð ð ð ð Ð)Tð ð ð ð ð ð ð ð r   r   )r#   Útypingr   r   r   r   Úlangchain_core.callbacksr   Úlangchain_core.outputsr   r   r   rH   rK   rJ   r   r   r,   r   r   ú<module>rR      sA  ðØ Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð $*Ø Ø"Ø/4Ø16Ø16Ø16Ø/4Ø16Ø.5Ø-2Ø-2Ø06ð"ð "Ð ð" $*Ø Ø"Ø/4Ø16Ø16Ø16Ø/4Ø16Ø.5Ø-2Ø-2Ø05ð#ð #Ð ð"7Øð7Ø+.ð7Ø:?ÀÀTÀ	Ô:Jð7à
ð7ð 7ð 7ð 7ð0Ið Ið Ið Ið IÐ0Cñ Iô Ið Ið Ið Ir   