
    Ng                         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dS )    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
                    r5d| j        d}d| j        v r!| j        d         |d<   |d         dk    rd |d<   nXt          | t                    rd| j        d}n8t          | 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     k/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/callbacks/trubrics_callback.py_convert_message_to_dictr!      s5   ';'' 7 'II	G\	*	* 7 &7?CC	GY	'	' 7 +HHg777,3,Eo,VL)I&",,*.Y'	G]	+	+ 	7 (W_EE	G_	-	- 7L
 
 5G55666***&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
    defaultNprojectemailpasswordkwargsr   c                 @   t                                                       	 ddlm} n# t          $ r t	          d          w xY w |||pt
          j        d         |pt
          j        d                   | _        i | _        d | _        d | _	        |r|nd | _
        d S )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     		))))))) 	 	 	A  	 !72:&67@,?!@
 
 

 #%%)(,9?/IvvTs	   * A
serializedpromptsc                      |d         | _         d S )Nr   )r5   )r8   r:   r;   r)   s       r    on_llm_startz$TrubricsCallbackHandler.on_llm_startT   s     ajr"   r6   c                 d    d |d         D             | _         | j         d         d         | _        d S )Nc                 ,    g | ]}t          |          S  )r!   ).0r   s     r    
<listcomp>z?TrubricsCallbackHandler.on_chat_model_start.<locals>.<listcomp>_   s!    VVVw1'::VVVr"   r   r   )r6   r5   )r8   r:   r6   r)   s       r    on_chat_model_startz+TrubricsCallbackHandler.on_chat_model_startY   s6     WV(ST+VVVmB'	2r"   responserun_idc           
          dg}d }d }d|i}| j         r
| j         |d<   | j        r| j                            d          r" |j        | j                            d            | j                            dd           }| j                            dd           }|                    | j                   |j        D ]V}| j                            d|j	        r|j	                            d          nd	i| j
        |d
         j        ||||           Wd S )N	langchainlangchain_run_idr6   tagsuser_id
session_idmodel
model_nameNAr   )r4   r5   
generationrK   rL   rJ   metadata)r6   r7   getappendpopupdategenerationsr0   
log_prompt
llm_outputr5   text)	r8   rE   rF   r)   rJ   rK   rL   rQ   rP   s	            r    
on_llm_endz"TrubricsCallbackHandler.on_llm_endb   sE   }
,f5= 	1#'=HZ  	2#''// ?T155f==>>*..y$??G-11,EEJOOD0111". 	 	JM$$*X044\BBB
 {%a=-%! %    	 	r"   )r%   NN)__name__
__module____qualname____doc__strr   r   r/   r   r   r=   r
   rD   r   r   rZ   __classcell__)r9   s   @r    r$   r$   -   sW       	 	 !#"&	J JJ }J 3-	J
 J 
J J J J J J6!sCx.!379!HK!	! ! ! !
3cN3 tK()3 	3
 
3 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"   r    <module>rg      s   				 , , , , , , , , , , , ,       8 8 8 8 8 8                - , , , , ,k d    8P P P P P1 P P P P Pr"   