Ë
    uPêj  ã                   óv   — d Z ddl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}
OpenAI Responses API token counting handler.

Uses httpx for HTTP requests to OpenAI's /v1/responses/input_tokens endpoint.
é    N)ÚAnyÚFinal)Úverbose_logger)Úget_async_httpx_client)ÚOpenAIError)ÚOpenAICountTokensConfigc                   óš   — e Zd ZdZ	 	 	 	 ddedeee   z  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)ÚOpenAICountTokensHandlerzC
    Handler for OpenAI Responses API token counting requests.
    NÚmodelÚinputÚapi_keyÚapi_baseÚtimeoutÚtoolsÚinstructionsÚreturnc              ƒ   óD  K  — 	 | j                  ||«       t        j                  d|«       | j                  ||||¬«      }| 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"        j(                  t         j*                  t,        f$ r+}t        j                  d|«       t        dd|› �¬
«      ‚d}~ww xY w­w)zÞ
        Handle a token counting request to OpenAI's Responses API.

        Returns:
            Dictionary containing {"input_tokens": <number>}

        Raises:
            OpenAIError: If the API request fails
        z3Processing OpenAI CountTokens request for model: %s)r   r   r   r   zMaking request to: %s)Úllm_providerN)ÚheadersÚjsonr   zResponse status: %séÈ   zOpenAI API error: %s)Ústatus_codeÚmessagezOpenAI 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_openai_count_tokens_endpointÚget_required_headersr   ÚlitellmÚLlmProvidersÚOPENAIÚrequest_timeoutÚpostr   ÚtextÚerrorr   r   ÚhttpxÚHTTPStatusErrorÚresponseÚRequestErrorÚJSONDecodeErrorÚ
ValueError)Úselfr   r   r   r   r   r   r   Úrequest_bodyÚendpoint_urlr   Úasync_clientr"   r(   Ú
error_textÚopenai_responseÚes                    úw/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/openai/responses/count_tokens/handler.pyÚhandle_count_tokens_requestz4OpenAICountTokensHandler.handle_count_tokens_request   sô  è ø€ ð&8	Ø×!Ñ! %¨Ô/ä× Ñ Ð!VÐX]Ô^à"&×"HÑ"HØØØØ)ð	 #Ió #ˆLð #'×"GÑ"GÈÓ"QˆLä× Ñ Ð!8¸,ÔGà!×6Ñ6°wÓ?ˆGä"8Äg×FZÑFZ×FaÑFaÔ"bˆLà07Ð0C¡WÌ×I`ÑI`ˆOà$0×$5Ñ$5ØØØ!Ø'ð	 %6ó %÷ ˆHô × Ñ Ð!6¸×8LÑ8LÔMà×#Ñ# sÒ*Ø$,§M¡M�
Ü×$Ñ$Ð%;¸ZÔHÜ!Ø (× 4Ñ 4Ø&ôð ð
 &.§]¡]£_ˆOÜ× Ñ Ð!6¸ÔHØ"Ð"ð'ùô* ò 	ØÜ×$Ñ$ò 	Ü× Ñ Ð!HÈ!ÔLÜØŸJ™J×2Ñ2ØŸ
™
Ÿ™ôð ûô ×"Ñ"¤D×$8Ñ$8¼*ÐEò 	Ü× Ñ Ð!CÀQÔGÜØØ8¸¸Ð<ôð ûð	üsI   ‚H „CE  Ã	EÃ
BE  ÅH ÅE  Å HÅ<AGÇ+HÇ2&HÈHÈH )NNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚlistr   Úfloatr&   ÚTimeoutÚdictr4   © ó    r3   r
   r
      s©   „ ñð  $Ø04Ø-1Ø#'ñKàðKð �T˜#‘Y‰ðKð ð	Kð
 ˜‘*ðKð ˜Ÿ™Ñ&¨Ñ-ðKð �D˜˜c˜‘NÑ# dÑ*ðKð ˜D‘jðKð 
ˆc�3ˆh‰ôKr?   r
   )r8   r   Útypingr   r   r&   r   Úlitellm._loggingr   Ú&litellm.llms.custom_httpx.http_handlerr   Ú litellm.llms.openai.common_utilsr   Ú9litellm.llms.openai.responses.count_tokens.transformationr   r
   r>   r?   r3   ú<module>rE      s5   ðñó ß ã ã Ý +Ý IÝ 8õô
PÐ6õ Pr?   