
    dh                         S SK r S SKJrJrJrJr  S SKJr  S SKJ	r	  S SK
JrJrJrJrJrJr  S SKJr  S\S\4S	 jr " S
 S\	5      rg)    N)AnyDictListOptional)UUID)BaseCallbackHandler)	AIMessageBaseMessageChatMessageFunctionMessageHumanMessageSystemMessage)	LLMResultmessagereturnc                 b   [        U [        5      (       a  U R                  U R                  S.nO[        U [        5      (       a  SU R                  S.nO[        U [
        5      (       a@  SU R                  S.nSU R                  ;   a   U R                  S   US'   US   S:X  a  S US'   Oc[        U [        5      (       a  SU R                  S.nO>[        U [        5      (       a  SU R                  U R                  S	.nO[        S
U  35      eSU R                  ;   a  U R                  S   US'   U$ )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     g/var/www/html/shao/venv/lib/python3.13/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                      ^  \ rS rSrSr   SS\S\\   S\\   S\SS4
U 4S	 jjjrS
\	\\4   S\
\   S\SS4S jrS
\	\\4   S\
\
\      S\SS4S jrS\S\S\SS4S jrSrU =r$ )TrubricsCallbackHandler-   au  
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                 8  > [         TU ]  5          SSKJn  U" UU=(       d    [
        R                  S   U=(       d    [
        R                  S   S9U l        0 U l        S U l        S U l	        U(       a  X@l
        g S U l
        g ! [         a    [	        S5      ef = f)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/    TrubricsCallbackHandler.__init__9   s     		) !72::&67@,?!@

 #%%)(,9?vT  	A 	s   B B
serializedpromptsc                     US   U l         g )Nr   )r5   )r8   r;   r<   r)   s       r    on_llm_start$TrubricsCallbackHandler.on_llm_startT   s     ajr"   r6   c                     US    Vs/ sH  n[        U5      PM     snU l        U R                  S   S   U l        g s  snf )Nr   r   )r!   r6   r5   )r8   r;   r6   r)   r   s        r    on_chat_model_start+TrubricsCallbackHandler.on_chat_model_startY   sB     KSST+V+w1':+VmmB'	2 Ws   <responserun_idc                    S/nS nS nSU0nU R                   (       a  U R                   US'   U R                  (       a  U R                  R                  S5      (       a(  UR                  " U R                  R	                  S5      6   U R                  R	                  SS 5      nU R                  R	                  SS 5      nUR                  U R                  5        UR                   Hg  nU R                  R                  SUR                  (       a  UR                  R                  S5      OS	0U R                  US
   R                  UUUUS9  Mi     g )N	langchainlangchain_run_idr6   tagsuser_id
session_idmodel
model_nameNAr   )r4   r5   
generationrJ   rK   rI   metadata)r6   r7   getappendpopupdategenerationsr0   
log_prompt
llm_outputr5   text)	r8   rD   rE   r)   rI   rJ   rK   rP   rO   s	            r    
on_llm_end"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"   )r4   r6   r5   r0   r7   )defaultNN)__name__
__module____qualname____firstlineno____doc__strr   r   r/   r   r   r>   r
   rB   r   r   rY   __static_attributes____classcell__)r9   s   @r    r$   r$   -   s    	 !#"&	JJ }J 3-	J
 J 
J J6!sCx.!379!HK!	!
3cN3 tK()3 	3
 
39 d c d  r"   r$   )r2   typingr   r   r   r   uuidr   langchain_core.callbacksr   langchain_core.messagesr	   r
   r   r   r   r   langchain_core.outputsr   dictr!   r$    r"   r    <module>rk      sE    	 , ,  8  -k d 8P1 Pr"   