Ë
    uPêj”  ã                   ón   — d Z ddlmZmZ ddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ  G d„ d	e«      Zy)
z`
Anthropic CountTokens API handler.

Uses httpx for HTTP requests instead of the Anthropic SDK.
é    )ÚAnyÚFinalN)Úverbose_logger)ÚAnthropicError)ÚAnthropicCountTokensConfig)Úget_async_httpx_clientc                   óž   — e Zd ZdZ	 	 	 	 ddedeeeef      dededz  dee	j                  z  dz  deeeef      dz  d	edz  d
eeef   fd„Zy)ÚAnthropicCountTokensHandlerz•
    Handler for Anthropic CountTokens API requests.

    Uses httpx for HTTP requests, following the same pattern as BedrockCountTokensHandler.
    NÚmodelÚmessagesÚapi_keyÚapi_baseÚtimeoutÚtoolsÚsystemÚreturnc              ƒ   ó8  K  — 	 | j                  ||«       t        j                  d|«       | j                  ||||¬«      }t        j                  d|«       |xs | j	                  «       }	t        j                  d|	«       | j                  |«      }
t        t        j                  j                  ¬«      }|�|nt        j                  }|j                  |	|
||¬«      ƒ d{  –—† }t        j                  d|j                  «       |j                  d	k7  r9|j                  }t        j                  d
|«       t        |j                  |¬«      ‚|j!                  «       }t        j                  d|«       |S 7 Œ”# t        $ r ‚ t"        j$                  $ rP}t        j                  d|«       t        |j&                  j                  |j&                  j                  ¬«      ‚d}~wt(        $ r+}t        j                  d|«       t        dd|› �¬«      ‚d}~ww xY w­w)a  
        Handle a CountTokens request using httpx.

        Args:
            model: The model identifier (e.g., "claude-3-5-sonnet-20241022")
            messages: The messages to count tokens for
            api_key: The Anthropic API key
            api_base: Optional custom API base URL
            timeout: Optional timeout for the request (defaults to litellm.request_timeout)

        Returns:
            Dictionary containing token count response

        Raises:
            AnthropicError: If the API request fails
        z6Processing Anthropic CountTokens request for model: %s)r   r   r   r   zTransformed request: %szMaking request to: %s)Úllm_providerN)ÚheadersÚjsonr   zResponse status: %séÈ   zAnthropic API error: %s)Ústatus_codeÚmessagezAnthropic response: %sz%HTTP error in CountTokens handler: %sz Error in CountTokens handler: %siô  zCountTokens processing error: )Úvalidate_requestr   ÚdebugÚ!transform_request_to_count_tokensÚ#get_anthropic_count_tokens_endpointÚget_required_headersr   ÚlitellmÚLlmProvidersÚ	ANTHROPICÚrequest_timeoutÚpostr   ÚtextÚerrorr   r   ÚhttpxÚHTTPStatusErrorÚresponseÚ	Exception)Úselfr   r   r   r   r   r   r   Úrequest_bodyÚendpoint_urlr   Úasync_clientr"   r(   Ú
error_textÚanthropic_responseÚes                    úp/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/anthropic/count_tokens/handler.pyÚhandle_count_tokens_requestz7AnthropicCountTokensHandler.handle_count_tokens_request   s  è ø€ ð4E	à×!Ñ! %¨Ô2ä× Ñ Ð!YÐ[`Ôað #'×"HÑ"HØØ!ØØð	 #Ió #ˆLô × Ñ Ð!:¸LÔIð #+Ò"X¨d×.VÑ.VÓ.XˆLä× Ñ Ð!8¸,ÔGð "×6Ñ6°wÓ?ˆGô #9Äg×FZÑFZ×FdÑFdÔ"eˆLð 18Ð0C¡WÌ×I`ÑI`ˆOà$0×$5Ñ$5ØØØ!Ø'ð	 %6ó %÷ ˆHô × Ñ Ð!6¸×8LÑ8LÔMà×#Ñ# sÒ*Ø$,§M¡M�
Ü×$Ñ$Ð%>À
ÔKÜ$Ø (× 4Ñ 4Ø&ôð ð
 )1¯©«Ðä× Ñ Ð!9Ð;MÔNð &Ð%ð-ùô0 ò 	àÜ×$Ñ$ò 	ä× Ñ Ð!HÈ!ÔLÜ ØŸJ™J×2Ñ2ØŸ
™
Ÿ™ôð ûô ò 	Ü× Ñ Ð!CÀQÔGÜ ØØ8¸¸Ð<ôð ûð	üsI   ‚H„CE9 Ã"E7Ã#BE9 Å6HÅ7E9 Å9HÆAG Ç HÇ,&HÈHÈH)NNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚlistÚdictr   Úfloatr&   ÚTimeoutr2   © ó    r1   r
   r
      s®   „ ñð  $Ø04Ø-1Ø!ñ_àð_ð �t˜C ˜H‘~Ñ&ð_ð ð	_ð
 ˜‘*ð_ð ˜Ÿ™Ñ&¨Ñ-ð_ð �D˜˜c˜‘NÑ# dÑ*ð_ð �d‘
ð_ð 
ˆc�3ˆh‰ô_r=   r
   )r6   Útypingr   r   r&   r   Úlitellm._loggingr   Ú#litellm.llms.anthropic.common_utilsr   Ú2litellm.llms.anthropic.count_tokens.transformationr   Ú&litellm.llms.custom_httpx.http_handlerr   r
   r<   r=   r1   ú<module>rC      s5   ðñ÷ ã ã Ý +Ý >õõ JôfÐ"<õ fr=   