a
    bg8                     @   sl   d dl m Z  d dlmZmZmZmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZ G dd de
Zd	S )
    )datetime)AnyDictListOptional)AgentActionAgentFinish)BaseCallbackHandler)	LLMResult)import_pandasc                       sj  e Zd ZdZd+ee ee ee ee dd fddZeeef e	e eddddZ
eedd	d
dZeeddddZeeddddZeeef eeef eddddZeeef eddddZeeddddZeeef eeddddZeeedddZd,eee ee edd d!d"Zeeddd#d$Zeedd%d&d'Zeedd(d)d*Z  ZS )-ArizeCallbackHandlerz$Callback Handler that logs to Arize.N)model_idmodel_version	SPACE_KEYAPI_KEYreturnc                    s   t    || _|| _|| _|| _g | _g | _g | _g | _	g | _
g | _d| _d| _d| _d| _ddlm}m} ddlm} |j|jjdddd| _|||d| _|d	ks|d
krtdntd dS )zInitialize callback handler.r   )EmbeddingGeneratorUseCases)Clientzdistilbert-base-uncasedi      )Zuse_caseZ
model_nameZtokenizer_max_lengthZ
batch_size)	space_keyapi_keyr   r   u   ❌ CHANGE SPACE AND API KEYSu;   ✅ Arize client setup done! Now you can start using Arize!N)super__init__r   r   r   r   prompt_recordsZresponse_recordsZprediction_idsZpred_timestampsZresponse_embeddingsZprompt_embeddingsprompt_tokenscompletion_tokenstotal_tokensstepZarize.pandas.embeddingsr   r   Zarize.pandas.loggerr   Zfrom_use_caseZNLPZSEQUENCE_CLASSIFICATION	generatorarize_client
ValueErrorprint)selfr   r   r   r   r   r   r   	__class__ z/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/callbacks/arize_callback.pyr      s6    	

zArizeCallbackHandler.__init__)
serializedpromptskwargsr   c                 K   s"   |D ]}| j |dd qd S )N
 )r   appendreplace)r#   r(   r)   r*   promptr&   r&   r'   on_llm_start6   s    z!ArizeCallbackHandler.on_llm_start)tokenr*   r   c                 K   s   dS zDo nothing.Nr&   )r#   r1   r*   r&   r&   r'   on_llm_new_token<   s    z%ArizeCallbackHandler.on_llm_new_token)responser*   r   c                 K   s  t  }ddlm}m}m}m} |jrld|jv rl|jd dd| _|jd dd| _	|jd dd| _
nd | _ | _	| _
|jD ]F}|D ]:}	| j| j }
| jd | _|| jj||
dd	d
jdd}|	jdd	}|| jj||	jdd	d
jdd}t  }g d}|||
|d |d | j| j	| j
gg}|j||d}|ddd}|ddd}|dg d||d}| jj||| j| j|j|jd}|jdkrtd qtd|j d qqd S )Nr   )EmbeddingColumnNamesEnvironments
ModelTypesSchemaZtoken_usager   r   r      r+    )Ztext_colT)Zdrop)prediction_tsr4   r/   response_vectorprompt_vectorprompt_tokencompletion_tokentotal_token)columnsr=   r/   )Zvector_column_nameZdata_column_namer<   r4   r;   )r>   r?   r@   )Ztimestamp_column_nameZtag_column_namesZprompt_column_namesZresponse_column_names)Z	dataframeschemar   r   Z
model_typeenvironment   u&   ✅ Successfully logged data to Arize!u   ❌ Logging failed "") r   Zarize.utils.typesr5   r6   r7   r8   Z
llm_outputgetr   r   r   generationsr   r   ZSeriesr   Zgenerate_embeddingsr.   Zreset_indextextr   now	timestampZ	DataFramer    logr   r   ZGENERATIVE_LLMZ
PRODUCTIONstatus_coder"   )r#   r4   r*   pdr5   r6   r7   r8   rG   Z
generationr/   Zprompt_embeddingZresponse_textZresponse_embeddingZpred_timestamprA   dataZdfZprompt_columnsZresponse_columnsrB   Zresponse_from_arizer&   r&   r'   
on_llm_end@   s    




zArizeCallbackHandler.on_llm_end)errorr*   r   c                 K   s   dS r2   r&   r#   rP   r*   r&   r&   r'   on_llm_error   s    z!ArizeCallbackHandler.on_llm_error)r(   inputsr*   r   c                 K   s   d S Nr&   )r#   r(   rS   r*   r&   r&   r'   on_chain_start   s    z#ArizeCallbackHandler.on_chain_start)outputsr*   r   c                 K   s   dS r2   r&   )r#   rV   r*   r&   r&   r'   on_chain_end   s    z!ArizeCallbackHandler.on_chain_endc                 K   s   dS r2   r&   rQ   r&   r&   r'   on_chain_error   s    z#ArizeCallbackHandler.on_chain_error)r(   	input_strr*   r   c                 K   s   d S rT   r&   )r#   r(   rY   r*   r&   r&   r'   on_tool_start   s    z"ArizeCallbackHandler.on_tool_start)actionr*   r   c                 K   s   dS r2   r&   )r#   r[   r*   r&   r&   r'   on_agent_action   s    z$ArizeCallbackHandler.on_agent_action)outputobservation_prefix
llm_prefixr*   r   c                 K   s   d S rT   r&   )r#   r]   r^   r_   r*   r&   r&   r'   on_tool_end   s    z ArizeCallbackHandler.on_tool_endc                 K   s   d S rT   r&   rQ   r&   r&   r'   on_tool_error   s    z"ArizeCallbackHandler.on_tool_error)rH   r*   r   c                 K   s   d S rT   r&   )r#   rH   r*   r&   r&   r'   on_text   s    zArizeCallbackHandler.on_text)finishr*   r   c                 K   s   d S rT   r&   )r#   rc   r*   r&   r&   r'   on_agent_finish   s    z$ArizeCallbackHandler.on_agent_finish)NNNN)NN)__name__
__module____qualname____doc__r   strr   r   r   r   r0   r3   r
   rO   BaseExceptionrR   rU   rW   rX   rZ   r   r\   r`   ra   rb   r   rd   __classcell__r&   r&   r$   r'   r      sR       )h
  	r   N)r   typingr   r   r   r   Zlangchain_core.agentsr   r   Zlangchain_core.callbacksr	   Zlangchain_core.outputsr
   Z#langchain_community.callbacks.utilsr   r   r&   r&   r&   r'   <module>   s   