
    Ng"                         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	Z
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?gMb?g~jth?gMb0?)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-haiku-20240307-v1:0ga2U0*c?g~jt?gQ?g{GzT?prompt_tokenscompletion_tokensmodel_idreturnc                     |t           vr@t          d| dd                    t                                                     z             | dz  t           |         z  |dz  t          |         z  z   S )z,Get the cost of tokens for the Claude model.zUnknown model: z@. Please provide a valid Anthropic model name.Known models are: z, i  )MODEL_COST_PER_1K_INPUT_TOKENS
ValueErrorjoinkeysMODEL_COST_PER_1K_OUTPUT_TOKENSr	   r
   r   s      t/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/callbacks/bedrock_anthropic_callback.py _get_anthropic_claude_token_costr      s     555!h ! ! !#'99-K-P-P-R-R#S#ST
 
 	
 D $B8$LLD '1P2 2 2    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__3   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__7   s^    4D- 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_verbose@   s	     tr   
serializedpromptskwargsc                     dS )zPrint out the prompts.Nr(   )r"   r*   r+   r,   s       r   on_llm_startz6BedrockAnthropicTokenUsageCallbackHandler.on_llm_startE   s	     	r   tokenc                     dS )zPrint out the token.Nr(   )r"   r/   r,   s      r   on_llm_new_tokenz:BedrockAnthropicTokenUsageCallbackHandler.on_llm_new_tokenK   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   )	
llm_outputr!   r   getr   r   r   r	   r
   )	r"   r2   r,   token_usager
   r	   r   r   r   s	            r   
on_llm_endz4BedrockAnthropicTokenUsageCallbackHandler.on_llm_endO   s   &4(--- . .((A-((. . . . . . . . . . . . . . .4 )'2'OO,?CC#;;"~q99&**:t<<5'/
 
 

 Z 	* 	*OOz)OO--/""&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__m       r   memoc                     | S )z+Return a deep copy of the callback handler.r(   )r"   r=   s     r   __deepcopy__z6BedrockAnthropicTokenUsageCallbackHandler.__deepcopy__q   r<   r   )r   N)r   r   )__name__
__module____qualname____doc__r   int__annotations__r	   r
   r   r   floatr   strr&   propertyboolr)   r   r   r   r.   r1   r   r9   r;   r?   __classcell__)r#   s   @r   r   r   *   s        >>L#M3s    J& & & & & &
# 
 
 
 
     XsCx.379HK	   c S T    *9 * * * * * *<    )T        r   r   )r   typingr   r   r   r   langchain_core.callbacksr   langchain_core.outputsr   r   r   rD   rG   rF   r   r   r(   r   r   <module>rN      s       ) ) ) ) ) ) ) ) ) ) ) ) 8 8 8 8 8 8 , , , , , , $* "/41616.5" "  $* "/41616.5# # 22+.2:?T	:J2
2 2 2 2I I I I I0C I I I I Ir   