
    Ng                        d Z ddlmZ ddlZddlmZmZmZ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 ddlmZmZ erddlZddZ G d de          ZdS )!Callback handler for promptlayer.    )annotationsN)TYPE_CHECKINGAnyCallableDictListOptionalTuple)UUID)BaseCallbackHandler)	AIMessageBaseMessageChatMessageHumanMessageSystemMessage)ChatGeneration	LLMResultreturnpromptlayerc                 L    	 ddl } n# t          $ r t          d          w xY w| S )z2Lazy import promptlayer to avoid circular imports.r   NzsThe PromptLayerCallbackHandler requires the promptlayer package.  Please install it with `pip install promptlayer`.)r   ImportError)r   s    n/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/callbacks/promptlayer_callback.py_lazy_import_promptlayerr      sQ    
 
 
 
A
 
 	


 s    !c                  ^    e Zd ZdZ	 	 d$d%d	Zddd
d&dZddd
d'dZddd(dZd)d Zd*d#Z	dS )+PromptLayerCallbackHandlerr   Npl_id_callbackOptional[Callable[..., Any]]pl_tagsOptional[List[str]]r   Nonec                P    t                       || _        |pg | _        i | _        dS )z*Initialize the PromptLayerCallbackHandler.N)r   r   r   runs)selfr   r   s      r   __init__z#PromptLayerCallbackHandler.__init__)   s.     	!""",}"02			    )parent_run_idtags
serializedDict[str, Any]messagesList[List[BaseMessage]]run_idr   r'   Optional[UUID]r(   kwargsr   c                     fd|D             |                     di           d                    |d                   t          j                                                                        |d j        |<   d S )Nc                F    g | ]}                     |          d          S )r   )_create_message_dicts.0mr$   s     r   
<listcomp>zBPromptLayerCallbackHandler.on_chat_model_start.<locals>.<listcomp>?   s,    LLLa33A66q9LLLr&   invocation_params.id)r+   r7   namerequest_start_timer(   getjoindatetimenow	timestampr#   )r$   r)   r+   r-   r'   r(   r/   s   `      r   on_chat_model_startz.PromptLayerCallbackHandler.on_chat_model_start4   s}     MLLL8LLL!',?!D!DHHZ-.."*"3"7"7"9"9"C"C"E"E
 
	&r&   prompts	List[str]c                   ||                     di           d                    |d                   t          j                                                                        |d| j        |<   d S )Nr7   r8   r9   )rC   r7   r:   r;   r(   r<   )r$   r)   rC   r-   r'   r(   r/   s          r   on_llm_startz'PromptLayerCallbackHandler.on_llm_startF   sg     !',?!D!DHHZ-.."*"3"7"7"9"9"C"C"E"E
 
	&r&   )r'   responser   c                  ddl m}m} | j                            |i           }|sd S t
          j                                                                        |d<   t          t          |j
                            D ]}|j
        |         d         }	|	j        |j        d}
|                    di           }|                    dd           d u}|r|                    dg           |         n|                    dg           |         g}|r0t          |	t                    r|                     |	j                  gn|
} ||                    d          d	||| j        ||                    d
          |                    d           |            t%          | j        d u          t)          |          t)          |          t)          |                    dg                     d          }| j        r|                     |           d S )Nr   )get_api_keypromptlayer_api_requestrequest_end_time)text
llm_outputr7   r+   rC   r:   	langchainr;   r(   )_langchain_run_id_langchain_parent_run_id_langchain_tags)return_pl_idmetadata)promptlayer.utilsrI   rJ   r#   r=   r?   r@   rA   rangelengenerationsrL   rM   
isinstancer   _convert_message_to_dictmessager   boolr   str)r$   rG   r-   r'   r/   rI   rJ   run_infoi
generationrespmodel_paramsis_chat_modelmodel_inputmodel_responsepl_request_ids                   r   
on_llm_endz%PromptLayerCallbackHandler.on_llm_endX   s6    	KJJJJJJJ9==,, 	F'/'8'<'<'>'>'H'H'J'J#$s8/0011 '	3 '	3A!-a03J #&1 D $<<(;R@@L$LLT::$FM !6Z,,Q//ll9b11!45  !%/
N%K%K..z/ABBCC  43V$$122/00!$"5T"ABB),V03M0B0B'*8<<+C+C'D'D   M$ " 3##M222O'	3 '	3r&   rZ   r   c                f   t          |t                    rd|j        d}nwt          |t                    rd|j        d}nWt          |t                    rd|j        d}n7t          |t
                    r|j        |j        d}nt          d|           d|j        v r|j        d         |d<   |S )Nuser)rolecontent	assistantsystemzGot unknown type r:   )	rX   r   rj   r   r   r   ri   
ValueErroradditional_kwargs)r$   rZ   message_dicts      r   rY   z3PromptLayerCallbackHandler._convert_message_to_dict   s    g|,, 		<$*wGGLL++ 	<$/GOLLLL// 	<$,IILL-- 	<$+LW_MMLL:::;;;W...#*#<V#DL r&   List[BaseMessage]+Tuple[List[Dict[str, Any]], Dict[str, Any]]c                ,     i } fd|D             }||fS )Nc                :    g | ]}                     |          S  )rY   r3   s     r   r6   zDPromptLayerCallbackHandler._create_message_dicts.<locals>.<listcomp>   s'    LLLa66q99LLLr&   rt   )r$   r+   paramsmessage_dictss   `   r   r2   z0PromptLayerCallbackHandler._create_message_dicts   s.     "$LLLL8LLLf$$r&   )NN)r   r   r   r    r   r!   )r)   r*   r+   r,   r-   r   r'   r.   r(   r    r/   r   r   r   )r)   r*   rC   rD   r-   r   r'   r.   r(   r    r/   r   r   r   )
rG   r   r-   r   r'   r.   r/   r   r   r!   )rZ   r   r   r*   )r+   rp   r   rq   )
__name__
__module____qualname____doc__r%   rB   rF   rf   rY   r2   rt   r&   r   r   r   &   s        ++ 8<'+	3 	3 	3 	3 	3" )-$(
 
 
 
 
 
0 )-$(
 
 
 
 
 
. )-53 53 53 53 53 53n   % % % % % %r&   r   )r   r   )rz   
__future__r   r?   typingr   r   r   r   r	   r
   r   uuidr   langchain_core.callbacksr   langchain_core.messagesr   r   r   r   r   langchain_core.outputsr   r   r   r   r   rt   r&   r   <module>r      sW   ' ' " " " " " "  L L L L L L L L L L L L L L L L L L       8 8 8 8 8 8                    
  	 	 	 	}% }% }% }% }%!4 }% }% }% }% }%r&   