o
    ưi                     @   sR   d dl Z d dlZd dlmZmZ d dlZdd Zdd Zdd ZG d	d
 d
ZdS )    N)datetimetimezonec                 C   s.   d| v r| d ndd| v r| d dS ddS )NZcompletion_tokensr   Zprompt_tokens)
completionprompt )usager   r   R/home/app/Keep/.python/lib/python3.10/site-packages/litellm/integrations/lunary.pyparse_usage   s
   r	   c                    s&   | d u rd S dd   fdd| D S )Nc                 S   s"   | j | j| jj| jjdd}|S )N)name	arguments)typeidfunction)r   r   r   r
   r   )	tool_call
serializedr   r   r   clean_tool_call   s   	z)parse_tool_calls.<locals>.clean_tool_callc                       g | ]} |qS r   r   ).0r   r   r   r   
<listcomp>"       z$parse_tool_calls.<locals>.<listcomp>r   )
tool_callsr   r   r   parse_tool_calls   s   r   c                    sT   | d u rd S  fdd t | tr&t| dkr | d S  fdd| D S  | S )Nc                    sX   t | tr| S d| v r | d S | d| dd}| dr*t| d|d< |S )Nmessagerolecontent)r   r   r   )
isinstancestrgetr   )r   r   clean_messager   r   r    )   s   

z%parse_messages.<locals>.clean_message   r   c                    r   r   r   )r   msgr   r   r   r   @   r   z"parse_messages.<locals>.<listcomp>)r   listlen)inputr   r   r   parse_messages%   s   
r&   c                   @   s<   e Zd Zdd Zi dddeejeejdfddZdS )LunaryLoggerc                 C   s`   z"dd l }tjd}tj|tjdk rtd t|| _W d S  ty/   td tw )Nr   lunaryz0.1.43zXLunary version outdated. Required: >= 0.1.43. Upgrade via 'pip install lunary --upgrade'zBLunary not installed. Please install it using 'pip install lunary')	r(   	importlibmetadataversion	packagingVersionprintImportErrorlunary_client)selfr(   r+   r   r   r   __init__G   s   zLunaryLogger.__init__Nc                 C   s  z|d|  d }| di }| di }| di pi }|r&i ||}| dd }|rD|dd  |dd  |di  d	d }| D ]#\}}t|ttttfsk|d
krkzt|||< W qH tyj   Y qHw qH|
rd|
v rxt	|
d nd }d|
v r|
d nd }nd }d }|rd|i}nd }| j
j|d|| dd |	|t||tj ||d||d | j
j||||tj d|t||d W d S  ty   |dt   Y d S w )Nz+Lunary Logging - Logging request for model litellm_paramsoptional_paramsr*   tagsZ
extra_bodyuserextra_headerszTemplate-IdZtoolsr   choicesstackstartparent_run_idZlitellm)
r;   user_idr
   r%   	timestamptemplate_idr*   runtimer5   params)r=   r?   erroroutputZtoken_usagezLunary Logging Error - )r   popitemsr   r   intboolfloat	Exceptionr	   r0   Ztrack_eventr&   
astimezoner   utc	isoformat	traceback
format_exc)r1   kwargsr   eventZrun_idmodelZprint_verboseextrar%   r<   Zresponse_obj
start_timeend_timerA   r>   r3   r4   r*   r5   paramvaluer   rB   Z	error_objr   r   r   	log_eventZ   sz   

zLunaryLogger.log_event)	__name__
__module____qualname__r2   r   nowr   rJ   rV   r   r   r   r   r'   E   s    

r'   )	r)   rL   r   r   r,   r	   r   r&   r'   r   r   r   r   <module>   s    