
    j                         d dl Z d dlmZmZmZ ddlmZ  G d dej                        Z G d de j                        Z
 G d	 d
e j                        Zy)    N)OptionalDictAny   )base_original_provider_usagec                       e Zd ZU dZeed<   	 eed<   	 eed<   	 dZed   ed<   	 dZed   ed	<   	 d
e	de
e	ef   fdZede
e	ef   dd fd       Zy)OpenAIResponsesUsagez?OpenAI Responses API calls token usage data. Updated 11.03.2025output_tokensinput_tokenstotal_tokensNOutputTokensDetailsoutput_tokens_detailsInputTokensDetailsinput_tokens_detailsparent_key_prefixreturnc                     i | j                   }| j                  | j                  j                         |d<   | j                  | j                  j                         |d<   | j	                  ||      S )Nr   r   )resultr   )__dict__r   
model_dumpr   "flatten_result_and_add_model_extra)selfr   r   s      ~/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/llm_usage/openai_responses_usage.pyto_backend_compatible_flat_dictz4OpenAIResponsesUsage.to_backend_compatible_flat_dict   sz    "DMM"%%1.2.H.H.S.S.UF*+$$0-1-F-F-Q-Q-SF)*66-> 7 
 	
    
usage_dictc                     i |}|j                  dd       }|j                  dd       }t        |t              rt        di |nd }t        |t              rt	        di |nd } | di |||dS )Nr   r   )r   r    )pop
isinstancedictr   r   )clsr   output_tokens_details_rawinput_tokens_details_rawr   r   s         r   from_original_usage_dictz-OpenAIResponsesUsage.from_original_usage_dict%   s     $
^
$.NN3JD$Q!#->>2H$#O  3T:  <";< 	 2D9 :!9: 	  

"7!5
 	
r   )__name__
__module____qualname____doc__int__annotations__r   r   r   strr   r   classmethodr   r%   r   r   r   r	   r	      s    I5)K=A8$9:A1;?(#78?1
 
cSVh 
 
c3h
	
 
r   r	   c                   H    e Zd ZU  ej                  d      ZdZee   e	d<   y)r   allowextraNreasoning_tokens)
r&   r'   r(   pydantic
ConfigDictmodel_configr2   r   r*   r+   r   r   r   r   r   @   s&    &8&&W5L&*hsm*6r   r   c                   H    e Zd ZU  ej                  d      ZdZee   e	d<   y)r   r/   r0   Ncached_tokens)
r&   r'   r(   r3   r4   r5   r7   r   r*   r+   r   r   r   r   r   X   s%    &8&&W5L#'M8C='.r   r   )r3   typingr   r   r    r   BaseOriginalProviderUsager	   	BaseModelr   r   r   r   r   <module>r<      sI     & & *7
7QQ 7
t7(,, 70/++ /r   