
    Ig"                         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y)    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r3t        d| ddj                  t         j                               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      u/var/www/html/answerous/venv/lib/python3.12/site-packages/langchain_community/callbacks/bedrock_anthropic_callback.py _get_anthropic_claude_token_costr      s|     55hZ (! !#'99-K-P-P-R#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                 T    t         |           t        j                         | _        y )N)super__init__	threadingLock_lock)self	__class__s    r   r   z2BedrockAnthropicTokenUsageCallbackHandler.__init__3   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__7   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_verbose@   s     r   
serializedpromptskwargsc                      y)zPrint out the prompts.Nr(   )r"   r*   r+   r,   s       r   on_llm_startz6BedrockAnthropicTokenUsageCallbackHandler.on_llm_startE   s     	r   tokenc                      y)zPrint out the token.Nr(   )r"   r/   r,   s      r   on_llm_new_tokenz:BedrockAnthropicTokenUsageCallbackHandler.on_llm_new_tokenK   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   )	
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   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__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&
# 
   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 , $* "/41616.5"  $* "/41616.5# 22+.2:?T	:J2
2I0C Ir   