a
    bg                     @   s   d dl mZmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZ ertd dlmZ d dlmZ d dlmZ d dlmZ d	ed
ddZedddZG dd de	ZdS )    )
ModuleTypeSimpleNamespace)TYPE_CHECKINGAnyCallableDict)
BaseTracer)guard_import)UUID)Span)Chain)Runr   runreturnc                 C   s4   t | jtr| jS t| jdr&| jjS t| jS d S )Nvalue)
isinstanceZrun_typestrhasattrr   )r    r   y/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/callbacks/tracers/comet.py_get_run_type   s
    r   r   c                  C   s,   t d} t d}t|j|j|j| j| jdS )z?Import comet_llm api and raise an error if it is not installed.	comet_llmzcomet_llm.chains)chainspan	chain_apiexperiment_infoflush)r	   r   r   r   apir   r   )r   Zcomet_llm_chainsr   r   r   import_comet_llm_api   s    r    c                       s  e Zd ZdZedd fddZddddZd	dd
ddZd	dd
ddZd	dd
ddZ	ddddZ
d	dd
ddZd	dd
ddZd	dd
ddZd	dd
ddZd	dd
ddZd	dd
ddZd	dd
dd Zd	dd
d!d"Zd	dd
d#d$Z  ZS )%CometTracerzComet Tracer.N)kwargsr   c                    s*   t  jf i | i | _i | _|   dS )zInitialize the Comet Tracer.N)super__init__	_span_map_chains_map_initialize_comet_modules)selfr"   	__class__r   r   r$   *   s    zCometTracer.__init__r   c                 C   s2   t  }|j| _|j| _|j| _|j| _|j	| _
d S N)r    r   _chainr   _spanr   
_chain_apir   _experiment_infor   _flush)r(   Zcomet_llm_apir   r   r   r'   3   s    z%CometTracer._initialize_comet_modulesr   r   c                 C   s4   |  }| j|j }|j|d d | j| d S Noutputs)r2   )dictr&   idset_outputsr.   Z	log_chain)r(   r   run_dictchain_r   r   r   _persist_run;   s    zCometTracer._persist_runc                 C   s   |  }|jsH|d dd }| jj|d || j d}|| j|j< nT| jj	|d t
||d |jd}|| j|j  | j|j | j|j< || j|j< d S )Nextrametadatainputs)r;   r:   r   )r;   categoryr:   name)r3   parent_run_idgetr,   r   r/   r&   r4   r-   r   r   r=   Z__api__start__r%   )r(   r   r6   r:   r7   r   r   r   r   _process_start_traceA   s$    z CometTracer._process_start_tracec                 C   s8   |  }|jsn$| j|j }|j|d d |  d S r1   )r3   r>   r%   r4   r5   Z__api__end__)r(   r   r6   r   r   r   r   _process_end_traceX   s    zCometTracer._process_end_tracec                 C   s   |    d S r+   )r0   )r(   r   r   r   r   b   s    zCometTracer.flushc                 C   s   |  | dS )zProcess the LLM Run upon start.Nr@   r(   r   r   r   r   _on_llm_starte   s    zCometTracer._on_llm_startc                 C   s   |  | dS )zProcess the LLM Run.NrA   rC   r   r   r   _on_llm_endi   s    zCometTracer._on_llm_endc                 C   s   |  | dS )zProcess the LLM Run upon error.NrE   rC   r   r   r   _on_llm_errorm   s    zCometTracer._on_llm_errorc                 C   s   |  | dS )z!Process the Chain Run upon start.NrB   rC   r   r   r   _on_chain_startq   s    zCometTracer._on_chain_startc                 C   s   |  | dS )zProcess the Chain Run.NrE   rC   r   r   r   _on_chain_endu   s    zCometTracer._on_chain_endc                 C   s   |  | dS )z!Process the Chain Run upon error.NrE   rC   r   r   r   _on_chain_errory   s    zCometTracer._on_chain_errorc                 C   s   |  | dS )z Process the Tool Run upon start.NrB   rC   r   r   r   _on_tool_start}   s    zCometTracer._on_tool_startc                 C   s   |  | dS )zProcess the Tool Run.NrE   rC   r   r   r   _on_tool_end   s    zCometTracer._on_tool_endc                 C   s   |  | dS )z Process the Tool Run upon error.NrE   rC   r   r   r   _on_tool_error   s    zCometTracer._on_tool_error)__name__
__module____qualname____doc__r   r$   r'   r8   r@   rA   r   rD   rF   rG   rH   rI   rJ   rK   rL   rM   __classcell__r   r   r)   r   r!   '   s    	
r!   N)typesr   r   typingr   r   r   r   Zlangchain_core.tracersr   Zlangchain_core.utilsr	   uuidr
   r   r   Zcomet_llm.chains.chainr   Z-langchain_community.callbacks.tracers.schemasr   r   r   r    r!   r   r   r   r   <module>   s   	