
    $h                    p   S r SSKJr  SSKJrJrJr  SSKJr  SSKJ	r	  SSK
JrJrJrJrJrJr  SSKJr  SSKJrJr   SS	KJrJrJrJrJrJr  SS
KJ r   SSKJ!r!  \\\\S4   r"\\#\$S4   r% " S S\5      r&\#\$\\'\$\(4   \&\'\$\ 4   4   4   r) \ " S S\5      5       r* " S S\5      r+ " S S\5      r,\\&\,\'\$\(4   \'\$\ 4   4   r- " S S\5      r.\.r/ " S S\.5      r0 " S S\5      r1 " S S\+5      r2 " S S\+5      r3 " S S \5      r4 " S! S"\5      r5\5r6 " S# S$\$\	5      r7 " S% S&\5      r8\!S'   r9 " S( S)\S*S+9r: " S, S-\85      r; " S. S/\5      r<S0 r= " S1 S2\5      r> " S3 S4\>5      r? " S5 S6\$\	5      r@ " S7 S8\S*S+9rA " S9 S:\>5      rB " S; S<\5      rC " S= S>\C5      rD " S? S@\C5      rE " SA SB\	5      rF " SC SD\5      rG " SE SF\S*S+9rH " SG SH\S*S+9rI " SI SJ\G5      rJ " SK SL\G5      rK " SM SN\5      rL " SO SP\L5      rM\ " SQ SR\5      5       rN " SS ST\S*S+9rO " SU SV\5      rP " SW SX\P5      rQ " SY SZ\S*S+9rR " S[ S\\5      rS\2R                  5          " S] S^\5      rU " S_ S`\5      rV " Sa Sb\S*S+9rW " Sc Sd\S*S+9rX " Se Sf\5      rY " Sg Sh\5      rZ " Si Sj\5      r[ " Sk Sl\5      r\ " Sm Sn\5      r] " So Sp\5      r^ " Sq Sr\$\	5      r_ " Ss St\S*S+9r` " Su Sv\S*S+9ra " Sw Sx\S*S+9rb " Sy Sz\S*S+9rc " S{ S|\5      rd " S} S~\S*S+9re " S S\5      rfg! \ a    SS	KJrJrJrJrJrJr   GNf = f)zSchemas for the LangSmith API.    )annotations)datetime	timedeltatimezone)Decimal)Enum)Any
NamedTupleOptionalProtocolUnionruntime_checkable)UUID)NotRequired	TypedDict)	BaseModelFieldPrivateAttr
StrictBoolStrictFloat	StrictInt)Path)LiteralNc                  .    \ rS rSr% SrS\S'   S\S'   Srg)	
Attachment/   a  Annotated type that will be stored as an attachment if used.

Examples:

    .. code-block:: 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]data N__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r!       I/var/www/html/shao/venv/lib/python3.13/site-packages/langsmith/schemas.pyr   r   /   s    " N
r*   r   c                  >    \ rS rSrSrSS	S jjrS
SS jjrSS jrSrg)BinaryIOLikeJ   z$Protocol for binary IO-like objects.c                    g)zRead function.Nr!   )selfsizes     r+   readBinaryIOLike.readN       r*   c                    g)zSeek function.Nr!   )r0   offsetwhences      r+   seekBinaryIOLike.seekR   r4   r*   c                    g)zGet value function.Nr!   r0   s    r+   getvalueBinaryIOLike.getvalueV   r4   r*   r!   N))r1   intreturnbytes)r   )r6   r?   r7   r?   r@   r?   )r@   rA   )	r#   r$   r%   r&   r'   r2   r8   r<   r)   r!   r*   r+   r-   r-   J   s    .r*   r-   c                  z    \ rS rSr% SrS\S'   \" SS9rS\S'   \" SS9rS\S	'   \" SS9r	S\S
'    " S S5      r
Srg)ExampleBase[   zExample base model.r   
dataset_idNdefaultOptional[dict[str, Any]]inputsoutputsmetadatac                       \ rS rSrSrSrSrSrg)ExampleBase.Configc   #Configuration class for the schema.Tr!   N)r#   r$   r%   r&   r'   frozenarbitrary_types_allowedr)   r!   r*   r+   ConfigrM   c   s    1"&r*   rR   r!   )r#   r$   r%   r&   r'   r(   r   rI   rJ   rK   rR   r)   r!   r*   r+   rC   rC   [   sE    ',T':F$:(-d(;G%;).t)<H&<' 'r*   rC   c                  *    \ rS rSr% S\S'   S\S'   Srg)_AttachmentDictj   r   r   r   r    r!   N)r#   r$   r%   r&   r(   r)   r!   r*   r+   rT   rT   j   s    N
r*   rT   c                     ^  \ rS rSr% SrS\S'   \" S S9rS\S'   \" S	S
9rS\S'   \" S	S
9r	S\S'   \" S	S
9r
S\S'   S	rS\S'   S	rS\S'   SrS\S'   S	rS\S'   S	rS\S'   U 4S jrSrU =r$ )ExampleCreatet   z Example upload with attachments.Optional[UUID]idc                 J    [         R                  " [        R                  5      $ Nr   nowr   utcr!   r*   r+   <lambda>ExampleCreate.<lambda>x       hll9Sr*   default_factoryr   
created_atNrF   rH   rI   rJ   rK   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U ]  " S0 UD6  gzInitialize from dict.Nr!   super__init__r0   r    	__class__s     r+   rr   ExampleCreate.__init__        4 r*   r!   )r#   r$   r%   r&   r'   r(   r   re   rI   rJ   rK   rg   rh   rj   rl   rm   rr   r)   __classcell__rt   s   @r+   rW   rW   t   s    * 1STJT',T':F$:(-d(;G%;).t)<H&<-1E*18<K5<#t#6: 3:$(M>(! !r*   rW   c                  $    \ rS rSr% SrS\S'   Srg)ExampleUpsertWithAttachments   z Example create with attachments.r   rE   r!   Nr"   r!   r*   r+   rz   rz      s    *r*   rz   c                  8    \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)AttachmentInfo   zInfo for an attachment.r   presigned_urlr-   readerOptional[str]r   r!   Nr"   r!   r*   r+   r}   r}      s    !r*   r}   c                  $  ^  \ rS rSr% SrS\S'   \" S S9rS\S'   \" \" S	5      S
9r	S\S'   \" SS
9r
S\S'   \" \S9rS\S'   SrS\S'   \" SS
9rS\S'    \" SS
9rS\S'   \" SS
9rS\S'     S       SU 4S jjjr\SS j5       rS rSrU =r$ )Example   zExample model.r   rZ   c                 H    [         R                  " S[        R                  S9$ )Nr   )tz)r   fromtimestampr   r_   r!   r*   r+   r`   Example.<lambda>   s     6 6qX\\ Jr*   rc   r   re   z$00000000-0000-0000-0000-000000000000rF   rE   NOptional[datetime]modified_atz	list[Run]runsrY   rm   z#Optional[dict[str, AttachmentInfo]]rh   r   	_host_url
_tenant_idc                >   > [         TU ]  " S0 UD6  Xl        X l        g)Initialize a Dataset object.Nr!   )rq   rr   r   r   )r0   r   r   kwargsrt   s       r+   rr   Example.__init__   s     	"6""$r*   c                    U R                   (       ac  SU R                   SU R                   3nU R                  (       a&  U R                    S[	        U R                  5       U 3$ U R                    U 3$ g)URL of this run within the app.
/datasets/z/e//o/N)r   rE   rZ   r   r   )r0   paths     r+   urlExample.url   sh     >>0DGG9=D..)S-A,B4&IInn%dV,,r*   c                n    U R                    SU R                   SU R                   SU R                   S3$ )5Return a string representation of the RunBase object.(id=z, dataset_id=z, link=''))rt   rZ   rE   r   r;   s    r+   __repr__Example.__repr__   s8    ..!dggYmDOO;LHUYU]U]T^^`aar*   )r   r   )NN)r   r   r   rY   r   r	   r@   Noner@   r   )r#   r$   r%   r&   r'   r(   r   re   r   rE   r   listr   rm   rh   r   r   r   rr   propertyr   r   r)   rw   rx   s   @r+   r   r      s    H JJ  T*P%QRJR&+D&9K#9D1D)1$(M>(7<T7JK4J.*48I}8!,T!:J: $(%)	% 	% #	% 		%
 
	% 	%  b br*   r   c                  $    \ rS rSr% SrS\S'   Srg)ExampleSearch   zExample returned via search.r   rZ   r!   Nr"   r!   r*   r+   r   r      s
    &Hr*   r   c                  J    \ rS rSr% Sr\" \SS9rS\S'   \" \	SS9r
S\S	'   S
rg)AttachmentsOperations   z%Operations to perform on attachments.z,Mapping of old attachment names to new names)rd   descriptionzdict[str, str]renamez List of attachment names to keep	list[str]retainr!   N)r#   r$   r%   r&   r'   r   dictr   r(   r   r   r)   r!   r*   r+   r   r      s5    /"*XFN  *LFI r*   r   c                     ^  \ rS rSr% SrS\S'   SrS\S'   \" SS9rS	\S
'   \" SS9r	S	\S'   \" SS9r
S	\S'   SrS\S'   SrS\S'   SrS\S'    " S S5      rU 4S jrSrU =r$ )ExampleUpdate   z Example update with attachments.r   rZ   NrY   rE   rF   rH   rI   rJ   rK   rf   rg   zOptional[Attachments]rh   zOptional[AttachmentsOperations]attachments_operationsc                      \ rS rSrSrSrSrg)ExampleUpdate.Config   rO   Tr!   Nr#   r$   r%   r&   r'   rP   r)   r!   r*   r+   rR   r      
    1r*   rR   c                &   > [         TU ]  " S0 UD6  gro   rp   rs   s     r+   rr   ExampleUpdate.__init__   rv   r*   r!   )r#   r$   r%   r&   r'   r(   rE   r   rI   rJ   rK   rg   rh   r   rR   rr   r)   rw   rx   s   @r+   r   r      s{    *H!%J%',T':F$:(-d(;G%;).t)<H&<-1E*1)-K&->B;B 
! !r*   r   c                  $    \ rS rSrSrSrSrSrSrg)DataType   zEnum for dataset data types.kvllmchatr!   N)	r#   r$   r%   r&   r'   r   r   r   r)   r!   r*   r+   r   r      s    &	B
CDr*   r   c                  T    \ rS rSr% SrS\S'   SrS\S'   SrS\S	'    " S
 S5      rSr	g)DatasetBase   zDataset base model.r   nameNr   r   zOptional[DataType]	data_typec                      \ rS rSrSrSrSrg)DatasetBase.Config   rO   Tr!   Nr   r!   r*   r+   rR   r      r   r*   rR   r!   )
r#   r$   r%   r&   r'   r(   r   r   rR   r)   r!   r*   r+   r   r      s)    
I!%K%$(I!( r*   r   )remove_system_messagesconvert_to_openai_messageconvert_to_openai_toolremove_extra_fieldsextract_tools_from_runc                  .    \ rS rSr% SrS\S'   S\S'   Srg)	DatasetTransformationi  z#Schema for dataset transformations.r   r   z%Union[DatasetTransformationType, str]transformation_typer!   Nr"   r!   r*   r+   r   r     s    -
O>>r*   r   F)totalc                  "  ^  \ rS rSr% SrS\S'   S\S'   \" SS9rS	\S
'   SrS\S'   Sr	S\S'   Sr
S	\S'   SrS\S'   SrS\S'   SrS\S'   \" SS9rS\S'   \" SS9rS\S'   \" SS9rS\S'      S         SU 4S jjjr\SS j5       rSrU =r$ )Dataseti  zDataset ORM model.r   rZ   r   re   NrF   r   r   Optional[int]example_countsession_countlast_session_start_timerH   inputs_schemaoutputs_schemaz%Optional[list[DatasetTransformation]]transformationsr   r   rY   r   _public_pathc                   > SU;   a  UR                  S5      US'   SU;   a  UR                  S5      US'   [        TU ]  " S0 UD6  Xl        X l        X0l        g)r   inputs_schema_definitionr   outputs_schema_definitionr   Nr!   )poprq   rr   r   r   r   )r0   r   r   r   r   rt   s        r+   rr   Dataset.__init__"  s^     &/&,jj1K&LF?#&&0'-zz2M'NF#$"6""$(r*   c                6   U R                   (       a  U R                  (       a  U R                    U R                   3$ U R                  (       a1  U R                    S[        U R                  5       SU R                   3$ U R                    SU R                   3$ g)r   r   r   N)r   r   r   r   rZ   r;   s    r+   r   Dataset.url5  s}     >>  ..)$*;*;)<==..)S-A,B*TWWIVVnn%Zy99r*   )r   r   r   )NNN)
r   r   r   rY   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   rr   r   r   r)   rw   rx   s   @r+   r   r     s    H&+D&9K#9#'M='#'M='26/6.2M+2/3N,3=AO:A*48I}8!,T!:J:"-d";L-; $(%)&*	) ) #) $	)
 ) 
) )&  r*   r   c                  2    \ rS rSr% SrSrS\S'   S\S'   Srg)	DatasetVersioniA  z%Class representing a dataset version.Nrk   tagsr   as_ofr!   )r#   r$   r%   r&   r'   r   r(   r)   r!   r*   r+   r   r   A  s    / $D
$Or*   r   c                 
    S0 0$ )NrK   r!   r!   r*   r+   _default_extrar   H  s    r*   c                  h   \ rS rSr% SrS\S'    S\S'    S\S'    S\S	'    S
rS\S'    \" \S9r	S\S'    S
r
S\S'    S
rS\S'    S
rS\S'    \" \S9rS\S'    S
rS\S'    S
rS\S'    S
rS\S'    S
rS\S'    \" \S9rS\S'    \S&S j5       r\S'S  j5       r\S(S! j5       rS" r " S# S$5      rS%rg
))RunBaseiL  a  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   rZ   r   r   r   
start_timerun_typeNr   end_timerc   Optional[dict]extrar   error
serializedOptional[list[dict]]eventsr   rI   rJ   rY   reference_example_idparent_run_idrk   r   z-Union[Attachments, dict[str, AttachmentInfo]]rh   c                b    U R                   c  0 U l         U R                   R                  S0 5      $ zRetrieve the metadata (if any).rK   )r   
setdefaultr;   s    r+   rK   RunBase.metadata  s,     ::DJzz$$Z44r*   c                8    U R                   R                  S5      $ )z"Retrieve the revision ID (if any).revision_id)rK   getr;   s    r+   r   RunBase.revision_id  s     }}  //r*   c                l    U R                   c  gU R                   U R                  -
  R                  5       $ )zLatency in seconds.N)r   r   total_secondsr;   s    r+   latencyRunBase.latency  s-     == />>@@r*   c                n    U R                    SU R                   SU R                   SU R                   S3$ )r   r   z, name='z', run_type='r   )rt   rZ   r   r   r;   s    r+   r   RunBase.__repr__  s3    ..!dggYhtyykt}}o]_``r*   c                      \ rS rSrSrSrSrg)RunBase.Configi  rO   Tr!   N)r#   r$   r%   r&   r'   rQ   r)   r!   r*   r+   rR   r    s    1"&r*   rR   r   r@   dict[str, Any])r@   rY   )r@   Optional[float])r#   r$   r%   r&   r'   r(   r   r   r   r   r   r   r   r   rI   rJ   r   r   r   rh   r   rK   r   r   r   rR   r)   r!   r*   r+   r   r   L  s+    	H(
I* M" $(H '-!.AE>A=E=;!%J%F#'F ' .FD.""G^"/+/./@$(M>(@ $D
$6AFBK> 4 5 5 0 0 A Aa' 'r*   r   c                  d  ^  \ rS rSr% SrSrS\S'    SrS\S'    SrS\S	'    Sr	S
\S'    Sr
S\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S '    S!\S"'    \" S#S$9rS%\S&'    SrS'\S('    \" SS$9rS\S)'   S5S6U 4S* jjjr\S7S+ j5       r \S8S, j5       r!\S8S- j5       r"\S9S. j5       r#\S9S/ j5       r$\S:S0 j5       r%\S:S1 j5       r&\S;S2 j5       r'\S;S3 j5       r(S4r)U =r*$ )<Runi  z$Run schema when loading from the DB.NrY   
session_idOptional[list[UUID]]child_run_idszOptional[list[Run]]
child_runsrH   feedback_statsr   app_pathmanifest_idstatusr   prompt_tokenscompletion_tokenstotal_tokenszOptional[dict[str, int]]prompt_token_detailscompletion_token_detailsr   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 rF   r   dotted_orderOptional[bool]
in_datasetr   c                  > UR                  S5      (       d  SUR                  S5      0UEnUR                  SS5      =(       d    0 n[        TU ]  " S0 UDSU0D6  Xl        U R
                  R                  5       (       d@  U R                  (       d.  U R                  R                  5        U R                   3U l        ggg)Initialize a Run object.r  rZ   rI   Nr!   )r   r   rq   rr   r   r!  stripr   r   	isoformatrZ   )r0   r   r   rI   rt   s       r+   rr   Run.__init__  s    zz*%% &**T"2=f=FHd+1r161&1"  &&((1C1C#'??#<#<#>"?y ID 2D(r*   c                |    U R                   (       a+  U R                  (       a  U R                    U R                   3$ g)r   N)r   r  r;   s    r+   r   Run.url  s,     >>dmmnn%dmm_55r*   c                    U R                   $ )zAlias for prompt_tokens.)r  r;   s    r+   input_tokensRun.input_tokens  s     !!!r*   c                    U R                   $ )zAlias for completion_tokens.)r  r;   s    r+   output_tokensRun.output_tokens  s     %%%r*   c                    U R                   $ )zAlias for prompt_cost.)r  r;   s    r+   
input_costRun.input_cost  s     r*   c                    U R                   $ )zAlias for completion_cost.)r  r;   s    r+   output_costRun.output_cost  s     ###r*   c                    U R                   $ )zAlias for prompt_token_details.)r  r;   s    r+   input_token_detailsRun.input_token_details  s     (((r*   c                    U R                   $ )zAlias for output_token_details.)r  r;   s    r+   output_token_detailsRun.output_token_details  s     ,,,r*   c                    U R                   $ )zAlias for prompt_cost_details.)r  r;   s    r+   input_cost_detailsRun.input_cost_details  s     '''r*   c                    U R                   $ )z"Alias for completion_cost_details.)r  r;   s    r+   output_cost_detailsRun.output_cost_details   s     +++r*   )r   r!  r\   r   r   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#  r   r   rr   r   r   r,  r/  r2  r5  r8  r;  r>  rA  r)   rw   rx   s   @r+   r	  r	    s   .!%J%-*.M'.(&*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 J   " " & &     $ $ ) ) - - ( ( , ,r*   r	  c                  4    \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rg)RunTypeEnumi&  z5(Deprecated) Enum for run types. Use string directly.toolchainr   	retriever	embeddingpromptparserr!   N)r#   r$   r%   r&   r'   rF  rG  r   rH  rI  rJ  rK  r)   r!   r*   r+   rE  rE  &  s(    ?DE
CIIFFr*   rE  c                  
   \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S	\S'   S\S'   S	\S'   S\S'   S	\S'   S\S'   S\S'   S\S'   S\S'   S	\S'   S	\S'   S\S'   S\S'   S\S'   S\S'   S	\S'   S	\S '   S!\S"'   S\S#'   S$\S%'   S&rg')(RunLikeDicti2  z&Run-like dictionary, for type-hinting.r   r   rE  r   r   r   r   rI   rJ   r   r   r   r   r   r   rY   r   r  r   r   rk   r   inputs_s3_urlsoutputs_s3_urlsrZ   r
  session_namer   input_attachmentsoutput_attachmentsr   r  r!  Attachmentsrh   r!   Nr"   r!   r*   r+   rM  rM  2  s    0
I  !!  
""##((%%&&Nr*   rM  c                  8    \ rS rSr% SrSrS\S'    SrS\S'   Srg)RunWithAnnotationQueueInfoiO  z&Run schema with annotation queue info.Nr   last_reviewed_timeadded_atr!   )	r#   r$   r%   r&   r'   rV  r(   rW  r)   r!   r*   r+   rU  rU  O  s"    0-1*1.#'H '3r*   rU  c                  \    \ rS rSr% SrS\S'    \" \S9rS\S'    Sr	S	\S
'    Sr
S\S'   Srg)FeedbackSourceBaseiX  z}Base class for feedback sources.

This represents whether feedback is submitted from the API, model, human labeler,
    etc.
r   typerc   rH   rK   NzOptional[Union[UUID, str]]user_idr   	user_namer!   )r#   r$   r%   r&   r'   r(   r   r   rK   r[  r\  r)   r!   r*   r+   rY  rY  X  s?     I*).t)DH&D6*.G'.:#I}#<r*   rY  c                  (    \ rS rSr% SrSrS\S'   Srg)APIFeedbackSourceii  zAPI feedback source.apizLiteral['api']rZ  r!   Nr#   r$   r%   r&   r'   rZ  r(   r)   r!   r*   r+   r^  r^  i  s     D. r*   r^  c                  (    \ rS rSr% SrSrS\S'   Srg)ModelFeedbackSourceio  zModel feedback source.modelzLiteral['model']rZ  r!   Nr`  r!   r*   r+   rb  rb  o  s     $D
$r*   rb  c                  "    \ rS rSrSrSr SrSrg)FeedbackSourceTypeiu  zFeedback source type.r_  rc  r!   N)r#   r$   r%   r&   r'   APIMODELr)   r!   r*   r+   re  re  u  s    
C2E"r*   re  c                     \ rS rSr% SrS\S'    SrS\S'    SrS\S'    S	\S
'    S	\S'    S\S'    SrS\S'    Sr	S\S'    Sr
S\S'    SrS\S'    SrS\S'    SrS	\S'    SrS	\S'    SrS	\S'    SrS\S'     " S S5      rSrg) FeedbackBasei~  zFeedback schema.r   rZ   Nr   re   r   rY   run_idr  r   key
SCORE_TYPEscore
VALUE_TYPEvaluer   commentzUnion[str, dict, None]
correctionOptional[FeedbackSourceBase]feedback_sourcer
  comparative_experiment_idfeedback_group_idr   r   c                      \ rS rSrSrSrSrg)FeedbackBase.Configi  rO   Tr!   Nr   r!   r*   r+   rR   rw    r   r*   rR   r!   )r#   r$   r%   r&   r'   r(   re   r   rm  ro  rp  rq  rs  r
  rt  ru  r   rR   r)   r!   r*   r+   ri  ri  ~  s    H(%)J"),&*K#*2<>	HAE:+E:Q!G]!2)-J&-!48O18%!%J%T04~4X(,~,1 !E> ' r*   ri  c                  0    \ rS rSr% SrS\S'    S\S'   Srg)	FeedbackCategoryi  z+Specific value and label pair for feedback.floatro  r   labelr!   Nr"   r!   r*   r+   ry  ry    s    5LCNr*   ry  c                  H    \ rS rSr% SrS\S'    S\S'    S\S'    S\S	'   S
rg)FeedbackConfigi  z:Represents _how_ a feedback value ought to be interpreted.z0Literal['continuous', 'categorical', 'freeform']rZ  r  minmaxz Optional[list[FeedbackCategory]]
categoriesr!   Nr"   r!   r*   r+   r}  r}    s,    D
::	4	400@r*   r}  c                  D    \ rS rSr% SrS\S'    SrS\S'    SrS\S	'   S
rg)FeedbackCreatei  z"Schema used for creating feedback.rY  rs  NzOptional[FeedbackConfig]feedback_configr"  r   r!   )	r#   r$   r%   r&   r'   r(   r  r   r)   r!   r*   r+   r  r    s&    ,''%04O-4% E> r*   r  c                  J    \ rS rSr% SrS\S'   S\S'    S\S'    SrS	\S
'   Srg)Feedbacki  zSchema for getting feedback.r   rZ   r   re   r   Nrr  rs  r!   )r#   r$   r%   r&   r'   r(   rs  r)   r!   r*   r+   r  r    s*    &H,248O182r*   r  c                    ^  \ rS rSr% SrS\S'    \" S S9rS\S'    S	rS
\S'    S	r	S\S'    S	r
S\S'    S	rS\S'    S\S'    S\S'    \" S	S9rS\S'   SSU 4S jjjr\SS j5       r\SS j5       r\SS j5       rSrU =r$ ) TracerSessioni  zZTracerSession schema for the API.

Sessions are also referred to as "Projects" in the UI.
r   rZ   c                 J    [         R                  " [        R                  5      $ r\   r]   r!   r*   r+   r`   TracerSession.<lambda>  rb   r*   rc   r   r   Nr   r   r   r   r   rH   r   	tenant_idrY   reference_dataset_idrF   r   c                   > [         TU ]  " S0 UD6  Xl        U R                  R                  c-  U R                  R                  [        R                  S9U l        gg)r%  N)tzinfor!   )rq   rr   r   r   r  replacer   r_   )r0   r   r   rt   s      r+   rr   TracerSession.__init__  sJ    "6""??!!)"oo55X\\5JDO *r*   c                v    U R                   (       a(  U R                    SU R                   SU R                   3$ g)r   r   z/projects/p/N)r   r  rZ   r;   s    r+   r   TracerSession.url  s3     >>nn%S(8TWWINNr*   c                ^    U R                   b  SU R                   ;  a  0 $ U R                   S   $ r   r  r;   s    r+   rK   TracerSession.metadata  -     ::4::!=Izz*%%r*   c                ^    U R                   b  SU R                   ;  a  / $ U R                   S   $ )zRetrieve the tags (if any).r   r  r;   s    r+   r   TracerSession.tags  s-     ::tzz!9Izz&!!r*   )r   r   r\   rC  r   r  )r@   r   )r#   r$   r%   r&   r'   r(   r   r   r   r   r   r   r   r   rr   r   r   rK   r   r)   rw   rx   s   @r+   r  r    s    
 	H  1STJT+#'H ')!%K%)D-"&*E#*)O0((J*48I}8K K   & & " "r*   r  c                      \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S\S	'    S\S
'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'   Srg)TracerSessionResulti  ziA project, hydrated with additional information.

Sessions are also referred to as "Projects" in the UI.
r   	run_countzOptional[timedelta]latency_p50latency_p99r  r  r  r   last_run_start_timerH   r  zOptional[list[dict[str, Any]]]
run_facetsr  r  r  r  first_token_p50first_token_p99r  
error_rater!   Nr"   r!   r*   r+   r  r    s    
 ,$$?$$6=  D$$H++8,,)..-!!M""G&&C((G((>)r*   r  c                  F    \ rS rSr% SrS\S'    S\S'    \S
S j5       rSrg	)BaseMessageLikei1  z7A protocol representing objects similar to BaseMessage.r   contentzdict[Any, Any]additional_kwargsc                    g)z,Type of the Message, used for serialization.Nr!   r;   s    r+   rZ  BaseMessageLike.type:  s    r*   r!   N)r@   r   )	r#   r$   r%   r&   r'   r(   r   rZ  r)   r!   r*   r+   r  r  1  s(    AL%%%C; ;r*   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg	)
DatasetShareSchemai?  z*Represents the schema for a dataset share.r   rE   share_tokenr   r   r!   Nr"   r!   r*   r+   r  r  ?  s    4 ,	H(r*   r  c                      \ rS rSr% SrS\S'    S\S'    SrS\S	'    \" S
 S9rS\S'    \" S S9r	S\S'    S\S'   Sr
g)AnnotationQueueiJ  zRepresents an annotation queue.r   rZ   r   r   Nr   r   c                 J    [         R                  " [        R                  5      $ r\   r]   r!   r*   r+   r`   AnnotationQueue.<lambda>S  rb   r*   rc   r   re   c                 J    [         R                  " [        R                  5      $ r\   r]   r!   r*   r+   r`   r  U  rb   r*   
updated_atr  r!   )r#   r$   r%   r&   r'   r(   r   r   re   r  r)   r!   r*   r+   r  r  J  sP    )H8
I+!%K%: 1STJT> 1STJTCODr*   r  c                  (    \ rS rSr% SrSrS\S'   Srg)AnnotationQueueWithDetailsi[  z,Represents an annotation queue with details.Nr   rubric_instructionsr!   )r#   r$   r%   r&   r'   r  r(   r)   r!   r*   r+   r  r  [  s    6)--;r*   r  c                  `    \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S\S	'    S
\S'   Srg)BatchIngestConfigib  z"Configuration for batch ingestion.ri   use_multipart_endpointr?   scale_up_qsize_triggerscale_up_nthreads_limitscale_down_nempty_trigger
size_limitr   size_limit_bytesr!   Nr"   r!   r*   r+   r  r  b  s:    ,  D<  7""AO/##8r*   r  c                  X    \ rS rSr% SrSrS\S'    SrS\S'    SrS	\S
'    Sr	S\S'   Sr
g)LangSmithInfois  z'Information about the LangSmith server.r   r   versionNr   license_expiration_timezOptional[BatchIngestConfig]batch_ingest_configrH   instance_flagsr!   )r#   r$   r%   r&   r'   r  r(   r  r  r  r)   r!   r*   r+   r  r  s  s;    1GS.26/6+7;4;/3N,3r*   r  c                  L    \ rS rSr% SrS\S'    S\S'    S\S'    SrS	\S
'   Srg)LangSmithSettingsi  z"Settings for the LangSmith tenant.r   rZ   display_namer   re   Nr   tenant_handler!   )r#   r$   r%   r&   r'   r(   r  r)   r!   r*   r+   r  r    s)    ,G)*#'M='r*   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   S	rg
)FeedbackIngestTokeni  z2Represents the schema for a feedback ingest token.r   rZ   r   r   r   
expires_atr!   Nr"   r!   r*   r+   r  r    s    <H.	H3+r*   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   S	rg
)RunEventi  zRun event schema.r   r   zUnion[datetime, str]timerH   r   r!   Nr"   r!   r*   r+   r  r    s    
I
$$,r*   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg)	TimeDeltaInputi  zTimedelta input schema.r?   dayshoursminutesr!   Nr"   r!   r*   r+   r  r    s    !
IJLr*   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg)	DatasetDiffInfoi  z;Represents the difference information between two datasets.z
list[UUID]examples_modifiedexamples_addedexamples_removedr!   Nr"   r!   r*   r+   r  r    s     E!!=:  <r*   r  c                      \ rS rSr% SrS\S'    SrS\S'    SrS\S'    S\S	'    S
\S'    S
\S'    S\S'    SrS\S'    Sr	S\S'    Sr
S\S'    \SS j5       rSrg)ComparativeExperimenti  zRepresents a comparative experiment.

This information summarizes evaluation results comparing
two or more models on a given dataset.
r   rZ   Nr   r   r   r  r   re   r   r  rH   r   r   experiments_infor  c                ^    U R                   b  SU R                   ;  a  0 $ U R                   S   $ r   r  r;   s    r+   rK   ComparativeExperiment.metadata  r  r*   r!   r  )r#   r$   r%   r&   r'   r(   r   r   r   r  r  r   rK   r)   r!   r*   r+   r  r    s     	H?D-:!%K%@OGDJJ&*E#*?-1*1\/3N,3P& &r*   r  c                  T    \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S	\S
'   Srg)PromptCommiti  z$Represents a Prompt with a manifest.r   ownerrepocommit_hashr  manifestz
list[dict]examplesr!   Nr"   r!   r*   r+   r  r    s0    .J0
I!(%r*   r  c                      \ rS rSr% SrS\S'    S\S'    S\S'    SrS	\S
'    SrS	\S'    SrS	\S'    Sr	S\S'    Sr
S\S'    SrS\S'    \" \S9rS\S'    SrS\S'    SrS\S'    SrS\S'   Srg)ListedPromptCommiti  z;Represents a listed prompt commit with associated metadata.r   rZ   r   r  r  NrY   r  repo_id	parent_idr   r  r   re   r  rc   r  example_run_idsr   r   num_downloads	num_viewsparent_commit_hashr!   )r#   r$   r%   r&   r'   r(   r  r  r  r  re   r  r   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                  @   \ rS rSr% SrS\S'    SrS\S'    SrS\S'    S\S	'    S\S
'    S\S'    S\S'    S\S'    S\S'    S\S'    SrS\S'    Sr	S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    Sr
S\S'    SrS\S'    S\S'    SrS\S'    SrS\S '   S!rg)"Prompti  z"Represents a Prompt with metadata.r   repo_handleNr   r   readmerZ   r  r   re   r  ri   	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_namer!   )r#   r$   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                  0    \ rS rSr% SrS\S'    S\S'   Srg)	ListPromptsResponseiI  z A list of prompts with metadata.zlist[Prompt]reposr?   r   r!   Nr"   r!   r*   r+   r  r  I  s    *J&r*   r  c                  .    \ rS rSrSrSr Sr Sr SrSr	g)	PromptSortFieldiR  z$Enum for sorting fields for prompts.r  r  r  r  r!   N)
r#   r$   r%   r&   r'   r  r  r  r  r)   r!   r*   r+   r  r  R  s%    .#MIJIr*   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg)	InputTokenDetailsi_  zvBreakdown 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_readr!   Nr"   r!   r*   r+   r  r  _  s(    
 J Or*   r  c                  0    \ rS rSr% SrS\S'    S\S'   Srg)OutputTokenDetailsit  zxBreakdown of output token counts.

Does *not* need to sum to full output token count. Does *not* need to have all keys.
r?   r  	reasoningr!   Nr"   r!   r*   r+   r  r  t  s    
 JNr*   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg)	InputCostDetailsi  znBreakdown of input token costs.

Does *not* need to sum to full input cost. Does *not* need to have all keys.
rz  r  r   r  r!   Nr"   r!   r*   r+   r  r    s)    
 L% r*   r  c                  0    \ rS rSr% SrS\S'    S\S'   Srg)OutputCostDetailsi  zpBreakdown of output token costs.

Does *not* need to sum to full output cost. Does *not* need to have all keys.
rz  r  r  r!   Nr"   r!   r*   r+   r  r    s    
 L&r*   r  c                      \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S	\S
'    S\S'    S\S'    S\S'    S\S'    S\S'   Srg)UsageMetadatai  zUsage 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]r8  zNotRequired[OutputTokenDetails]r;  zNotRequired[float]r2  r5  r  zNotRequired[InputCostDetails]r>  zNotRequired[OutputCostDetails]rA  r!   Nr"   r!   r*   r+   r
  r
    sk    
 JPA77 :9 #"'##(""'55/770r*   r
  c                      \ rS rSr% SrS\S'    S\S'    S\S'    S\S'    S	\S
'    S\S'    S\S'    S\S'    S\S'    S\S'   Srg)ExtractedUsageMetadatai  zUsage 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  r8  r  r;  rz  r2  r5  r  r  r>  r  rA  r!   Nr"   r!   r*   r+   r  r    sc     33****,,+'('((/**0r*   r  c                  0    \ rS rSr% SrS\S'    S\S'   Srg)	UpsertExamplesResponsei  zCResponse object returned from the upsert_examples_multipart method.r?   countr   example_idsr!   Nr"   r!   r*   r+   r  r    s    MJ45r*   r  )gr'   
__future__r   r   r   r   decimalr   enumr   typingr	   r
   r   r   r   r   uuidr   typing_extensionsr   r   pydantic.v1r   r   r   r   r   r   ImportErrorpydanticpathlibr   r   rl  r   r   rn  r   tuplerA   rS  r-   rC   rT   _AttachmentLikerW   ExampleUploadWithAttachmentsrz   r}   r   r   r   r   ExampleUpdateWithAttachmentsr   r   DatasetTransformationTyper   r   r   r   r   r	  rE  rM  rU  rY  r^  rb  re  ri  ry  r}  r  r  r  r  r  r  r  r  r  r  update_forward_refsr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r!   r*   r+   <module>r!     s   $ " 2 2     4 $  %:y+t;<
4d?#
 , 3eCJ/U39=MMNNOJ 8   ') 'i 
 sEz!2E#t)4DD
!I !&  - = Y (bk (bVK I !I !,  - sD 
) 
 $ ?IU ?,k ,^Y U'i U'p,' ,D	#t 	)5 :4 4= ="!* !%, %# #'9 'TOy O@Ye @!\ !	3| 	33"I 3"l#*- #*L 
;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 6W&    s   L L54L5