o
    Zh                     @   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r:d dlmZ d dlmZ d dlmZ d dlmZ d	d
defddZdefddZG dd de	ZdS )    )
ModuleTypeSimpleNamespace)TYPE_CHECKINGAnyCallableDict)
BaseTracer)guard_import)UUID)Span)Chain)Runrunr   returnc                 C   s0   t | jtr	| jS t| jdr| jjS t| jS )Nvalue)
isinstanceZrun_typestrhasattrr   )r    r   b/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/callbacks/tracers/comet.py_get_run_type   s
   
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deddf fddZd%ddZd&ddZd&ddZd&ddZ	d%ddZ
d&ddZd&ddZd&ddZd&ddZd&ddZd&ddZd&dd Zd&d!d"Zd&d#d$Z  ZS )'CometTracerzComet Tracer.kwargsr   Nc                    s.   t  jdi | i | _	 i | _	 |   dS )zInitialize the Comet Tracer.Nr   )super__init__	_span_map_chains_map_initialize_comet_modules)selfr    	__class__r   r   r"   *   s   zCometTracer.__init__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)r0   )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s%|d dd }| jj|d || j d}|| j|j< d S | jj	|d t
||d |jd}|| j|j  | j|j | j|j< || j|j< d S )Nextrametadatainputs)r9   r8   r   )r9   categoryr8   name)r1   parent_run_idgetr*   r   r-   r$   r2   r+   r   r   r;   Z__api__start__r#   )r&   r   r4   r8   r5   r   r   r   r   _process_start_traceA   s$   z CometTracer._process_start_tracec                 C   s:   |  }|js	d S | j|j }|j|d d |  d S r/   )r1   r<   r#   r2   r3   Z__api__end__)r&   r   r4   r   r   r   r   _process_end_traceX   s   zCometTracer._process_end_tracec                 C   s   |    d S r)   )r.   )r&   r   r   r   r   b   s   zCometTracer.flushc                 C      |  | dS )zProcess the LLM Run upon start.Nr>   r&   r   r   r   r   _on_llm_starte      zCometTracer._on_llm_startc                 C   r@   )zProcess the LLM Run.Nr?   rB   r   r   r   _on_llm_endi   rD   zCometTracer._on_llm_endc                 C   r@   )zProcess the LLM Run upon error.NrE   rB   r   r   r   _on_llm_errorm   rD   zCometTracer._on_llm_errorc                 C   r@   )z!Process the Chain Run upon start.NrA   rB   r   r   r   _on_chain_startq   rD   zCometTracer._on_chain_startc                 C   r@   )zProcess the Chain Run.NrE   rB   r   r   r   _on_chain_endu   rD   zCometTracer._on_chain_endc                 C   r@   )z!Process the Chain Run upon error.NrE   rB   r   r   r   _on_chain_errory   rD   zCometTracer._on_chain_errorc                 C   r@   )z Process the Tool Run upon start.NrA   rB   r   r   r   _on_tool_start}   rD   zCometTracer._on_tool_startc                 C   r@   )zProcess the Tool Run.NrE   rB   r   r   r   _on_tool_end   rD   zCometTracer._on_tool_endc                 C   r@   )z Process the Tool Run upon error.NrE   rB   r   r   r   _on_tool_error   rD   zCometTracer._on_tool_error)r   N)r   r   r   N)__name__
__module____qualname____doc__r   r"   r%   r6   r>   r?   r   rC   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    	