
    j                     V    d dl mZmZmZmZmZ ddlmZ  G d dej                        Z	y)    )AnyDictListOptionalTuple   )base_original_provider_usagec                        e Zd ZU dZeed<   	 eed<   	 dZee   ed<   	 dZee   ed<   	 dZ	ee
eeef         ed<   	 deeef   fd	Zd
edeeef   f fdZedeeef   dd fd       Z xZS )AnthropicUsagez4Anthropic calls token usage data. Updated 11.03.2025input_tokensoutput_tokensNcache_creation_input_tokenscache_read_input_tokens
iterationsreturnc                    | j                   r<t        d | j                   D              }t        d | j                   D              }||fS | j                  | j                  xs dz   | j                  xs dz   | j
                  fS )aK  Return (prompt_tokens, completion_tokens) reflecting true billed cost.

        When compaction fires, top-level input_tokens/output_tokens exclude the
        compaction iteration. Summing all iterations gives the correct total.
        https://platform.claude.com/docs/en/build-with-claude/compaction#understanding-usage
        c              3      K   | ]H  }|j                  d d      xs d|j                  dd      xs dz   |j                  dd      xs dz    J yw)r   r   r   r   Nget.0its     w/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/llm_usage/anthropic_usage.py	<genexpr>z5AnthropicUsage.get_billable_tokens.<locals>.<genexpr>   s_       *B */a663Q7<1>667;@qB *s   AAc              3   H   K   | ]  }|j                  d d      xs d  yw)r   r   Nr   r   s     r   r   z5AnthropicUsage.get_billable_tokens.<locals>.<genexpr>%   s$     WRVVOQ7<1<s    "r   )r   sumr   r   r   r   )selfprompt
completions      r   get_billable_tokensz"AnthropicUsage.get_billable_tokens   s     ??  //	 F WtWWJ:%%
 ++0q2//416 	
 	
    parent_key_prefixc                 "    t         |   |      S )N)superto_backend_compatible_flat_dict)r   r"   	__class__s     r   r%   z.AnthropicUsage.to_backend_compatible_flat_dict1   s    w67HIIr!   usagec                      | di |S )N r)   )clsr'   s     r   from_original_usage_dictz'AnthropicUsage.from_original_usage_dict4   s    |U|r!   )__name__
__module____qualname____doc__int__annotations__r   r   r   r   r   r   strr   r   r    r%   classmethodr+   __classcell__)r&   s   @r   r   r      s    >5615#5D-1Xc]1915Jd38n-.5O
U38_ 
4J JcSVh J T#s(^ @P  r!   r   N)
typingr   r   r   r   r    r	   BaseOriginalProviderUsager   r)   r!   r   <module>r8      s!    3 3 *11KK 1r!   