
    f3fiD                    D   d Z ddlmZ ddlmZ ddlmZmZmZ ddl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mZ dd	lmZ dd
lmZmZmZmZmZmZmZ ddl m!Z!m"Z"m#Z# eeeedf   Z$ee%e&eeedf   Z' G d de      Z(e%e&ee)e&e*f   e(e)e&ef   f   f   Z+	 e G d de             Z, G d de      Z- G d de#      Z.ee(e.e)e&e*f   e)e&ef   f   Z/ G d de      Z0e0Z1 G d de0      Z2 G d de#      Z3 G d de-      Z4 G d de-      Z5 G d d e      Z6 G d! d"e      Z7e7Z8 G d# d$e&e      Z9 G d% d&e      Z:e!d'   Z; G d( d)e#d*+      Z< G d, d-e:      Z= G d. d/e      Z>d0 Z? G d1 d2e      Z@ G d3 d4e@      ZA G d5 d6e&e      ZB G d7 d8e#d*+      ZC G d9 d:e@      ZD G d; d<e      ZE G d= d>eE      ZF G d? d@eE      ZG G dA dBe      ZH G dC dDe      ZI G dE dFe#d*+      ZJ G dG dHe#d*+      ZK G dI dJeI      ZL G dK dLeI      ZM G dM dNe      ZN G dO dPeN      ZOe G dQ dRe             ZP G dS dTe#d*+      ZQ G dU dVe      ZR G dW dXeR      ZS G dY dZe#d*+      ZT G d[ d\e      ZUe4j                           G d] d^e      ZW G d_ d`e      ZX G da dbe#d*+      ZY G dc dde#d*+      ZZ G de dfe      Z[ G dg dhe      Z\ G di dje      Z] G dk dle      Z^ G dm dne      Z_ G do dpe      Z` G dq dre&e      Za G ds dte#d*+      Zb G du dve#d*+      Zc G dw dxe#d*+      Zd G dy dze#d*+      Ze G d{ d|e#      Zf G d} d~e#d*+      Zg G d de#      Zh G d de4      Zi G d de#      Zj G d de#      Zk G d de      Zl G d de      Zm G d de      Zn G d de      Zo G d den      Zpy)zSchemas for the LangSmith API.    )annotations)Iterator)datetime	timedeltatimezone)Decimal)Enum)Path)	AnnotatedAny
NamedTupleOptionalProtocolUnionruntime_checkable)UUID)	BaseModel
ConfigDictFieldPrivateAttr
StrictBoolStrictFloat	StrictInt)LiteralNotRequired	TypedDictNc                  &    e Zd ZU dZded<   ded<   y)
Attachmenta  Annotated type that will be stored as an attachment if used.

    Examples:
        ```python
        from langsmith import traceable
        from langsmith.schemas import Attachment


        @traceable
        def my_function(bar: int, my_val: Attachment):
            # my_val will be stored as an attachment
            # bar will be stored as inputs
            return bar
        ```
    str	mime_typeUnion[bytes, Path]dataN__name__
__module____qualname____doc____annotations__     O/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langsmith/schemas.pyr   r   $   s      N
r*   r   c                  ,    e Zd ZdZdddZdd	dZd
dZy)BinaryIOLikez$Protocol for binary IO-like objects.c                     y)zRead function.Nr)   )selfsizes     r+   readzBinaryIOLike.readD       r*   c                     y)zSeek function.Nr)   )r/   offsetwhences      r+   seekzBinaryIOLike.seekH   r2   r*   c                     y)zGet value function.Nr)   r/   s    r+   getvaluezBinaryIOLike.getvalueL   r2   r*   N))r0   intreturnbytes)r   )r4   r;   r5   r;   r<   r;   )r<   r=   )r$   r%   r&   r'   r1   r6   r9   r)   r*   r+   r-   r-   @   s    .r*   r-   c                      e Zd ZU dZded<    ed      Zded<    ed      Zded<    ed      Zded	<    e	d
d
      Z
y)ExampleBasezExample base model.r   
dataset_idNdefaultOptional[dict[str, Any]]inputsoutputsmetadataT)frozenarbitrary_types_allowed)r$   r%   r&   r'   r(   r   rD   rE   rF   r   model_configr)   r*   r+   r?   r?   Q   sG    ',T':F$:(-d(;G%;).t)<H&<T4HLr*   r?   c                  "    e Zd ZU ded<   ded<   y)_AttachmentDictr   r    r!   r"   N)r$   r%   r&   r(   r)   r*   r+   rK   rK   \   s    N
r*   rK   c                       e Zd ZU dZdZded<    ed       Zded<    ed	      Zd
ed<    ed	      Z	d
ed<    ed	      Z
d
ed<   dZded<   dZded<   dZded<   dZded<   dZded<    fdZ xZS )ExampleCreatez Example upload with attachments.NOptional[UUID]idc                 H    t        j                  t        j                        S Nr   nowr   utcr)   r*   r+   <lambda>zExampleCreate.<lambda>j       hll9S r*   default_factoryr   
created_atrA   rC   rD   rE   rF   Optional[Union[str, list[str]]]splitz$Optional[dict[str, _AttachmentLike]]attachmentsFbooluse_source_run_ioOptional[list[str]]use_source_run_attachmentssource_run_idc                $    t        |   di | yzInitialize from dict.Nr)   super__init__r/   r"   	__class__s     r+   rf   zExampleCreate.__init__t        4 r*   )r$   r%   r&   r'   rO   r(   r   rY   rD   rE   rF   r[   r\   r^   r`   ra   rf   __classcell__rh   s   @r+   rM   rM   f   s    *B 1STJT',T':F$:(-d(;G%;).t)<H&<-1E*18<K5<#t#6: 3:$(M>(! !r*   rM   c                      e Zd ZU dZded<   y)ExampleUpsertWithAttachmentsz Example create with attachments.r   r@   Nr#   r)   r*   r+   rm   rm   |   s    *r*   rm   c                  0    e Zd ZU dZded<   ded<   ded<   y)	AttachmentInfozInfo for an attachment.r   presigned_urlr-   readerOptional[str]r    Nr#   r)   r*   r+   ro   ro      s    !r*   ro   c                  "    e Zd ZU dZded<    ed       Zded<    e ed      	      Zded
<    ed	      Z	ded<   dZ
ded<    ed	      Zded<   	  ed	      Zded<    ed	      Zded<   	 	 d	 	 	 	 	 	 	 d fdZedd       Zd Z xZS )ExamplezExample model.r   rO   c                 L    t        j                  dt        j                        S )Nr   )tz)r   fromtimestampr   rT   r)   r*   r+   rU   zExample.<lambda>   s     6 6qX\\ J r*   rW   r   rY   z$00000000-0000-0000-0000-000000000000rA   r@   NOptional[datetime]modified_atrN   ra   z#Optional[dict[str, AttachmentInfo]]r\   rr   	_host_url
_tenant_idc                @    t        |   di | || _        || _        y)Initialize a Dataset object.Nr)   )re   rf   rz   r{   )r/   rz   r{   kwargsrh   s       r+   rf   zExample.__init__   s#     	"6""$r*   c                    | j                   r^d| j                   d| j                   }| j                  r&| j                    dt	        | j                         | S | j                    | S y)URL of this run within the app.
/datasets/z/e//o/N)rz   r@   rO   r{   r   )r/   paths     r+   urlzExample.url   sh     >>0DGG9=D..)S-A,B4&IInn%dV,,r*   c                n    | j                    d| j                   d| j                   d| j                   dS )5Return a string representation of the RunBase object.(id=z, dataset_id=z, link=''))rh   rO   r@   r   r8   s    r+   __repr__zExample.__repr__   s8    ..!dggYmDOO;LHUYU]U]T^^`aar*   )NN)rz   rr   r{   rN   r~   r   r<   Noner<   rr   )r$   r%   r&   r'   r(   r   rY   r   r@   ry   ra   r\   r   rz   r{   rf   propertyr   r   rj   rk   s   @r+   rt   rt      s    H JJ  T*P%QRJR&+D&9K#9$(M>(7<T7JK4J.*48I}8!,T!:J: $(%)	% 	% #	% 		%
 
	%  br*   rt   c                      e Zd ZU dZded<   y)ExampleSearchzExample returned via search.r   rO   Nr#   r)   r*   r+   r   r      s
    &Hr*   r   c                  N    e Zd ZU dZ eed      Zded<    eed      Z	ded<   y	)
AttachmentsOperationsz%Operations to perform on attachments.z,Mapping of old attachment names to new names)rX   descriptionzdict[str, str]renamez List of attachment names to keep	list[str]retainN)
r$   r%   r&   r'   r   dictr   r(   listr   r)   r*   r+   r   r      s5    /"*XFN  *LFI r*   r   c                       e Zd ZU dZded<   dZded<    ed      Zded	<    ed      Zded
<    ed      Z	ded<   dZ
ded<   dZded<   dZded<    ed      Z fdZ xZS )ExampleUpdatez Example update with attachments.r   rO   NrN   r@   rA   rC   rD   rE   rF   rZ   r[   zOptional[Attachments]r\   zOptional[AttachmentsOperations]attachments_operationsTrG   c                $    t        |   di | yrc   rd   rg   s     r+   rf   zExampleUpdate.__init__   ri   r*   )r$   r%   r&   r'   r(   r@   r   rD   rE   rF   r[   r\   r   r   rI   rf   rj   rk   s   @r+   r   r      s{    *H!%J%',T':F$:(-d(;G%;).t)<H&<-1E*1)-K&->B;BT*L! !r*   r   c                      e Zd ZdZdZdZdZy)DataTypezEnum for dataset data types.kvllmchatN)r$   r%   r&   r'   r   r   r   r)   r*   r+   r   r      s    &	B
CDr*   r   c                  J    e Zd ZU dZded<   dZded<   dZded<    ed	
      Zy)DatasetBasezDataset base model.r   nameNrr   r   zOptional[DataType]	data_typeTr   )	r$   r%   r&   r'   r(   r   r   r   rI   r)   r*   r+   r   r      s)    
I!%K%$(I!(T*Lr*   r   )remove_system_messagesconvert_to_openai_messageconvert_to_openai_toolremove_extra_fieldsextract_tools_from_runc                  &    e Zd ZU dZded<   ded<   y)DatasetTransformationz#Schema for dataset transformations.r   r   z%Union[DatasetTransformationType, str]transformation_typeNr#   r)   r*   r+   r   r      s    -
O>>r*   r   F)totalc                  8    e Zd ZU dZded<   ded<    ed      Zded	<   dZd
ed<   dZd
ed<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<    ed      Zded<    ed      Zded<    ed      Zded<   	 	 	 d	 	 	 	 	 	 	 	 	 d fdZedd       Z xZS )DatasetzDataset ORM model.r   rO   r   rY   NrA   rx   ry   Optional[int]example_countsession_countlast_session_start_timerC   inputs_schemaoutputs_schemaz%Optional[list[DatasetTransformation]]transformationsrF   rr   rz   rN   r{   _public_pathc                    d|v r|j                  d      |d<   d|v r|j                  d      |d<   t        |   di | || _        || _        || _        y)r}   inputs_schema_definitionr   outputs_schema_definitionr   Nr)   )popre   rf   rz   r{   r   )r/   rz   r{   r   r~   rh   s        r+   rf   zDataset.__init__  sd     &/&,jj1K&LF?#&&0'-zz2M'NF#$"6""$(r*   c                   | j                   r~| j                  r| j                    | j                   S | j                  r1| j                    dt        | j                         d| j                   S | j                    d| j                   S y)r   r   r   N)rz   r   r{   r   rO   r8   s    r+   r   zDataset.url!  s}     >>  ..)$*;*;)<==..)S-A,B*TWWIVVnn%Zy99r*   )NNN)
rz   rr   r{   rN   r   rr   r~   r   r<   r   r   )r$   r%   r&   r'   r(   r   ry   r   r   r   r   r   r   rF   r   rz   r{   r   rf   r   r   rj   rk   s   @r+   r   r      s    H&+D&9K#9#'M='#'M='26/6.2M+2/3N,3=AO:A)-H&-*48I}8!,T!:J:"-d";L-; $(%)&*	) ) #) $	)
 ) 
)&  r*   r   c                  *    e Zd ZU dZdZded<   ded<   y)DatasetVersionz%Class representing a dataset version.Nr_   tagsr   as_of)r$   r%   r&   r'   r   r(   r)   r*   r+   r   r   -  s    / $D
$Or*   r   c                 
    di iS )NrF   r)   r)   r*   r+   _default_extrar   4  s    r*   c                  j   e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 d	Zd
ed<   	  ee      Zded<   	 d	Z	ded<   	 d	Z
ded<   	 d	Zded<   	  ee      Zded<   	 d	Zded<   	 d	Zded<   	 d	Zded<   	 d	Zded<   	  ee      Zded<   	 ed$d       Zed%d       Zed&d        Zd! Z ed"#      Zy	)'RunBasea3  Base Run schema.

    A Run is a span representing a single unit of work or operation within your LLM app.
    This could be a single call to an LLM or chain, to a prompt formatting call,
    to a runnable lambda invocation. If you are familiar with OpenTelemetry,
    you can think of a run as a span.
    r   rO   r   r   r   
start_timerun_typeNrx   end_timerW   Optional[dict]extrarr   error
serializedOptional[list[dict]]eventsr   rD   rE   rN   reference_example_idparent_run_idr_   r   z-Union[Attachments, dict[str, AttachmentInfo]]r\   c                `    | j                   i | _         | j                   j                  di       S zRetrieve the metadata (if any).rF   )r   
setdefaultr8   s    r+   rF   zRunBase.metadatau  s,     ::DJzz$$Z44r*   c                8    | j                   j                  d      S )z"Retrieve the revision ID (if any).revision_id)rF   getr8   s    r+   r   zRunBase.revision_id|  s     }}  //r*   c                j    | j                   y| j                   | j                  z
  j                         S )zLatency in seconds.N)r   r   total_secondsr8   s    r+   latencyzRunBase.latency  s-     == />>@@r*   c                n    | j                    d| j                   d| j                   d| j                   dS )r   r   z, name='z', run_type='r   )rh   rO   r   r   r8   s    r+   r   zRunBase.__repr__  s3    ..!dggYhtyykt}}o]_``r*   T)rH   r<   dict[str, Any])r<   rN   )r<   Optional[float])r$   r%   r&   r'   r(   r   r   r   r   r   r   r   r   rD   rE   r   r   r   r\   r   rF   r   r   r   r   rI   r)   r*   r+   r   r   8  s-    	H(
I* M" $(H '-!.AE>A=E=;!%J%F#'F ' .FD.""G^"/+/./@$(M>(@ $D
$6AFBK> 
 5 5 0 0 A Aa d;Lr*   r   c                  P    e Zd ZU dZdZded<   	 dZded<   	 dZded<   	 dZd	ed
<   	 dZ	ded<   	 dZ
ded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 d ed!<   	  ed"#      Zd$ed%<   	 dZd&ed'<   	  ed#      Zded(<   d3d4 fd)Zed5d*       Zed6d+       Z ed6d,       Z!ed7d-       Z"ed7d.       Z#ed8d/       Z$ed8d0       Z%ed9d1       Z&ed9d2       Z' xZ(S ):Runz$Run schema when loading from the DB.NrN   
session_idOptional[list[UUID]]child_run_idszOptional[list[Run]]
child_runsrC   feedback_statsrr   app_pathmanifest_idstatusr   prompt_tokenscompletion_tokenstotal_tokenszOptional[dict[str, int]]prompt_token_detailscompletion_token_detailsrx   first_token_timeOptional[Decimal]
total_costprompt_costcompletion_costzOptional[dict[str, Decimal]]prompt_cost_detailscompletion_cost_detailsparent_run_idsr   trace_id rA   r   dotted_orderOptional[bool]
in_datasetrz   c                \   |j                  d      sd|j                  d      i|}|j                  dd      xs i }t        |   di |d|i || _        | j
                  j                         s;| j                  s.| j                  j                          | j                   | _        yyy)Initialize a Run object.r   rO   rD   Nr)   )r   r   re   rf   rz   r   stripr   r   	isoformatrO   )r/   rz   r~   rD   rh   s       r+   rf   zRun.__init__  s    zz*% &**T"2=f=FHd+1r161&1"  &&(1C1C#'??#<#<#>"?y ID 2D(r*   c                h    | j                   r&| j                  r| j                    | j                   S y)r   N)rz   r   r8   s    r+   r   zRun.url  s,     >>dmmnn%dmm_55r*   c                    | j                   S )zAlias for prompt_tokens.)r   r8   s    r+   input_tokenszRun.input_tokens  s     !!!r*   c                    | j                   S )zAlias for completion_tokens.)r   r8   s    r+   output_tokenszRun.output_tokens  s     %%%r*   c                    | j                   S )zAlias for prompt_cost.)r   r8   s    r+   
input_costzRun.input_cost  s     r*   c                    | j                   S )zAlias for completion_cost.)r   r8   s    r+   output_costzRun.output_cost  s     ###r*   c                    | j                   S )zAlias for prompt_token_details.)r   r8   s    r+   input_token_detailszRun.input_token_details  s     (((r*   c                    | j                   S )zAlias for output_token_details.)r   r8   s    r+   output_token_detailszRun.output_token_details  s     ,,,r*   c                    | j                   S )zAlias for prompt_cost_details.)r   r8   s    r+   input_cost_detailszRun.input_cost_details  s     '''r*   c                    | j                   S )z"Alias for completion_cost_details.)r   r8   s    r+   output_cost_detailszRun.output_cost_details  s     +++r*   rQ   rz   rr   r~   r   r<   r   r   )r<   z
int | None)r<   zDecimal | None)r<   zdict[str, int] | None)r<   zdict[str, Decimal] | None))r$   r%   r&   r'   r   r(   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rz   rf   r   r   r   r  r  r  r  r	  r  r  rj   rk   s   @r+   r   r     s   .!%J%-*.M'.4&*J#*M/3N,3&"Hm"7"&K&: FM .#'M='/'+}+/"&L-&15929 :>6= ,0(/-$(J!(M%)K")G)-O&-C8<5< =A9@ ,0N(/!NCb)L#)
 "&J%+*48I}8J   " " & &     $ $ ) ) - - ( ( , ,r*   r   c                  ,    e Zd ZdZdZdZdZdZdZdZ	dZ
y	)
RunTypeEnumz5(Deprecated) Enum for run types. Use string directly.toolchainr   	retriever	embeddingpromptparserN)r$   r%   r&   r'   r  r  r   r  r  r  r  r)   r*   r+   r  r    s(    ?DE
CIIFFr*   r  c                     e Zd ZU dZded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d ed!<   ded"<   d#ed$<   y%)&RunLikeDictz&Run-like dictionary, for type-hinting.r   r   r  r   r   r   r   rD   rE   rx   r   r   rr   r   r   rN   r   r   r   r   r_   r   inputs_s3_urlsoutputs_s3_urlsrO   r   session_namer   input_attachmentsoutput_attachmentsr   r   r   Attachmentsr\   Nr#   r)   r*   r+   r  r    s    0
I  !!  
""##((%%&&Nr*   r  c                  0    e Zd ZU dZdZded<   	 dZded<   y)RunWithAnnotationQueueInfoz&Run schema with annotation queue info.Nrx   last_reviewed_timeadded_at)r$   r%   r&   r'   r!  r(   r"  r)   r*   r+   r   r   :  s"    0-1*1.#'H '3r*   r   c                  Z    e Zd ZU dZded<   	  ee      Zded<   	 dZded	<   	 dZ	d
ed<   y)FeedbackSourceBasezBase class for feedback sources.

    This represents whether feedback is submitted from the API, model, human labeler,
        etc.
    r   typerW   rC   rF   NzOptional[Union[UUID, str]]user_idrr   	user_name)
r$   r%   r&   r'   r(   r   r   rF   r&  r'  r)   r*   r+   r$  r$  C  s?     I*).t)DH&D6*.G'.:#I}#<r*   r$  c                       e Zd ZU dZdZded<   y)APIFeedbackSourcezAPI feedback source.apizLiteral['api']r%  Nr$   r%   r&   r'   r%  r(   r)   r*   r+   r)  r)  T  s     D. r*   r)  c                       e Zd ZU dZdZded<   y)ModelFeedbackSourcezModel feedback source.modelzLiteral['model']r%  Nr+  r)   r*   r+   r-  r-  Z  s     $D
$r*   r-  c                      e Zd ZdZdZ	 dZy)FeedbackSourceTypezFeedback source type.r*  r.  N)r$   r%   r&   r'   APIMODELr)   r*   r+   r0  r0  `  s    
C2E"r*   r0  c                     e Zd ZU dZded<   	 dZded<   	 dZded<   	 ded	<   	 ded
<   	 ded<   	 dZded<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	  ed      Zy)FeedbackBasezFeedback schema.r   rO   Nrx   rY   ry   rN   run_idr   r   key
SCORE_TYPEscore
VALUE_TYPEvaluerr   commentzUnion[str, dict, None]
correctionOptional[FeedbackSourceBase]feedback_sourcer   comparative_experiment_idfeedback_group_idr   r   Tr   )r$   r%   r&   r'   r(   rY   ry   r8  r:  r;  r<  r>  r   r?  r@  r   r   rI   r)   r*   r+   r4  r4  i  s    H(%)J"),&*K#*2<>	HAE:+E:Q!G]!2)-J&-!48O18%!%J%T04~4X(,~,1 !E> 'T*Lr*   r4  c                  (    e Zd ZU dZded<   	 ded<   y)FeedbackCategoryz+Specific value and label pair for feedback.floatr:  rr   labelNr#   r)   r*   r+   rB  rB    s    5LCNr*   rB  c                  @    e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   y	)
FeedbackConfigz:Represents _how_ a feedback value ought to be interpreted.z0Literal['continuous', 'categorical', 'freeform']r%  r   minmaxz Optional[list[FeedbackCategory]]
categoriesNr#   r)   r*   r+   rF  rF    s,    D
::	4	400@r*   rF  c                  <    e Zd ZU dZded<   	 dZded<   	 dZded<   y)	FeedbackCreatez"Schema used for creating feedback.r$  r>  NzOptional[FeedbackConfig]feedback_configr   r   )r$   r%   r&   r'   r(   rL  r   r)   r*   r+   rK  rK    s&    ,''%04O-4% E> r*   rK  c                  B    e Zd ZU dZded<   ded<   	 ded<   	 dZded	<   y)
FeedbackzSchema for getting feedback.r   rO   r   rY   ry   Nr=  r>  )r$   r%   r&   r'   r(   r>  r)   r*   r+   rN  rN    s*    &H,248O182r*   rN  c                       e Zd ZU dZded<   	  ed       Zded<   	 dZd	ed
<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	 ded<   	 ded<   	  ed      Zded<   dd fdZedd       Zedd       Zedd       Z xZS )TracerSessionzbTracerSession schema for the API.

    Sessions are also referred to as "Projects" in the UI.
    r   rO   c                 H    t        j                  t        j                        S rQ   rR   r)   r*   r+   rU   zTracerSession.<lambda>  rV   r*   rW   r   r   Nrx   r   rr   r   r   rC   r   	tenant_idrN   reference_dataset_idrA   rz   c                    t        |   di | || _        | j                  j                  0| j                  j                  t        j                        | _        yy)r   N)tzinfor)   )re   rf   rz   r   rU  replacer   rT   )r/   rz   r~   rh   s      r+   rf   zTracerSession.__init__  sL    "6""??!!)"oo55X\\5JDO *r*   c                l    | j                   r(| j                    d| j                   d| j                   S y)r   r   /projects/p/N)rz   rR  rO   r8   s    r+   r   zTracerSession.url  s3     >>nn%S(8TWWINNr*   c                X    | j                   d| j                   vri S | j                   d   S r   r   r8   s    r+   rF   zTracerSession.metadata  -     ::4::!=Izz*%%r*   c                X    | j                   d| j                   vrg S | j                   d   S )zRetrieve the tags (if any).r   rZ  r8   s    r+   r   zTracerSession.tags  s-     ::tzz!9Izz&!!r*   rQ   r  r   r   )r<   r   )r$   r%   r&   r'   r(   r   r   r   r   r   r   r   rz   rf   r   r   rF   r   rj   rk   s   @r+   rP  rP    s    
 	H  1STJT+#'H ')!%K%)D-"&*E#*)O0((J*48I}8K   & & " "r*   rP  c                     e Zd ZU dZdZded<   	 dZded<   	 dZded<   	 dZded<   	 dZ	ded	<   	 dZ
ded
<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   y)TracerSessionResultzqA project, hydrated with additional information.

    Sessions are also referred to as "Projects" in the UI.
    Nr   	run_countOptional[timedelta]latency_p50latency_p99r   r   r   rx   last_run_start_timerC   r   session_feedback_statsOptional[list[dict[str, Any]]]
run_facetsr   r   r   r   first_token_p50first_token_p99r   
error_rate)r$   r%   r&   r'   r_  r(   ra  rb  r   r   r   rc  r   rd  rf  r   r   r   rg  rh  ri  r)   r*   r+   r^  r^    s    
  $I}#,'+K$+?'+K$+6"&L-&=#'M='D'+}+H.2+28/3N,3)7;4;115J.5-$(J!(M%)K")G)-O&-C+/O(/G+/O(/>"&J&)r*   r^  c                  <    e Zd ZU dZded<   	 ded<   	 edd       Zy)	BaseMessageLikez7A protocol representing objects similar to BaseMessage.r   contentzdict[Any, Any]additional_kwargsc                     y)z,Type of the Message, used for serialization.Nr)   r8   s    r+   r%  zBaseMessageLike.type$  s    r*   Nr<   r   )r$   r%   r&   r'   r(   r   r%  r)   r*   r+   rk  rk    s(    AL%%%C; ;r*   rk  c                  4    e Zd ZU dZded<   	 ded<   	 ded<   y)DatasetShareSchemaz*Represents the schema for a dataset share.r   r@   share_tokenr   r   Nr#   r)   r*   r+   rq  rq  )  s    4 ,	H(r*   rq  c                      e Zd ZU dZded<   	 ded<   	 dZded<   	  ed	 
      Zded<   	  ed 
      Zded<   	 ded<   y)AnnotationQueuezRepresents an annotation queue.r   rO   r   r   Nrr   r   c                 H    t        j                  t        j                        S rQ   rR   r)   r*   r+   rU   zAnnotationQueue.<lambda>=  rV   r*   rW   r   rY   c                 H    t        j                  t        j                        S rQ   rR   r)   r*   r+   rU   zAnnotationQueue.<lambda>?  rV   r*   
updated_atrR  )	r$   r%   r&   r'   r(   r   r   rY   rw  r)   r*   r+   rt  rt  4  sP    )H8
I+!%K%: 1STJT> 1STJTCODr*   rt  c                       e Zd ZU dZdZded<   y)AnnotationQueueWithDetailsz,Represents an annotation queue with details.Nrr   rubric_instructions)r$   r%   r&   r'   rz  r(   r)   r*   r+   ry  ry  E  s    6)--;r*   ry  c                  X    e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 d	ed
<   y)BatchIngestConfigz"Configuration for batch ingestion.r]   use_multipart_endpointr;   scale_up_qsize_triggerscale_up_nthreads_limitscale_down_nempty_trigger
size_limitr   size_limit_bytesNr#   r)   r*   r+   r|  r|  L  s:    ,  D<  7""AO/##8r*   r|  c                  P    e Zd ZU dZdZded<   	 dZded<   	 dZded	<   	 dZd
ed<   y)LangSmithInfoz'Information about the LangSmith server.r   r   versionNrx   license_expiration_timezOptional[BatchIngestConfig]batch_ingest_configrC   instance_flags)	r$   r%   r&   r'   r  r(   r  r  r  r)   r*   r+   r  r  ]  s;    1GS.26/6+7;4;/3N,3r*   r  c                  D    e Zd ZU dZded<   	 ded<   	 ded<   	 dZded	<   y)
LangSmithSettingsz"Settings for the LangSmith tenant.r   rO   display_namer   rY   Nrr   tenant_handle)r$   r%   r&   r'   r(   r  r)   r*   r+   r  r  l  s)    ,G)*#'M='r*   r  c                  4    e Zd ZU dZded<   	 ded<   	 ded<   y)	FeedbackIngestTokenz2Represents the schema for a feedback ingest token.r   rO   r   r   r   
expires_atNr#   r)   r*   r+   r  r  x  s    <H.	H3+r*   r  c                  4    e Zd ZU dZded<   	 ded<   	 ded<   y)	RunEventzRun event schema.r   r   zUnion[datetime, str]timerC   r~   Nr#   r)   r*   r+   r  r    s    
I
$$,r*   r  c                  4    e Zd ZU dZded<   	 ded<   	 ded<   y)TimeDeltaInputzTimedelta input schema.r;   dayshoursminutesNr#   r)   r*   r+   r  r    s    !
IJLr*   r  c                  4    e Zd ZU dZded<   	 ded<   	 ded<   y)DatasetDiffInfoz;Represents the difference information between two datasets.z
list[UUID]examples_modifiedexamples_addedexamples_removedNr#   r)   r*   r+   r  r    s     E!!=:  <r*   r  c                      e Zd ZU dZded<   	 dZded<   	 dZded<   	 ded<   	 d	ed
<   	 d	ed<   	 ded<   	 dZded<   	 dZded<   	 dZ	ded<   	 e
dd       Zy)ComparativeExperimentzRepresents a comparative experiment.

    This information summarizes evaluation results comparing
    two or more models on a given dataset.
    r   rO   Nrr   r   r   rR  r   rY   ry   rS  rC   r   r   experiments_infor   c                X    | j                   d| j                   vri S | j                   d   S r   rZ  r8   s    r+   rF   zComparativeExperiment.metadata  r[  r*   r   )r$   r%   r&   r'   r(   r   r   r   r  r   r   rF   r)   r*   r+   r  r    s     	H?D-:!%K%@OGDJJ&*E#*?-1*1\/3N,3P& &r*   r  c                  L    e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded	<   y
)PromptCommitz$Represents a Prompt with a manifest.r   ownerrepocommit_hashr   manifestz
list[dict]examplesNr#   r)   r*   r+   r  r    s0    .J0
I!(%r*   r  c                      e Zd ZU dZded<   	 ded<   	 ded<   	 dZded	<   	 dZded
<   	 dZded<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	  ee      Zded<   	 dZded<   	 dZded<   	 dZded<   y)ListedPromptCommitz;Represents a listed prompt commit with associated metadata.r   rO   r   r  r  NrN   r   repo_id	parent_idrr   r  rx   rY   rw  rW   r   example_run_idsr   r   num_downloads	num_viewsparent_commit_hash)r$   r%   r&   r'   r(   r   r  r  r  rY   rw  r   r   r  r  r  r  r)   r*   r+   r  r    s    EH6J)
I3"&K&O"G^"5 $I~$8!%K%*%)J")=%)J")B,1$,GO)GH#$M=$> I} :(,,1r*   r  c                  8   e Zd ZU dZded<   	 dZded<   	 dZded<   	 ded<   	 ded	<   	 d
ed<   	 d
ed<   	 ded<   	 ded<   	 ded<   	 dZded<   	 dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 dZ	ded<   	 dZ
ded<   	 ded<   	 dZded<   	 dZded<   y) Promptz"Represents a Prompt with metadata.r   repo_handleNrr   r   readmerO   rR  r   rY   rw  r]   	is_publicis_archivedr   r   original_repo_idupstream_repo_idr  	full_namer;   	num_likesr  r  r   liked_by_auth_userlast_commit_hashnum_commitsoriginal_repo_full_nameupstream_repo_full_name)r$   r%   r&   r'   r(   r   r  r  r  r  r  r  r  r)   r*   r+   r  r    s    ,!!%K%( FM #GN,*-O')
O.&*m*3&*m*30N<N"N)--@&*m*& -1]1:-1]1:r*   r  c                  (    e Zd ZU dZded<   	 ded<   y)ListPromptsResponsez A list of prompts with metadata.zlist[Prompt]reposr;   r   Nr#   r)   r*   r+   r  r  3  s    *J&r*   r  c                  &    e Zd ZdZdZ	 dZ	 dZ	 dZy)PromptSortFieldz$Enum for sorting fields for prompts.r  r  rw  r  N)r$   r%   r&   r'   r  r  rw  r  r)   r*   r+   r  r  <  s%    .#MIJIr*   r  c                  4    e Zd ZU dZded<   	 ded<   	 ded<   y)InputTokenDetailsz~Breakdown of input token counts.

    Does *not* need to sum to full input token count. Does *not* need to have all keys.
    r;   audiocache_creation
cache_readNr#   r)   r*   r+   r  r  I  s(    
 J Or*   r  c                  (    e Zd ZU dZded<   	 ded<   y)OutputTokenDetailszBreakdown of output token counts.

    Does *not* need to sum to full output token count. Does *not* need to have all keys.
    r;   r  	reasoningNr#   r)   r*   r+   r  r  ^  s    
 JNr*   r  c                  4    e Zd ZU dZded<   	 ded<   	 ded<   y)InputCostDetailszvBreakdown of input token costs.

    Does *not* need to sum to full input cost. Does *not* need to have all keys.
    rC  r  r  r  Nr#   r)   r*   r+   r  r  n  s)    
 L% r*   r  c                  (    e Zd ZU dZded<   	 ded<   y)OutputCostDetailszxBreakdown of output token costs.

    Does *not* need to sum to full output cost. Does *not* need to have all keys.
    rC  r  r  Nr#   r)   r*   r+   r  r    s    
 L&r*   r  c                      e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 d
ed<   	 d
ed<   	 ded<   	 ded<   y)UsageMetadatazUsage metadata for a message, such as token counts.

    This is a standard representation of token usage that is consistent across models.
    r;   r   r  r   zNotRequired[InputTokenDetails]r  zNotRequired[OutputTokenDetails]r	  zNotRequired[float]r  r  r   zNotRequired[InputCostDetails]r  zNotRequired[OutputCostDetails]r  Nr#   r)   r*   r+   r  r    sk    
 JPA77 :9 #"'##(""'55/770r*   r  c                      e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 d
ed<   	 d
ed<   	 ded<   	 ded<   y)ExtractedUsageMetadatazUsage metadata dictionary extracted from a run.

    Should be the same as UsageMetadata, but does not require all
    keys to be present.
    r;   r   r  r   r  r  r  r	  rC  r  r  r   r  r  r  r  Nr#   r)   r*   r+   r  r    sc     33****,,+'('((/**0r*   r  c                  (    e Zd ZU dZded<   	 ded<   y)UpsertExamplesResponsezCResponse object returned from the upsert_examples_multipart method.r;   countr   example_idsNr#   r)   r*   r+   r  r    s    MJ45r*   r  c                  .    e Zd ZU dZ ee      Zded<   y)ExampleWithRunszExample with runs.rW   z	list[Run]runsN)r$   r%   r&   r'   r   r   r  r(   r)   r*   r+   r  r    s    D1D)1"r*   r  c                      e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   	 ded<   y)ExperimentRunStatsz!Run statistics for an experiment.r   r_  r`  ra  rb  r   r   r   rx   rc  re  rf  r   r   r   r   rg  rh  r   ri  Nr#   r)   r*   r+   r  r    s    +,$$?$$6=  D$$H++8..-!!M""G&&C((G((>)r*   r  c                  4    e Zd ZU dZded<   	 ded<   	 ded<   y)	ExperimentResultszResults container for experiment data with stats and examples.

    Breaking change in v0.4.32:
        The 'stats' field has been split into 'feedback_stats' and 'run_stats'.
    r   r   r  	run_statszIterator[ExampleWithRuns]examples_with_runsNr#   r)   r*   r+   r  r    s!     1!!611r*   r  c                  v    e Zd ZU dZded<   ded<   ded<   dZded	<   ded
<   ded<   ded<   edd       ZddZy)InsightsReportzHAn Insights Report created by the Insights Agent over a tracing project.z
UUID | strrO   r   r   r   Nz
str | Noner   
project_idhost_urlrR  c           	         | j                    dt        | j                         dt        | j                         dt        | j                         S )z1URL to view this Insights Report in LangSmith UI.r   rX  z?tab=4&clusterJobId=)r  r   rR  r  rO   r8   s    r+   linkzInsightsReport.link  sH     --C$7#8SEYDZZnorswszszo{n|}}r*   c                <    d| j                    d| j                   dS )Nz	<a href="z2", target="_blank" rel="noopener">InsightsReport('z')</a>)r  r   r8   s    r+   _repr_html_zInsightsReport._repr_html_"  s%    499+%XY]YbYbXccjkkr*   ro  )	r$   r%   r&   r'   r(   r   r   r  r  r)   r*   r+   r  r    sI    RN
IKE:M~ ~lr*   r  c                  0    e Zd ZU dZded<   ded<   ded<   y)	FeedbackFormulaWeightedVariablezBA feedback key and weight used when calculating feedback formulas.zLiteral['weighted_key']	part_typerC  weightz#Annotated[str, Field(min_length=1)]r6  Nr#   r)   r*   r+   r  r  &  s    L&&M	,,r*   r  c                  b    e Zd ZU dZdZded<   dZded<   ded<   ded	<    ed
dd      Zded<   y)FeedbackFormulaCreatez,Schema used for creating a feedback formula.NrN   r@   r   r   feedback_keyLiteral['sum', 'avg']aggregation_type.   2   
min_length
max_length%list[FeedbackFormulaWeightedVariable]formula_parts)	r$   r%   r&   r'   r@   r(   r   r   r  r)   r*   r+   r  r  .  s>    6!%J%!%J%++;@b<M8 r*   r  c                  F    e Zd ZU dZded<   ded<    eddd	      Zd
ed<   y)FeedbackFormulaUpdatez,Schema used for updating a feedback formula.r   r  r  r  .r  r  r  r  r  N)r$   r%   r&   r'   r(   r   r  r)   r*   r+   r  r  :  s*    6++;@b<M8 r*   r  c                  0    e Zd ZU dZded<   ded<   ded<   y)FeedbackFormulaz%Schema for getting feedback formulas.r   rO   r   rY   ry   Nr#   r)   r*   r+   r  r  D  s    /Hr*   r  )qr'   
__future__r   collections.abcr   r   r   r   decimalr   enumr	   pathlibr
   typingr   r   r   r   r   r   r   uuidr   pydanticr   r   r   r   r   r   r   typing_extensionsr   r   r   r7  r   r   r9  r   tupler=   r  r-   r?   rK   _AttachmentLikerM   ExampleUploadWithAttachmentsrm   ro   rt   r   r   r   ExampleUpdateWithAttachmentsr   r   DatasetTransformationTyper   r   r   r   r   r   r  r  r   r$  r)  r-  r0  r4  rB  rF  rK  rN  rP  r^  rk  rq  rt  ry  r|  r  model_rebuildr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)   r*   r+   <module>r     sb   $ " $ 2 2         > =:y+t;<
4j)[$FG
 * 3eCJ/U39=MMNNO 8   I) Ii 
 sEz!2E#t)4DD
!I !&  - = Y 'bk 'bTK I !I !&  - sD +) + $ ?IU ?-k -`Y T<i T<n,' ,D	#t 	)5 :4 4= ="!* !%, %# #$+9 $+NOy O@Ye @!\ !	3| 	33"I 3"l%*- %*P 
;h 
; 
;)% )Ei E"< <9	 9"	4I 	4    	(	 	(,) ,-y -Ye =i =!&I !&H 9  (2 (2V.;Y .;b') '
c4 
	 *%  y *	  1I 1D1Ye 1:6Y 6#g #* *B2	 2lY l(-i -	I 	I + r*   