o
    i:                     @  sp   d dl mZ d dlZd dlmZmZ d dlmZ d dlmZ ddl	m
Z
 er,dd	lmZ dddZdddZdS )    )annotationsN)datetimetimezone)TYPE_CHECKING)trace   )trace_types   )RealtimeModelMetricsspan
trace.Span	exception	ExceptionreturnNonec              	   C  sP   |  | | ttjjt| | tj	|j
jtjt|tjt i d S )N)record_exception
set_statusr   Status
StatusCodeERRORstrset_attributesr   ATTR_EXCEPTION_TYPE	__class____name__ATTR_EXCEPTION_MESSAGEATTR_EXCEPTION_TRACE	traceback
format_exc)r   r    r   `/var/www/html/livekit_bhavya/venv/lib/python3.10/site-packages/livekit/agents/telemetry/utils.pyr      s   



r   evr
   c           	      C  sX  |j r|j jnd }|j r|j jnd }tjdtj|pdtj|pdtj| tj	|j
tj|jtj|jjtj|jjtj|jjtj|jjtj|jji}|jdkra|j|j }tj|tjd }||tj< |  rl|  | d S ddl!m"} t#$| + |%d}| | W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nchatunknown)tzr   )tracerrealtime_metrics)&metadata
model_namemodel_providerr   ATTR_GEN_AI_OPERATION_NAMEATTR_GEN_AI_PROVIDER_NAMEATTR_GEN_AI_REQUEST_MODELATTR_REALTIME_MODEL_METRICSmodel_dump_jsonATTR_GEN_AI_USAGE_INPUT_TOKENSinput_tokensATTR_GEN_AI_USAGE_OUTPUT_TOKENSoutput_tokens#ATTR_GEN_AI_USAGE_INPUT_TEXT_TOKENSinput_token_detailstext_tokens$ATTR_GEN_AI_USAGE_INPUT_AUDIO_TOKENSaudio_tokens%ATTR_GEN_AI_USAGE_INPUT_CACHED_TOKENScached_tokens$ATTR_GEN_AI_USAGE_OUTPUT_TEXT_TOKENSoutput_token_details%ATTR_GEN_AI_USAGE_OUTPUT_AUDIO_TOKENSttft	timestampr   fromtimestampr   utc	isoformat#ATTR_LANGFUSE_COMPLETION_START_TIMEis_recordingr   tracesr&   r   use_span
start_span)	r   r!   r)   r*   attrscompletion_start_timecompletion_start_time_utcr&   childr   r   r    record_realtime_metrics   s@   









"rL   )r   r   r   r   r   r   )r   r   r!   r
   r   r   )
__future__r   r   r   r   typingr   opentelemetryr    r   metricsr
   r   rL   r   r   r   r    <module>   s    
