o
    5j$	                     @   s`   d dl Z e  Zi ZdefddZdedededefdd	Zded
efddZ	defddZ
dS )    Nchat_idc                 C   sz   t 1 dddddddddddddddddddddddddddddt| < W d    d S 1 s6w   Y  d S )Nr   )inputoutputcalls)classifyextractvalidate
exceptionsrcacapareport)_lock_session_tokensr    r   1/var/www/html/fyndo/pharma/fyndo/token_tracker.pyinit_session   s   






"r   stepinput_tokensoutput_tokensc                 C   s   t U | tvrt|  |t|  v rOt|  | d  |7  < t|  | d  |7  < t|  | d  d7  < td| d| d| d||   W d    d S W d    d S 1 sZw   Y  d S )	Nr   r   r      z	[TOKENS] u    — input:z output:z total:)r   r   r   print)r   r   r   r   r   r   r   
add_tokens   s   &"r   returnc           	   	   C   s   t j | tvri W  d    S t|  }i }d } }}| D ]-\}}|d |d  }|d |d ||d d||< ||d 7 }||d 7 }||d 7 }q |||| |t|d |d  dd	|d
< |W  d    S 1 sow   Y  d S )Nr   r   r   r   )r   r   total_tokens	llm_callsgh㈵>giUMu>   )r   r   r   r   estimated_cost_usdTOTAL)r   r   itemsround)	r   stepssummarygrand_inputgrand_outputgrand_callsr   datatotalr   r   r   get_summary   s2   

$r(   c                 C   s6   t  t| d  W d    d S 1 sw   Y  d S )N)r   r   popr   r   r   r   clear_session=   s   "r*   )	threadingLockr   r   strr   intr   dictr(   r*   r   r   r   r   <module>   s    