
    ih8                     r    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y	)
    )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,                  j.                  ddd      | _         |||      | _        |d	k(  s|d
k(  rt5        d      t7        d       y)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	           j/var/www/html/dev/engine/venv/lib/python3.12/site-packages/langchain_community/callbacks/arize_callback.pyr    zArizeCallbackHandler.__init__   s     	 *")++-)+*,02 .0!"	H.+99\\990!$	 : 
 #YH#w)';<==OP    
serializedpromptskwargsc                 h    |D ]-  }| j                   j                  |j                  dd             / y )N
 )r!   appendreplace)r4   r8   r9   r:   prompts        r6   on_llm_startz!ArizeCallbackHandler.on_llm_start6   s4      	AF&&v~~dB'?@	Ar7   tokenc                      y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 rm|j                  d   j                  dd      | _        |j                  d   j                  dd      | _	        |j                  d   j                  dd      | _
        ndx| _        x| _	        | _
        |j                  D ]  }|D ]  }	| j                  | j                     }
| j                  dz   | _        |j                  | j                  j!                  |j                  |
j#                  dd	            
      j%                  d            }|	j&                  j#                  dd	      }|j                  | j                  j!                  |j                  |	j&                  j#                  dd	            
      j%                  d            }t)        j*                         j-                         }g d}|||
|d   |d   | j                  | j                  | j                  gg}|j/                  ||      } |dd      } |dd      } |dg d||      }| j0                  j3                  ||| j4                  | j6                  |j8                  |j:                        }|j<                  dk(  rt?        d       t?        d|j&                   d         y )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   _	
 	
 =H4G4G#G!)!4!4]!C!G!G"D !) 3 3M B F F!D &.%8%8%G%K%K#Q&D"
 D !2T5K $// M	NK) LN
,,TYY7 IIM	#%99NN66!#6>>$+D!E 7 !ktk,$  !+ 7 7c B%'YYNN66!#:??+B+B4+M!N 7 !ktk,&"
 "*!9!9!;	 '%*1-(+**))..	 \\$\8 "6'6" $8'8:$   *9&
 )7*:	 '+&7&7&;&; !!]]"&"4"4)88 , 7 7 '< '# '22c9BC01D1I1I0J!LMYLNM	Nr7   errorc                      yrD   rE   r4   r   r:   s      r6   on_llm_errorz!ArizeCallbackHandler.on_llm_error   rG   r7   inputsc                      y NrE   )r4   r8   r   r:   s       r6   on_chain_startz#ArizeCallbackHandler.on_chain_start   s     	r7   outputsc                      yrD   rE   )r4   r   r:   s      r6   on_chain_endz!ArizeCallbackHandler.on_chain_end   rG   r7   c                      yrD   rE   r   s      r6   on_chain_errorz#ArizeCallbackHandler.on_chain_error   rG   r7   	input_strc                      y r   rE   )r4   r8   r   r:   s       r6   on_tool_startz"ArizeCallbackHandler.on_tool_start   s     	r7   actionc                      yrD   rE   )r4   r   r:   s      r6   on_agent_actionz$ArizeCallbackHandler.on_agent_action   rG   r7   outputobservation_prefix
llm_prefixc                      y r   rE   )r4   r   r   r   r:   s        r6   on_tool_endz ArizeCallbackHandler.on_tool_end   s     	r7   c                      y r   rE   r   s      r6   on_tool_errorz"ArizeCallbackHandler.on_tool_error       r7   rm   c                      y r   rE   )r4   rm   r:   s      r6   on_textzArizeCallbackHandler.on_text   r   r7   finishc                      y 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      s>   . #''+#'!%&Q3-&Q  }&Q C=	&Q
 #&Q 
&QPAsCx.A379AHKA	Ac S T fN9 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 , =J. Jr7   