Ë
    uPêjþ  ã                   ó„   — U d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZ  e«       Zeed<    G d	„ d
e
«      Zy)zC
Anthropic Token Counter implementation using the CountTokens API.
é    N)ÚAnyÚFinal)Úverbose_logger)ÚAnthropicCountTokensHandler)ÚBaseTokenCounter)ÚLlmProvidersÚTokenCountResponseÚanthropic_count_tokens_handlerc                   óº   — e Zd ZdZ	 ddedz  defd„Z	 	 	 	 ddedeeee	f      dz  deeee	f      dz  d	eee	f   dz  d
edeeee	f      dz  de	dz  de
dz  fd„Zy)ÚAnthropicTokenCounterzNToken counter implementation for Anthropic provider using the CountTokens API.NÚcustom_llm_providerÚreturnc                 ó<   — |t         j                  j                  k(  S ©N)r   Ú	ANTHROPICÚvalue)Úselfr   s     úv/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/anthropic/count_tokens/token_counter.pyÚshould_use_token_counting_apiz3AnthropicTokenCounter.should_use_token_counting_api   s   € ð #¤l×&<Ñ&<×&BÑ&BÑBÐBó    Úmodel_to_useÚmessagesÚcontentsÚ
deploymentÚrequest_modelÚtoolsÚsystemc              ƒ   ó¨  K  — ddl m} |sy|xs i }|j                  di «      }	|	j                  d«      }
|
st        j                  d«      }
|
st        j                  d«       y	 t        j                  |||
||¬«      ƒ d{  –—† }|� t        |j                  d	d«      ||d
|¬«      S 	 y7 Œ(# |$ r[}t        j                  d|j                  |j                  «       t        d||d
d|j                  |j                  ¬«      cY d}~S d}~wt        $ r;}t        j                  d|«       t        d||d
dt        |«      d¬«      cY d}~S d}~ww xY w­w)aã  
        Count tokens using Anthropic's CountTokens API.

        Args:
            model_to_use: The model identifier
            messages: The messages to count tokens for
            contents: Alternative content format (not used for Anthropic)
            deployment: Deployment configuration containing litellm_params
            request_model: The original request model name

        Returns:
            TokenCountResponse with token count, or None if counting fails
        r   )ÚAnthropicErrorNÚlitellm_paramsÚapi_keyÚANTHROPIC_API_KEYz-No Anthropic API key found for token counting)Úmodelr   r!   r   r   Úinput_tokensÚanthropic_api)Útotal_tokensr   Ú
model_usedÚtokenizer_typeÚoriginal_responsez6Anthropic CountTokens API error: status=%s, message=%sT)r&   r   r'   r(   ÚerrorÚerror_messageÚstatus_codez+Error calling Anthropic CountTokens API: %siô  )Ú#litellm.llms.anthropic.common_utilsr   ÚgetÚosÚgetenvr   Úwarningr
   Úhandle_count_tokens_requestr	   r,   ÚmessageÚ	ExceptionÚstr)r   r   r   r   r   r   r   r   r   r    r!   ÚresultÚes                r   Úcount_tokensz"AnthropicTokenCounter.count_tokens   ss  è ø€ õ. 	GáØàÒ% 2ˆ
Ø *§¡Ð/?ÀÓ Dˆð !×$Ñ$ YÓ/ˆÙÜ—i‘iÐ 3Ó4ˆGáÜ×"Ñ"Ð#RÔSØð&	Ü"@×"\Ñ"\Ø"Ø!ØØØð #]ó #÷ ˆFð Ð!Ü)Ø!'§¡¨N¸AÓ!>Ø"/Ø+Ø#2Ø&,ôð ð "ð> ðOùð  ò 
	Ü×"Ñ"Ð#[Ð]^×]jÑ]jÐlm×luÑluÔvÜ%ØØ+Ø'Ø.ØØŸi™iØŸM™Môõ ûô ò 
	Ü×"Ñ"Ð#PÐRSÔTÜ%ØØ+Ø'Ø.ØÜ! !›fØôõ ûð
	üsg   ‚A"EÁ%B- ÂB+Â%B- Â(EÂ*EÂ+B- Â-EÂ2ADÄEÄEÄEÄ0E
ÅEÅEÅ
EÅEr   )NÚ NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r5   Úboolr   ÚlistÚdictr   r	   r8   © r   r   r   r      sÞ   „ ÙXð +/ñCà  4™ZðCð 
óCð -1ØØ-1Ø!ñPàðPð �t˜C ˜H‘~Ñ&¨Ñ-ðPð �t˜C ˜H‘~Ñ&¨Ñ-ð	Pð
 ˜˜c˜‘N TÑ)ðPð ðPð �D˜˜c˜‘NÑ# dÑ*ðPð �d‘
ðPð 
˜dÑ	"ôPr   r   )r=   r/   Útypingr   r   Úlitellm._loggingr   Ú+litellm.llms.anthropic.count_tokens.handlerr   Ú litellm.llms.base_llm.base_utilsr   Úlitellm.types.utilsr   r	   r
   Ú__annotations__r   rA   r   r   ú<module>rH      s>   ðòó 
ß å +Ý SÝ =ß @ñ )DÓ(EÐ  Ó EôYÐ,õ Yr   