
    yj                         d dl Z d dlmZ d dlmZ d dlmZmZmZ  e j	        d          Z
deee         z  dz  defdZd	ed
eeef         ddfdZdS )    N)settings)prometheus_metrics)DeriverComponentsDeriverTaskTypes
TokenTypes
o200k_basetextreturnc                     | sdS t          | t                    rd                    |           } 	 t          t                              |                     S # t          $ r t          |           dz  cY S w xY w)z@Estimate token count using tiktoken for text or list of strings.r   
   )
isinstancelistjoinlen	tokenizerencode	Exception)r	   s    8/DATA/AppData/hermes/projects/honcho/src/utils/tokens.pyestimate_tokensr      s     q$ yy9##D))***   4yyA~s   &A A65A6	task_type
componentsc                     |                                 D ]G\  }}t          j        j        r1t	          j        || j        t          j        j        |j                   HdS )z
    Helper method to track input token components for a given task type.

    Args:
        task_type: The type of task
        components: Dict mapping component names to token counts
    )countr   
token_type	componentN)	itemsr   METRICSENABLEDr   record_deriver_tokensvaluer   INPUT)r   r   r   token_counts       r   track_deriver_input_tokensr$      sm     #-"2"2"4"4  	;# 	4!#/%+1#/	        )tiktoken
src.configr   src.telemetryr    src.telemetry.prometheus.metricsr   r   r   get_encodingr   strr   intr   dictr$    r%   r   <module>r/      s           , , , , , ,          "H!,//		#S	/D0 	S 	 	 	 	&+, 
     r%   