
    ih                        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y)!Callback handler for promptlayer.    )annotationsN)TYPE_CHECKINGAnyCallableDictListOptionalTuple)UUID)BaseCallbackHandler)	AIMessageBaseMessageChatMessageHumanMessageSystemMessage)ChatGeneration	LLMResultc                 @    	 ddl } | S # t        $ r t        d      w xY w)z2Lazy import promptlayer to avoid circular imports.r   NzsThe PromptLayerCallbackHandler requires the promptlayer package.  Please install it with `pip install promptlayer`.)promptlayerImportError)r   s    p/var/www/html/dev/engine/venv/lib/python3.12/site-packages/langchain_community/callbacks/promptlayer_callback.py_lazy_import_promptlayerr      s6    
   
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	y)PromptLayerCallbackHandlerr   Nc                J    t                || _        |xs g | _        i | _        y)z*Initialize the PromptLayerCallbackHandler.N)r   pl_id_callbackpl_tagsruns)selfr   r   s      r   __init__z#PromptLayerCallbackHandler.__init__)   s$     	!",}"02	    )parent_run_idtagsc                  |D cg c]  }| j                  |      d    c}|j                  di       dj                  |d         t        j                  j	                         j                         |d| j                  |<   y c c}w )Nr   invocation_params.id)messagesr&   namerequest_start_timer$   )_create_message_dictsgetjoindatetimenow	timestampr   )r    
serializedr)   run_idr#   r$   kwargsms           r   on_chat_model_startz.PromptLayerCallbackHandler.on_chat_model_start4   su     DLLa33A6q9L!',?!DHHZ-."*"3"3"7"7"9"C"C"E
		&Ls   Bc                   ||j                  di       dj                  |d         t        j                  j                         j	                         |d| j
                  |<   y )Nr&   r'   r(   )promptsr&   r*   r+   r$   )r-   r.   r/   r0   r1   r   )r    r2   r8   r3   r#   r$   r4   s          r   on_llm_startz'PromptLayerCallbackHandler.on_llm_startF   sU     !',?!DHHZ-."*"3"3"7"7"9"C"C"E
		&r"   )r#   c                  ddl m}m} | j                  j	                  |i       }|sy t
        j
                  j                         j                         |d<   t        t        |j                              D ]c  }|j                  |   d   }	|	j                  |j                  d}
|j	                  di       }|j	                  dd       d u}|r|j	                  dg       |   n|j	                  dg       |   g}|r,t        |	t              r| j                  |	j                         gn|
} ||j	                  d      d	||| j"                  ||j	                  d
      |j	                  d       |       t%        | j&                  d u      t)        |      t)        |      t)        |j	                  dg             d      }| j&                  sS| j'                  |       f y )Nr   )get_api_keypromptlayer_api_requestrequest_end_time)text
llm_outputr&   r)   r8   r*   	langchainr+   r$   )_langchain_run_id_langchain_parent_run_id_langchain_tags)return_pl_idmetadata)promptlayer.utilsr;   r<   r   r-   r/   r0   r1   rangelengenerationsr>   r?   
isinstancer   _convert_message_to_dictmessager   boolr   str)r    responser3   r#   r4   r;   r<   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   s    	K99==,'/'8'8'<'<'>'H'H'J#$s8//01 '	3A!--a03J #&11D $<<(;R@L$LLT:$FM ! Z,Q/ll9b1!45  !Z
N%K ..z/A/ABC  4V$12/0!$"5"5T"AB),V03M0B'*8<<+C'DM$ ""##M2O'	3r"   c                v   t        |t              rd|j                  d}nxt        |t              rd|j                  d}nXt        |t              rd|j                  d}n8t        |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*   )	rJ   r   r]   r   r   r   r\   
ValueErroradditional_kwargs)r    rL   message_dicts      r   rK   z3PromptLayerCallbackHandler._convert_message_to_dict   s    g|,$*wGL+$/GOOLL/$,IL-$+LLW__ML0	:;;W...#*#<#<V#DL r"   c                T    i }|D cg c]  }| j                  |       }}||fS c c}w )N)rK   )r    r)   paramsr5   message_dictss        r   r,   z0PromptLayerCallbackHandler._create_message_dicts   s8     "$CKLa66q9LLf$$ Ms   %)NN)r   zOptional[Callable[..., Any]]r   Optional[List[str]]returnNone)r2   Dict[str, Any]r)   zList[List[BaseMessage]]r3   r   r#   Optional[UUID]r$   rf   r4   r   rg   r   )r2   ri   r8   z	List[str]r3   r   r#   rj   r$   rf   r4   r   rg   r   )
rO   r   r3   r   r#   rj   r4   r   rg   rh   )rL   r   rg   ri   )r)   zList[BaseMessage]rg   z+Tuple[List[Dict[str, Any]], Dict[str, Any]])
__name__
__module____qualname____doc__r!   r6   r9   rY   rK   r,    r"   r   r   r   &   s%   + 8<'+	34	3 %	3 
		3" )-$(
"
 *

 
 &
 "
 
 

0 )-$(
"
 

 
 &
 "
 
 

. )-5353 	53
 &53 53 
53n%)%	4%r"   r   )rg   r   )rn   
__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   ro   r"   r   <module>rv      sH    ' "  L L L  8 
 	}%!4 }%r"   