
    dhr                         S SK r S SKJrJrJrJr  S SKJr  S SKJ	r	  SSSSSSSSSS	S	SS
.r
SSSS	S	S	S	S	SSSSS
.rS\S\S\\S4   S\4S jr " S S\5      rg)    N)AnyDictListUnion)BaseCallbackHandler)	LLMResultg-C6J?gMb?g~jth?gMb0?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~jt?g{GzT?g333333?gMbp?prompt_tokenscompletion_tokensmodel_idreturnc                 (   U(       a-  UR                  S5      S   S-   UR                  S5      S   -   nOS n U[        ;  a3  [        SU S3SR                  [        R	                  5       5      -   5      eU S-  [        U   -  US-  [
        U   -  -   $ )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       p/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/callbacks/bedrock_anthropic_callback.py _get_anthropic_claude_token_costr   &   s      !s+B/#5s8KB8OO6::hZ (! !#'99-K-P-P-R#ST
 	
 D $B=$QQD '6U7 7 7    c                     ^  \ rS rSr% SrSr\\S'   Sr\\S'   Sr	\\S'   Sr
\\S'   Sr\\S	'   SU 4S jjrS
\4S jr\S
\4S j5       rS\\\4   S\\   S\S
S4S jrS\S\S
S4S jrS\S\S
S4S jrSS jrS\S
S 4S jrSrU =r$ ))BedrockAnthropicTokenUsageCallbackHandler>   z4Callback Handler that tracks bedrock anthropic info.r   total_tokensr	   r
   successful_requestsg        
total_costr   Nc                 V   > [         TU ]  5         [        R                  " 5       U l        g )N)super__init__	threadingLock_lock)self	__class__s    r   r#   2BedrockAnthropicTokenUsageCallbackHandler.__init__G   s    ^^%
r   c           
          SU R                    SU R                   SU R                   SU R                   SU R                   3
$ )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__2BedrockAnthropicTokenUsageCallbackHandler.__repr__K   s\    D--. /  $ 2 23 4$$($:$:#; <$$($<$<#= >""&//!2	4	
r   c                     g)z;Whether to call verbose callbacks even if verbose is False.T r+   s    r   always_verbose8BedrockAnthropicTokenUsageCallbackHandler.always_verboseT   s     r   
serializedpromptskwargsc                     g)zPrint out the prompts.Nr/   )r'   r2   r3   r4   s       r   on_llm_start6BedrockAnthropicTokenUsageCallbackHandler.on_llm_startY   s     	r   tokenc                     g)zPrint out the token.Nr/   )r'   r8   r4   s      r   on_llm_new_token:BedrockAnthropicTokenUsageCallbackHandler.on_llm_new_token_   s    r   responsec                    UR                   c  gSUR                   ;  a+  U R                     U =R                  S-  sl        SSS5        gUR                   S   nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                   R                  SS5      n[	        UUUS	9nU R                     U =R
                  U-  sl        U =R                  U-  sl        U =R                  U-  sl        U =R                  U-  sl        U =R                  S-  sl        SSS5        g! , (       d  f       g= f! , (       d  f       g= f)
zCollect token usage.Nusage   r
   r   r	   r   r   )r	   r
   r   )	
llm_outputr&   r   getr   r    r   r	   r
   )	r'   r<   r4   token_usager
   r	   r   r   r    s	            r   
on_llm_end4BedrockAnthropicTokenUsageCallbackHandler.on_llm_endc   s$   &(---((A-(  ))'2'OO,?C#;"~q9&&**:t<5'/

 ZZOOz)O--/""&77"$$)$ Z#  Zs   D5A*E5
E
Ec                     U $ )z&Return a copy of the callback handler.r/   r+   s    r   __copy__2BedrockAnthropicTokenUsageCallbackHandler.__copy__       r   memoc                     U $ )z+Return a deep copy of the callback handler.r/   )r'   rI   s     r   __deepcopy__6BedrockAnthropicTokenUsageCallbackHandler.__deepcopy__   rH   r   )r&   )r   N)r   r   )__name__
__module____qualname____firstlineno____doc__r   int__annotations__r	   r
   r   r    floatr#   strr,   propertyboolr0   r   r   r   r6   r:   r   rC   rF   rK   __static_attributes____classcell__)r(   s   @r   r   r   >   s    >L#M3s  J&
# 
   sCx.379HK	c S T *9 * * *< )T  r   r   )r$   typingr   r   r   r   langchain_core.callbacksr   langchain_core.outputsr   r   r   rR   rU   rT   r   r   r/   r   r   <module>r]      s     ) ) 8 , $* "/4161616/4.5-2-206"   $* "/4161616/4.5-2-205#  77+.7:?T	:J7
70I0C Ir   