Ë
    µŒjr  ã                   ó°   — 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
œZ
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y)é    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-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                 ó  — |r-|j                  d«      d   dz   |j                  d«      d   z   }nd }	 |t        vr3t        d|› d�dj                  t        j	                  «       «      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       ú‚/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/callbacks/bedrock_anthropic_callback.pyÚ _get_anthropic_claude_token_costr   &   s´   € ñ ð !Ÿ™ sÓ+¨BÑ/°#Ñ5¸¿¹ÀsÓ8KÈBÑ8OÑO‰àˆØ6ØÔ:Ñ:ÜØ˜h˜Zð (!ð !Ø#'§9¡9Ô-K×-PÑ-PÓ-RÓ#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                 óT   •— t         ‰| �  «        t        j                  «       | _        y )N)ÚsuperÚ__init__Ú	threadingÚLockÚ_lock)ÚselfÚ	__class__s    €r   r"   z2BedrockAnthropicTokenUsageCallbackHandler.__init__G   s   ø€ Ü‰ÑÔÜ—^‘^Ó%ˆ�
r   c           
      óˆ   — 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__K   s\   € à˜D×-Ñ-Ð.ð / Ø $× 2Ñ 2Ð3ð 4$Ø$(×$:Ñ$:Ð#;ð <$Ø$(×$<Ñ$<Ð#=ð >"Ø"&§/¡/Ð!2ð	4ð	
r   c                  ó   — y)z;Whether to call verbose callbacks even if verbose is False.T© r)   s    r   Úalways_verbosez8BedrockAnthropicTokenUsageCallbackHandler.always_verboseT   s   € ð r   Ú
serializedÚpromptsÚkwargsc                  ó   — y)zPrint out the prompts.Nr,   )r&   r.   r/   r0   s       r   Úon_llm_startz6BedrockAnthropicTokenUsageCallbackHandler.on_llm_startY   s   € ð 	r   Útokenc                  ó   — y)zPrint out the token.Nr,   )r&   r3   r0   s      r   Úon_llm_new_tokenz:BedrockAnthropicTokenUsageCallbackHandler.on_llm_new_token_   s   € àr   Úresponsec                 óš  — |j                   €yd|j                   vr+| j                  5  | xj                  dz  c_        ddd«       y|j                   d   }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                   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«       y# 1 sw Y   yxY w# 1 sw Y   yxY w)
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_endc   s"  € à×ÑÐ&Øà˜(×-Ñ-Ñ-Ø—“Ø×(Ò(¨AÑ-Õ(÷ àð ×)Ñ)¨'Ñ2ˆØ'ŸO™OÐ,?ÀÓCÐØ#Ÿ™¨¸Ó;ˆØ"—‘ ~°qÓ9ˆØ×&Ñ&×*Ñ*¨:°tÓ<ˆÜ5Ø'Ø/Øô
ˆ
ð �Z‹ZØ�OŠO˜zÑ)�OØ×Ò Ñ-ÕØ×Ò -Ñ/ÕØ×"Ò"Ð&7Ñ7Õ"Ø×$Ò$¨Ñ)Õ$÷ ˆZ÷# àú÷ ˆZús   ¨D5ÃA*EÄ5D>ÅE
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�Óõ&ð
˜#ó 
ð ð ò ó ððØ˜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      s­   ðÛ ß )Ó )å 8Ý ,ð $*Ø Ø"Ø/4Ø16Ø16Ø16Ø/4Ø.5Ø-2Ø-2Ø06ñ"Ð ð  $*Ø Ø"Ø/4Ø16Ø16Ø16Ø/4Ø.5Ø-2Ø-2Ø05ñ#Ð ð 7Øð7Ø+.ð7Ø:?ÀÀTÀ	Ñ:Jð7à
ó7ô0IÐ0Cõ Ir   