
    Ng8                     z    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e
          Zd	S )
    )datetime)AnyDictListOptional)AgentActionAgentFinish)BaseCallbackHandler)	LLMResult)import_pandasc                       e Zd ZdZ	 	 	 	 d%dee         dee         dee         dee         ddf
 fdZd	eeef         d
e	e         deddfdZ
dededdfdZdededdfdZdededdfdZd	eeef         deeef         deddfdZdeeef         deddfdZdededdfdZd	eeef         dededdfdZdededefdZ	 	 d&dedee         dee         deddf
dZdededdfd Zd!ededdfd"Zd#ededdfd$Z xZS )'ArizeCallbackHandlerz$Callback Handler that logs to Arize.Nmodel_idmodel_version	SPACE_KEYAPI_KEYreturnc                    t                                                       || _        || _        || _        || _        g | _        g | _        g | _        g | _	        g | _
        g | _        d| _        d| _        d| _        d| _        ddlm}m} ddlm} |                    |j        j        ddd          | _         |||          | _        |d	k    s|d
k    rt5          d          t7          d           dS )zInitialize callback handler.r   )EmbeddingGeneratorUseCases)Clientzdistilbert-base-uncasedi      )use_case
model_nametokenizer_max_length
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_recordsresponse_recordsprediction_idspred_timestampsresponse_embeddingsprompt_embeddingsprompt_tokenscompletion_tokenstotal_tokenssteparize.pandas.embeddingsr   r   arize.pandas.loggerr   from_use_caseNLPSEQUENCE_CLASSIFICATION	generatorarize_client
ValueErrorprint)	selfr   r   r   r   r   r   r   	__class__s	           h/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/callbacks/arize_callback.pyr    zArizeCallbackHandler.__init__   s0    	 *")++-)+*,02 .0!"	HHHHHHHH......+99\90!$	 : 
 
 #FYHHH##w)';';<===OPPPPP    
serializedpromptskwargsc                 l    |D ]0}| j                             |                    dd                     1d S )N
 )r!   appendreplace)r4   r8   r9   r:   prompts        r6   on_llm_startz!ArizeCallbackHandler.on_llm_start6   sI      	A 	AF&&v~~dB'?'?@@@@	A 	Ar7   tokenc                     dS zDo nothing.N )r4   rB   r:   s      r6   on_llm_new_tokenz%ArizeCallbackHandler.on_llm_new_token<       r7   responsec                    t                      }ddlm}m}m}m} |j        r|d|j        v rs|j        d                             dd          | _        |j        d                             dd          | _	        |j        d                             dd          | _
        ndx| _        x| _	        | _
        |j        D ]}|D ]}	| j        | j                 }
| j        dz   | _        |                    | j                            |                    |
                    dd	                    
                              d                    }|	j                            dd	          }|                    | j                            |                    |	j                            dd	                    
                              d                    }t)          j                                                    }g d}|||
|d         |d         | j        | j	        | j
        gg}|                    ||          } |dd          } |dd          } |dg d||          }| j                            ||| j        | j        |j        |j                  }|j        dk    rt?          d           t?          d|j         d           d S )Nr   )EmbeddingColumnNamesEnvironments
ModelTypesSchematoken_usager'   r)   r(      r<    )text_colT)drop)prediction_tsrH   r@   response_vectorprompt_vectorprompt_tokencompletion_tokentotal_token)columnsrU   r@   )vector_column_namedata_column_namerT   rH   rS   )rV   rW   rX   )timestamp_column_nametag_column_namesprompt_column_namesresponse_column_names)	dataframeschemar   r   
model_typeenvironment   u&   ✅ Successfully logged data to Arize!u   ❌ Logging failed "") r   arize.utils.typesrJ   rK   rL   rM   
llm_outputgetr'   r)   r(   generationsr!   r*   Seriesr0   generate_embeddingsr?   reset_indextextr   now	timestamp	DataFramer1   logr   r   GENERATIVE_LLM
PRODUCTIONstatus_coder3   )r4   rH   r:   pdrJ   rK   rL   rM   ri   
generationr@   prompt_embeddingresponse_textresponse_embeddingpred_timestamprY   datadfprompt_columnsresponse_columnsra   response_from_arizes                         r6   
on_llm_endzArizeCallbackHandler.on_llm_end@   s   __	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
  	=H4G#G#G!)!4]!C!G!G" "D !) 3M B F F! !D &.%8%G%K%K#Q& &D""
 D !2T5K $/ M	N M	NK) LN LN
,TY7 IM	#%99N66!#6>>$+D+D!E!E 7  !ktk,,$ $  !+ 7 7c B B%'YYN66!#:?+B+B4+M+M!N!N 7  !ktk,,& &"
 "*!9!9!;!;	 	 	 '%*1-(+*).	 \\$\88 "6!5'6" " " $8#7'8:$ $ $   *9& & &
 )7*:	 	 	 '+&7&;&; !!]"&"4)8 , 7 '< ' '# '2c99BCCCCL1D1ILLLMMMMYLNM	N M	Nr7   errorc                     dS rD   rE   r4   r   r:   s      r6   on_llm_errorz!ArizeCallbackHandler.on_llm_error   rG   r7   inputsc                     d S NrE   )r4   r8   r   r:   s       r6   on_chain_startz#ArizeCallbackHandler.on_chain_start   s	     	r7   outputsc                     dS rD   rE   )r4   r   r:   s      r6   on_chain_endz!ArizeCallbackHandler.on_chain_end   rG   r7   c                     dS rD   rE   r   s      r6   on_chain_errorz#ArizeCallbackHandler.on_chain_error   rG   r7   	input_strc                     d S r   rE   )r4   r8   r   r:   s       r6   on_tool_startz"ArizeCallbackHandler.on_tool_start   s	     	r7   actionc                     dS rD   rE   )r4   r   r:   s      r6   on_agent_actionz$ArizeCallbackHandler.on_agent_action   rG   r7   outputobservation_prefix
llm_prefixc                     d S r   rE   )r4   r   r   r   r:   s        r6   on_tool_endz ArizeCallbackHandler.on_tool_end   s	     	r7   c                     d S r   rE   r   s      r6   on_tool_errorz"ArizeCallbackHandler.on_tool_error       r7   rm   c                     d S r   rE   )r4   rm   r:   s      r6   on_textzArizeCallbackHandler.on_text   r   r7   finishc                     d S r   rE   )r4   r   r:   s      r6   on_agent_finishz$ArizeCallbackHandler.on_agent_finish   r   r7   )NNNN)NN)__name__
__module____qualname____doc__r   strr    r   r   r   rA   rF   r   r   BaseExceptionr   r   r   r   r   r   r   r   r   r   r	   r   __classcell__)r5   s   @r6   r   r      sR       .. #''+#'!%&Q &Q3-&Q  }&Q C=	&Q
 #&Q 
&Q &Q &Q &Q &Q &QPAsCx.A379AHKA	A A A Ac S T    fN9 fN fN fN fN fN fNP- 3 4    sCx.26sCx.LO	   
DcN c d    M S T    cN  	
 
   k S S     -1$(	  %SM SM	
  
   = C D    C 3 4    k S T        r7   r   N)r   typingr   r   r   r   langchain_core.agentsr   r	   langchain_core.callbacksr
   langchain_core.outputsr   #langchain_community.callbacks.utilsr   r   rE   r7   r6   <module>r      s          , , , , , , , , , , , , : : : : : : : : 8 8 8 8 8 8 , , , , , , = = = = = =J J J J J. J J J J Jr7   