
    _Di                    0   S r SSKJ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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   r0 " S S\5      r1\1r2 " S S\15      r3 " S S\5      r4 " S S\.5      r5 " S S\.5      r6 " S  S!\5      r7 " S" S#\5      r8\8r9 " S$ S%\'\5      r: " S& S'\5      r;\$S(   r< " S) S*\S+S,9r= " S- S.\;5      r> " S/ S0\5      r?S1 r@ " S2 S3\5      rA " S4 S5\A5      rB " S6 S7\'\5      rC " S8 S9\S+S,9rD " S: S;\A5      rE " S< S=\5      rF " S> S?\F5      rG " S@ SA\F5      rH " SB SC\5      rI " SD SE\5      rJ " SF SG\S+S,9rK " SH SI\S+S,9rL " SJ SK\J5      rM " SL SM\J5      rN " SN SO\5      rO " SP SQ\O5      rP\ " SR SS\5      5       rQ " ST SU\S+S,9rR " SV SW\5      rS " SX SY\S5      rT " SZ S[\S+S,9rU " S\ S]\5      rV\5R                  5          " S^ S_\5      rX " S` Sa\5      rY " Sb Sc\S+S,9rZ " Sd Se\S+S,9r[ " Sf Sg\5      r\ " Sh Si\5      r] " Sj Sk\5      r^ " Sl Sm\5      r_ " Sn So\5      r` " Sp Sq\5      ra " Sr Ss\'\5      rb " St Su\S+S,9rc " Sv Sw\S+S,9rd " Sx Sy\S+S,9re " Sz S{\S+S,9rf " S| S}\5      rg " S~ S\S+S,9rh " S S\5      ri " S S\55      rj " S S\5      rk " S S\5      rl " S S\5      rm " S S\5      rn " S S\5      ro " S S\5      rp " S S\o5      rqg! \  a    SS
K!JrJrJrJrJrJr   GN>f = f)zSchemas for the LangSmith API.    )annotations)Iterator)datetime	timedeltatimezone)Decimal)Enum)	Annotated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)	
Attachment1   a^  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]data N__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r#       Y/var/www/html/Aiprofessor/professorTrac/lib/python3.13/site-packages/langsmith/schemas.pyr   r   1   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)BinaryIOLikeM   z$Protocol for binary IO-like objects.c                    g)zRead function.Nr#   )selfsizes     r-   readBinaryIOLike.readQ       r,   c                    g)zSeek function.Nr#   )r2   offsetwhences      r-   seekBinaryIOLike.seekU   r6   r,   c                    g)zGet value function.Nr#   r2   s    r-   getvalueBinaryIOLike.getvalueY   r6   r,   r#   N))r3   intreturnbytes)r   )r8   rA   r9   rA   rB   rA   )rB   rC   )	r%   r&   r'   r(   r)   r4   r:   r>   r+   r#   r,   r-   r/   r/   M   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.Configf   #Configuration class for the schema.Tr#   N)r%   r&   r'   r(   r)   frozenarbitrary_types_allowedr+   r#   r,   r-   ConfigrO   f   s    1"&r,   rT   r#   )r%   r&   r'   r(   r)   r*   r   rK   rL   rM   rT   r+   r#   r,   r-   rE   rE   ^   sE    ',T':F$:(-d(;G%;).t)<H&<' 'r,   rE   c                  *    \ rS rSr% S\S'   S\S'   Srg)_AttachmentDictm   r   r    r!   r"   r#   N)r%   r&   r'   r(   r*   r+   r#   r,   r-   rV   rV   m   s    N
r,   rV   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$ )ExampleCreatew   z Example upload with attachments.Optional[UUID]idc                 J    [         R                  " [        R                  5      $ Nr   nowr   utcr#   r,   r-   <lambda>ExampleCreate.<lambda>{       hll9Sr,   default_factoryr   
created_atNrH   rJ   rK   rL   rM   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__r2   r"   	__class__s     r-   rt   ExampleCreate.__init__        4 r,   r#   )r%   r&   r'   r(   r)   r*   r   rg   rK   rL   rM   ri   rj   rl   rn   ro   rt   r+   __classcell__rv   s   @r-   rY   rY   w   s    * 1STJT',T':F$:(-d(;G%;).t)<H&<-1E*18<K5<#t#6: 3:$(M>(! !r,   rY   c                  $    \ rS rSr% SrS\S'   Srg)ExampleUpsertWithAttachments   z Example create with attachments.r   rG   r#   Nr$   r#   r,   r-   r|   r|      s    *r,   r|   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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   r\   c                 H    [         R                  " S[        R                  S9$ )Nr   )tz)r   fromtimestampr   ra   r#   r,   r-   rb   Example.<lambda>   s     6 6qX\\ Jr,   re   r   rg   z$00000000-0000-0000-0000-000000000000rH   rG   NOptional[datetime]modified_atr[   ro   z#Optional[dict[str, AttachmentInfo]]rj   r   	_host_url
_tenant_idc                >   > [         TU ]  " S0 UD6  Xl        X l        g)Initialize a Dataset object.Nr#   )rs   rt   r   r   )r2   r   r   kwargsrv   s       r-   rt   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   rG   r\   r   r   )r2   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=''))rv   r\   rG   r   r=   s    r-   __repr__Example.__repr__   s8    ..!dggYmDOO;LHUYU]U]T^^`aar,   )r   r   )NN)r   r   r   r[   r   r   rB   NonerB   r   )r%   r&   r'   r(   r)   r*   r   rg   r   rG   r   ro   rj   r   r   r   rt   propertyr   r   r+   ry   rz   s   @r-   r   r      s    H JJ  T*P%QRJR&+D&9K#9$(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   r\   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)rf   descriptionzdict[str, str]renamez List of attachment names to keep	list[str]retainr#   N)r%   r&   r'   r(   r)   r   dictr   r*   listr   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   r\   Nr[   rG   rH   rJ   rK   rL   rM   rh   ri   zOptional[Attachments]rj   zOptional[AttachmentsOperations]attachments_operationsc                      \ rS rSrSrSrSrg)ExampleUpdate.Config   rQ   Tr#   Nr%   r&   r'   r(   r)   rR   r+   r#   r,   r-   rT   r      
    1r,   rT   c                &   > [         TU ]  " S0 UD6  grq   rr   ru   s     r-   rt   ExampleUpdate.__init__   rx   r,   r#   )r%   r&   r'   r(   r)   r*   rG   r   rK   rL   rM   ri   rj   r   rT   rt   r+   ry   rz   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   rQ   Tr#   Nr   r#   r,   r-   rT   r      r   r,   rT   r#   )
r%   r&   r'   r(   r)   r*   r   r   rT   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                  0  ^  \ 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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   r\   r   rg   NrH   r   r   Optional[int]example_countsession_countlast_session_start_timerJ   inputs_schemaoutputs_schemaz%Optional[list[DatasetTransformation]]transformationsrM   r   r   r[   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#   )poprs   rt   r   r   r   )r2   r   r   r   r   rv   s        r-   rt   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   r\   r=   s    r-   r   Dataset.url8  s}     >>  ..)$*;*;)<==..)S-A,B*TWWIVVnn%Zy99r,   )r   r   r   )NNN)
r   r   r   r[   r   r   r   r   rB   r   r   )r%   r&   r'   r(   r)   r*   r   r   r   r   r   r   r   r   rM   r   r   r   r   rt   r   r   r+   ry   rz   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                  2    \ rS rSr% SrSrS\S'   S\S'   Srg)	DatasetVersioniD  z%Class representing a dataset version.Nrm   tagsr   as_ofr#   )r%   r&   r'   r(   r)   r   r*   r+   r#   r,   r-   r   r   D  s    / $D
$Or,   r   c                 
    S0 0$ )NrM   r#   r#   r,   r-   _default_extrar   K  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
))RunBaseiO  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   r\   r   r   r   
start_timerun_typeNr   end_timere   Optional[dict]extrar   error
serializedOptional[list[dict]]eventsr   rK   rL   r[   reference_example_idparent_run_idrm   r   z-Union[Attachments, dict[str, AttachmentInfo]]rj   c                b    U R                   c  0 U l         U R                   R                  S0 5      $ zRetrieve the metadata (if any).rM   )r   
setdefaultr=   s    r-   rM   RunBase.metadata  s,     ::DJzz$$Z44r,   c                8    U R                   R                  S5      $ )z"Retrieve the revision ID (if any).revision_id)rM   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   )rv   r\   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  rQ   Tr#   N)r%   r&   r'   r(   r)   rS   r+   r#   r,   r-   rT   r    s    1"&r,   rT   r   rB   dict[str, Any])rB   r[   )rB   Optional[float])r%   r&   r'   r(   r)   r*   r   r   r   r   r   r   r   r   rK   rL   r   r   r   rj   r   rM   r   r   r   rT   r+   r#   r,   r-   r   r   O  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' '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.Nr[   
session_idOptional[list[UUID]]child_run_idszOptional[list[Run]]
child_runsrJ   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 rH   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   r\   rK   Nr#   )r   r   rs   rt   r   r"  stripr   r   	isoformatr\   )r2   r   r   rK   rv   s       r-   rt   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   rB   r   r   )rB   z
int | None)rB   zDecimal | None)rB   zdict[str, int] | None)rB   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   rt   r   r   r-  r0  r3  r6  r9  r<  r?  rB  r+   ry   rz   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 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)   rG  rH  r   rI  rJ  rK  rL  r+   r#   r,   r-   rF  rF  +  s(    ?DE
CIIFFr,   rF  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')(RunLikeDicti7  z&Run-like dictionary, for type-hinting.r   r   rF  r   r   r   r   rK   rL   r   r   r   r   r   r   r[   r   r  r   r   rm   r   inputs_s3_urlsoutputs_s3_urlsr\   r  session_namer   input_attachmentsoutput_attachmentsr   r   r"  Attachmentsrj   r#   Nr$   r#   r,   r-   rN  rN  7  s    0
I  !!  
""##((%%&&Nr,   rN  c                  8    \ rS rSr% SrSrS\S'    SrS\S'   Srg)RunWithAnnotationQueueInfoiT  z&Run schema with annotation queue info.Nr   last_reviewed_timeadded_atr#   )	r%   r&   r'   r(   r)   rW  r*   rX  r+   r#   r,   r-   rV  rV  T  s"    0-1*1.#'H '3r,   rV  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)FeedbackSourceBasei]  z}Base class for feedback sources.

This represents whether feedback is submitted from the API, model, human labeler,
    etc.
r   typere   rJ   rM   NzOptional[Union[UUID, str]]user_idr   	user_namer#   )r%   r&   r'   r(   r)   r*   r   r   rM   r\  r]  r+   r#   r,   r-   rZ  rZ  ]  s?     I*).t)DH&D6*.G'.:#I}#<r,   rZ  c                  (    \ rS rSr% SrSrS\S'   Srg)APIFeedbackSourcein  zAPI feedback source.apizLiteral['api']r[  r#   Nr%   r&   r'   r(   r)   r[  r*   r+   r#   r,   r-   r_  r_  n  s     D. r,   r_  c                  (    \ rS rSr% SrSrS\S'   Srg)ModelFeedbackSourceit  zModel feedback source.modelzLiteral['model']r[  r#   Nra  r#   r,   r-   rc  rc  t  s     $D
$r,   rc  c                  "    \ rS rSrSrSr SrSrg)FeedbackSourceTypeiz  zFeedback source type.r`  rd  r#   N)r%   r&   r'   r(   r)   APIMODELr+   r#   r,   r-   rf  rf  z  s    
C2E"r,   rf  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   r\   Nr   rg   r   r[   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  rQ   Tr#   Nr   r#   r,   r-   rT   rx    r   r,   rT   r#   )r%   r&   r'   r(   r)   r*   rg   r   rn  rp  rq  rr  rt  r  ru  rv  r   rT   r+   r#   r,   r-   rj  rj    s    H(%)J"),&*K#*2<>	HAE:+E:Q!G]!2)-J&-!48O18%!%J%T04~4X(,~,1 !E> ' r,   rj  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.floatrp  r   labelr#   Nr$   r#   r,   r-   rz  rz    s    5LCNr,   rz  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']r[  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.rZ  rt  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   r\   r   rg   r   Nrs  rt  r#   )r%   r&   r'   r(   r)   r*   rt  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   r\   c                 J    [         R                  " [        R                  5      $ r^   r_   r#   r,   r-   rb   TracerSession.<lambda>  rd   r,   re   r   r   Nr   r   r   r   r   rJ   r   	tenant_idr[   reference_dataset_idrH   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#   )rs   rt   r   r   r  replacer   ra   )r2   r   r   rv   s      r-   rt   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   /projects/p/N)r   r  r\   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-   rM   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^   rD  r   r  )rB   r   )r%   r&   r'   r(   r)   r*   r   r   r   r   r   r   r   r   rt   r   r   rM   r   r+   ry   rz   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\S'   Srg)TracerSessionResulti  ziA project, hydrated with additional information.

Sessions are also referred to as "Projects" in the UI.
r   	run_countOptional[timedelta]latency_p50latency_p99r  r  r  r   last_run_start_timerJ   r  session_feedback_stats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,,)441..-!!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	)BaseMessageLikei8  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-   r[  BaseMessageLike.typeA  s    r,   r#   NrB   r   )	r%   r&   r'   r(   r)   r*   r   r[  r+   r#   r,   r-   r  r  8  s(    AL%%%C; ;r,   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg	)
DatasetShareSchemaiF  z*Represents the schema for a dataset share.r   rG   share_tokenr   r   r#   Nr$   r#   r,   r-   r  r  F  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)AnnotationQueueiQ  zRepresents an annotation queue.r   r\   r   r   Nr   r   c                 J    [         R                  " [        R                  5      $ r^   r_   r#   r,   r-   rb   AnnotationQueue.<lambda>Z  rd   r,   re   r   rg   c                 J    [         R                  " [        R                  5      $ r^   r_   r#   r,   r-   rb   r  \  rd   r,   
updated_atr  r#   )r%   r&   r'   r(   r)   r*   r   r   rg   r  r+   r#   r,   r-   r  r  Q  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)AnnotationQueueWithDetailsib  z,Represents an annotation queue with details.Nr   rubric_instructionsr#   )r%   r&   r'   r(   r)   r  r*   r+   r#   r,   r-   r  r  b  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)BatchIngestConfigii  z"Configuration for batch ingestion.rk   use_multipart_endpointrA   scale_up_qsize_triggerscale_up_nthreads_limitscale_down_nempty_trigger
size_limitr   size_limit_bytesr#   Nr$   r#   r,   r-   r  r  i  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)LangSmithInfoiz  z'Information about the LangSmith server.r!  r   versionNr   license_expiration_timezOptional[BatchIngestConfig]batch_ingest_configrJ   instance_flagsr#   )r%   r&   r'   r(   r)   r  r*   r  r  r  r+   r#   r,   r-   r  r  z  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   r\   display_namer   rg   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   r\   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]timerJ   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.rA   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   r\   Nr   r   r   r  r   rg   r   r  rJ   r   r   experiments_infor  c                ^    U R                   b  SU R                   ;  a  0 $ U R                   S   $ r   r  r=   s    r-   rM   ComparativeExperiment.metadata  r  r,   r#   r  )r%   r&   r'   r(   r)   r*   r   r   r   r  r  r   rM   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   r\   r   r  r  Nr[   r  repo_id	parent_idr   r  r   rg   r  re   r  example_run_idsr   r   num_downloads	num_viewsparent_commit_hashr#   )r%   r&   r'   r(   r)   r*   r  r  r  r  rg   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   readmer\   r  r   rg   r  rk   	is_publicis_archivedr   r   original_repo_idupstream_repo_idr  	full_namerA   	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)	ListPromptsResponseiP  z A list of prompts with metadata.zlist[Prompt]reposrA   r   r#   Nr$   r#   r,   r-   r  r  P  s    *J&r,   r  c                  .    \ rS rSrSrSr Sr Sr SrSr	g)	PromptSortFieldiY  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  Y  s%    .#MIJIr,   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   Srg)	InputTokenDetailsif  zvBreakdown of input token counts.

Does *not* need to sum to full input token count. Does *not* need to have all keys.
rA   audiocache_creation
cache_readr#   Nr$   r#   r,   r-   r  r  f  s(    
 J Or,   r  c                  0    \ rS rSr% SrS\S'    S\S'   Srg)OutputTokenDetailsi{  zxBreakdown of output token counts.

Does *not* need to sum to full output token count. Does *not* need to have all keys.
rA   r  	reasoningr#   Nr$   r#   r,   r-   r	  r	  {  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.
r{  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.
r{  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.
rA   r-  r0  r  zNotRequired[InputTokenDetails]r9  zNotRequired[OutputTokenDetails]r<  zNotRequired[float]r3  r6  r  zNotRequired[InputCostDetails]r?  zNotRequired[OutputCostDetails]rB  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.
rA   r-  r0  r  r  r9  r	  r<  r{  r3  r6  r  r  r?  r  rB  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.rA   countr   example_idsr#   Nr$   r#   r,   r-   r  r    s    MJ45r,   r  c                  0    \ rS rSr% Sr\" \S9rS\S'   Sr	g)ExampleWithRunsi  zExample with runs.re   z	list[Run]runsr#   N)
r%   r&   r'   r(   r)   r   r   r  r*   r+   r#   r,   r-   r  r    s    D1D)1"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rg)ExperimentRunStatsi   z!Run statistics for an experiment.r   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r#   Nr$   r#   r,   r-   r  r     s    +,$$?$$6=  D$$H++8..-!!M""G&&C((G((>)r,   r  c                  <    \ rS rSr% SrS\S'    S\S'    S\S'   S	rg
)ExperimentResultsi!  zResults 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_runsr#   Nr$   r#   r,   r-   r  r  !  s!     1!!611r,   r  c                      \ rS rSr% SrS\S'   S\S'   S\S'   SrS	\S
'   S\S'   S\S'   S\S'   \SS j5       rSS jr	Sr
g)InsightsReporti/  zHAn Insights Report created by the Insights Agent over a tracing project.z
UUID | strr\   r   r   r  Nz
str | Noner   
project_idhost_urlr  c           	         U R                    S[        U R                  5       S[        U R                  5       S[        U R                  5       3$ )z1URL to view this Insights Report in LangSmith UI.r   r  z?tab=4&clusterJobId=)r#  r   r  r"  r\   r=   s    r-   linkInsightsReport.link:  sH     --C$7#8SEYDZZnorswszszo{n|}}r,   c                <    SU R                    SU R                   S3$ )Nz	<a href="z2", target="_blank" rel="noopener">InsightsReport('z')</a>)r%  r   r=   s    r-   _repr_html_InsightsReport._repr_html_?  s%    499+%XY]YbYbXccjkkr,   r#   r  )r%   r&   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                  8    \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)FeedbackFormulaWeightedVariableiC  zBA feedback key and weight used when calculating feedback formulas.zLiteral['weighted_key']	part_typer{  weightz#Annotated[str, Field(min_length=1)]rl  r#   Nr$   r#   r,   r-   r+  r+  C  s    L&&M	,,r,   r+  c                  d    \ rS rSr% SrSrS\S'   SrS\S'   S\S'   S	\S
'   \" SSSS9r	S\S'   Sr
g)FeedbackFormulaCreateiK  z,Schema used for creating a feedback formula.Nr[   rG   r  r   feedback_keyLiteral['sum', 'avg']aggregation_type.   2   	min_items	max_items%list[FeedbackFormulaWeightedVariable]formula_partsr#   )r%   r&   r'   r(   r)   rG   r*   r  r   r9  r+   r#   r,   r-   r/  r/  K  s>    6!%J%!%J%++;@qB<M8 r,   r/  c                  H    \ rS rSr% SrS\S'   S\S'   \" SSS	S
9rS\S'   Srg)FeedbackFormulaUpdateiW  z,Schema used for updating a feedback formula.r   r0  r1  r2  .r3  r4  r5  r8  r9  r#   N)	r%   r&   r'   r(   r)   r*   r   r9  r+   r#   r,   r-   r;  r;  W  s*    6++;@qB<M8 r,   r;  c                  8    \ rS rSr% SrS\S'   S\S'   S\S'   Srg	)
FeedbackFormulaia  z%Schema for getting feedback formulas.r   r\   r   rg   r   r#   Nr$   r#   r,   r-   r=  r=  a  s    /Hr,   r=  )rr)   
__future__r   collections.abcr   r   r   r   decimalr   enumr	   typingr
   r   r   r   r   r   r   uuidr   typing_extensionsr   r   pydantic.v1r   r   r   r   r   r   ImportErrorpydanticpathlibr   r   rm  r   r   ro  r   tuplerC   rT  r/   rE   rV   _AttachmentLikerY   ExampleUploadWithAttachmentsr|   r   r   r   r   r   ExampleUpdateWithAttachmentsr   r   DatasetTransformationTyper   r   r   r   r   r
  rF  rN  rV  rZ  r_  rc  rf  rj  rz  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  r!  r+  r/  r;  r=  r#   r,   r-   <module>rO     sz   $ " $ 2 2      4 $  %:y+t;<
4d?#
 * 3eCJ/U39=MMNNO 8   ') 'i 
 sEz!2E#t)4DD
!I !&  - = Y 'bk 'bTK I !I !,  - sD 
) 
 $ ?IU ?-k -`Y W'i W't,' ,D	#t 	)5 :4 4= ="!* !%, %# #'9 'T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 + E*    s   M; ;NN