
    hr                         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?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                    |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       v/var/www/html/eduruby.in/venv/lib/python3.12/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                        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   s2   &(--- .((A-(. ))'2'OO,?C#;"~q9&&**:t<5'/

 ZZ 	*OOz)O--/""&77"$$)$	* 	*#.	* 	*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#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   rH   rK   rJ   r   r   r,   r   r   <module>rR      s     ) ) 8 , $* "/4161616/4.5-2-206"   $* "/4161616/4.5-2-205#  77+.7:?T	:J7
70I0C Ir   