
    7|h                         d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZ d dlmZ dedefd	Z G d
 de	      Zy)    N)AnyDictListOptional)UUID)BaseCallbackHandler)	AIMessageBaseMessageChatMessageFunctionMessageHumanMessageSystemMessage)	LLMResultmessagereturnc                 &   t        | t              r| j                  | j                  d}nt        | t              rd| j                  d}nt        | t
              r=d| j                  d}d| j                  v ry| j                  d   |d<   |d   dk(  r_d |d<   nYt        | t              rd| j                  d}n9t        | t              rd| j                  | j                  d	}nt        d
|        d| j                  v r| j                  d   |d<   |S )N)rolecontentuser	assistantfunction_callr    systemfunction)r   r   namezGot unknown type r   )
isinstancer   r   r   r   r	   additional_kwargsr   r   r   	TypeError)r   message_dicts     n/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/callbacks/trubrics_callback.py_convert_message_to_dictr!      s    ';' 'I	G\	* &7??C	GY	' +Hg777,3,E,Eo,VL)I&",*.Y'	G]	+ (W__E	G_	-LL
 +G9566***&88@V    c                        e Zd ZdZ	 	 	 ddedee   dee   deddf
 fdZd	eeef   d
e	e   deddfdZ
d	eeef   de	e	e      deddfdZdedededdfdZ xZS )TrubricsCallbackHandlera  
    Callback handler for Trubrics.

    Args:
        project: a trubrics project, default project is "default"
        email: a trubrics account email, can equally be set in env variables
        password: a trubrics account password, can equally be set in env variables
        **kwargs: all other kwargs are parsed and set to trubrics prompt variables,
            or added to the `metadata` dict
    Nprojectemailpasswordkwargsr   c                     t         |           	 ddlm}  |||xs t
        j                  d   |xs t
        j                  d         | _        i | _        d | _        d | _	        |r|| _
        y d | _
        y # t        $ r t	        d      w xY w)Nr   )TrubricszyThe TrubricsCallbackHandler requires installation of the trubrics package. Please install it with `pip install trubrics`.TRUBRICS_EMAILTRUBRICS_PASSWORD)r%   r&   r'   )super__init__trubricsr*   ImportErrorosenvironconfig_modelpromptmessagestrubrics_kwargs)selfr%   r&   r'   r(   r*   	__class__s         r    r.   z TrubricsCallbackHandler.__init__9   s     		) !72::&67@,?!@

 #%%)(,9?vT  	A 	s   A8 8B
serializedpromptsc                     |d   | _         y )Nr   )r4   )r7   r9   r:   r(   s       r    on_llm_startz$TrubricsCallbackHandler.on_llm_startT   s     ajr"   r5   c                 ~    |d   D cg c]  }t        |       c}| _        | j                  d   d   | _        y c c}w )Nr   r   )r!   r5   r4   )r7   r9   r5   r(   r   s        r    on_chat_model_startz+TrubricsCallbackHandler.on_chat_model_startY   s>     KSST+Vw1':VmmB'	2 Ws   :responserun_idc           
      z   dg}d }d }d|i}| j                   r| j                   |d<   | j                  r| j                  j                  d      r( |j                  | j                  j	                  d        | j                  j	                  dd       }| j                  j	                  dd       }|j                  | j                         |j                  D ]d  }| j                  j                  d|j                  r|j                  j                  d      nd	i| j                  |d
   j                  ||||       f y )N	langchainlangchain_run_idr5   tagsuser_id
session_idmodel
model_nameNAr   )r3   r4   
generationrF   rG   rE   metadata)r5   r6   getappendpopupdategenerationsr/   
log_prompt
llm_outputr4   text)	r7   r@   rA   r(   rE   rF   rG   rL   rK   s	            r    
on_llm_endz"TrubricsCallbackHandler.on_llm_endb   s(   }
,f5==#'==HZ ##''/T1155f=>**..y$?G--11,EJOOD001".. 	JMM$$** &0044\B
 {{%a=--%! % 	r"   )defaultNN)__name__
__module____qualname____doc__strr   r   r.   r   r   r<   r
   r?   r   r   rU   __classcell__)r8   s   @r    r$   r$   -   s    	 !#"&	JJ }J 3-	J
 J 
J6!sCx.!379!HK!	!
3cN3 tK()3 	3
 
39 d c d r"   r$   )r1   typingr   r   r   r   uuidr   langchain_core.callbacksr   langchain_core.messagesr	   r
   r   r   r   r   langchain_core.outputsr   dictr!   r$    r"   r    <module>rd      sE    	 , ,  8  -k d 8P1 Pr"   