
    >'h"              	          d dl Z d dlZd dlmZmZ d dlmZmZmZ d dlm	Z	 	 d dl
mZ dZ ej                  e      Zed   Zerdd	ed
edefdZdej*                  defdZdej*                  defdZdej0                  deeef   fdZdej4                  deeef   fdZdej8                  deeef   fdZdej<                  deeef   fdZdej@                  deeef   fdZ!dejD                  deeef   fdZ#dejH                  deeef   fdZ%dej*                  deeef   fdZ&	 ddee   dee   dee   defdZ'yy# e$ r dZY #w xY w)    N)datetimetimezone)AnyLiteralOptional)uuid4)tracingTF)toolchainllm	retriever	embeddingpromptparserdatadefault_keyreturnc                     t        | t              r| }|S t        | t              r/	 t        j                  |       }t        |t              r|}n|| i}|S | Gt        | d      r;t        | j                        r&t        | t              s	 | j                  dd      }|S || i}|S # t        j
                  $ r || i}Y |S w xY w# t        $ r3}t        j                  dt        |        d|        || i}Y d}~|S d}~ww xY w)a8  Parse inputs or outputs into a dictionary format.

        Args:
            data: The data to parse (can be inputs or outputs)
            default_key: The default key to use if data is not a dict
                ("input" or "output")

        Returns:
            Dict: The parsed data as a dictionary
        N
model_dumpTjsonexclude_nonemodez&Failed to use model_dump to serialize z
 to JSON: )
isinstancedictstrr   loadsJSONDecodeErrorhasattrcallabler   type	Exceptionloggerdebug)r   r   data_parsed_jsones        f/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/langsmith/wrappers/_agent_utils.pyparse_ior)      s    dD!E4 3 c","jj.k40'E($/E&  l+)tT*,TG  !$'E% '' ,$d+" %,  ,<T$ZL
STRUV %d+ ,s)   ,B# C #B>=B>	C=
(C88C=spanc                 P    t        | j                  dd       }|dv ry|dv ry|dv ryy)Nr!   )agenthandoffcustomr   )function	guardrailr
   )
generationresponser   )getattr	span_datar*   	span_types     r(   get_run_typer7   <   s;    DNNFD9	663344    c                     t        | j                  d      r,| j                  j                  r| j                  j                  S t        | j                  dd       }|dk(  ry|dk(  ry|dk(  ryy	)
Nnamer!   r1   
Generationr2   Responser-   HandoffSpan)r   r4   r:   r3   r5   s     r(   get_run_namer?   G   sb    4>>6*t~~/B/B>>&&&DNNFD9	$*$)#r8   r4   c                 \    t        | j                  d      t        | j                  d      dS )Ninputoutput)inputsoutputs)r)   rA   rB   r4   s    r(   _extract_function_span_datarF   T   s,     y8	 0 0(;
 	
r8   c                 V   t        | j                  d      t        | j                  d      | j                  | j                  dd}| j
                  rW| j
                  j                  d      | j
                  j                  d      | j
                  j                  d      d|d	   d
<   |S )NrA   rB   )modelmodel_config)rC   rD   invocation_paramstotal_tokensprompt_tokenscompletion_tokens)rK   input_tokensoutput_tokensrD   usage_metadata)r)   rA   rB   rH   rI   usageget)r4   r   s     r(   _extract_generation_span_datarS   \   s     y8	 0 0(;" ) 6 6"
 ?? ) 3 3N C ) 3 3O D!*!4!45H!I1DO,-
 r8   c           	      |   i }| j                   &| j                   | j                  j                  d|d<   | j                  n| j                  j                  dd      }d|j	                  dg       i|d<   |j	                  dd       x}rnd	|v r/|j	                  d	      |d
<   |d
   j	                  dd      |d
   d<   d|v r/|j	                  d      |d<   |d   j	                  dd      |d   d<   ||d   d<   |j                         D ci c]  \  }}|dv r|| c}}|d<   |j                         D ci c]   \  }}|h dj                  |d         vr||" }}}|j                  |d   j                  d      |d   j                  d      |d   j                  d      ddd       ||d<   |S c c}}w c c}}w )N)rA   instructionsrC   Tr   r   rB   rD   rQ   output_tokens_detailsoutput_token_detailsreasoning_tokensr   	reasoninginput_tokens_detailsinput_token_detailscached_tokens
cache_readrP   )
max_output_tokensrH   parallel_tool_callsrY   temperaturetexttool_choicetoolstop_p
truncationrJ   >   rQ   rB   rU   rH   r^   r`   chatopenai)ls_model_namels_max_tokensls_temperaturels_model_typels_providermetadata)	rA   r2   rU   r   popitemsunionupdaterR   )r4   r   r2   rQ   kvrm   s          r(   _extract_response_span_datart   o   s"     "??&" ) 2 2 ? ?DN ) ))44$V4TH'h)CDDO Wd33u3*e349II>U4VE01AF.Bc,a0 01+> *U23899=S3TE/0AF-Bc/1- /0> 5:Y 01 %NN,)Aq 1)D$%& %NN,Aq7==dCV>WX 1H  OO%)*=%>%B%B7%K%)*=%>%B%BCV%W&*+>&?&C&CM&R%+#+  (DI)"s   F26%F8c                 R    | j                   | j                  dd| j                  idS )N)rc   handoffsoutput_type)rJ   rm   )rc   rv   rw   rE   s    r(   _extract_agent_span_datarx      s5     #%.."
 y44
 	
r8   c                 8    d| j                   | j                  diS )NrC   
from_agentto_agentrz   rE   s    r(   _extract_handoff_span_datar}      s(     '22%..
 	
r8   c                 "    dd| j                   iiS )Nrm   	triggered)r   rE   s    r(   _extract_guardrail_span_datar      s     [)*=*=>??r8   c                     d| j                   iS )Nrm   )r   rE   s    r(   _extract_custom_span_datar      s    INN++r8   c                    i }t        | j                  t        j                        r&|j	                  t        | j                               |S t        | j                  t        j                        r&|j	                  t        | j                               |S t        | j                  t        j                        r&|j	                  t        | j                               |S t        | j                  t        j                        r&|j	                  t        | j                               |S t        | j                  t        j                        r&|j	                  t        | j                               |S t        | j                  t        j                        r&|j	                  t        | j                               |S t        | j                  t        j                         r&|j	                  t#        | j                               |S i S N)r   r4   r	   FunctionSpanDatarq   rF   GenerationSpanDatarS   ResponseSpanDatart   AgentSpanDatarx   HandoffSpanDatar}   GuardrailSpanDatar   CustomSpanDatar   )r*   r   s     r(   extract_span_datar      sq   !dnng&>&>?KK3DNNCD   (B(BCKK5dnnEF  (@(@AKK3DNNCD  (=(=>KK0@A  (?(?@KK24>>BC  (A(ABKK4T^^DE  (>(>?KK1$..AB  Ir8   
start_timerun_idparent_dotted_orderc                     | xs# t        j                  t        j                        }|xs t	        t                     }|j                  d      |z   }||dz   |z   S |S )z3Create a dotted order from a start time and run id.z%Y%m%dT%H%M%S%fZ.)r   nowr   utcr   r   strftime)r   r   r   stid_current_dotted_orders         r(   ensure_dotted_orderr      s]     58<<5$EG!{{+=>D*&,/CCC##r8   )rB   r   )(r   loggingr   r   typingr   r   r   uuidr   agentsr	   HAVE_AGENTSImportError	getLogger__name__r#   RunTypeTr   r   r)   r>   r7   r?   r   rF   r   rS   r   rt   r   rx   r   r}   r   r   r   r   r   r    r8   r(   <module>r      s     ' ) ) K 
		8	$WX&s & &D &P	7<< 	H 	7<< C 
++
	c3h
--	c3h&>++>	c3h>@	
G,A,A 	
d3PS8n 	

**
	c3h
@,,@	c3h@
,W-C-C ,SRUX , c3h 2 .2$X&$$ &c]$ 
	$a   Ks   E EE