
    	hě                    ^   d 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mZmZmZmZmZ ddlmZ ddlmZmZ 	 dd	lmZmZmZmZmZmZ n# e$ r dd	lmZmZmZmZmZmZ Y nw xY wdd
lm Z  ddlm!Z! eeeedf         Z"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          Z.e.Z/ G d de.          Z0 G d de          Z1 G d de+          Z2 G d de+          Z3 G d d e          Z4 G d! d"e          Z5e5Z6 G d# d$e$e	          Z7 G d% d&e          Z8e!d'         Z9 G d( d)ed*+          Z: G d, d-e8          Z; G d. d/e          Z<d0 Z= G d1 d2e          Z> G d3 d4e>          Z? G d5 d6e$e	          Z@ G d7 d8ed*+          ZA G d9 d:e>          ZB G d; d<e          ZC G d= d>eC          ZD G d? d@eC          ZE G dA dBe	          ZF G dC dDe          ZG G dE dFed*+          ZH G dG dHed*+          ZI G dI dJeG          ZJ G dK dLeG          ZK G dM dNe          ZL G dO dPeL          ZMe G dQ dRe                      ZN G dS dTed*+          ZO G dU dVe          ZP G dW dXeP          ZQ G dY dZed*+          ZR G d[ d\e          ZSe2T                                  G d] d^e          ZU G d_ d`e          ZV G da dbed*+          ZW G dc dded*+          ZX G de dfe          ZY G dg dhe          ZZ G di dje          Z[ G dk dle          Z\ G dm dne          Z] G do dpe          Z^ G dq dre$e	          Z_ G ds dted*+          Z` G du dved*+          Za G dw dxed*+          Zb G dy dzed*+          Zc G d{ d|e          Zd G d} d~ed*+          Ze G d de          ZfdS )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                  (    e Zd ZU dZded<   ded<   dS )
Attachmenta  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]dataN__name__
__module____qualname____doc____annotations__     ^/var/www/html/web-builder-api.evdpl.com/venv/lib/python3.11/site-packages/langsmith/schemas.pyr   r   /   s3          " NNNr'   r   c                  .    e Zd ZdZdddZdddZddZdS )BinaryIOLikez$Protocol for binary IO-like objects.sizeintreturnbytesc                    dS )zRead function.Nr&   )selfr,   s     r(   readzBinaryIOLike.readN       r'   r   offsetwhencec                    dS )zSeek function.Nr&   )r1   r4   r5   s      r(   seekzBinaryIOLike.seekR   r3   r'   c                    dS )zGet value function.Nr&   r1   s    r(   getvaluezBinaryIOLike.getvalueV   r3   r'   N)r+   )r,   r-   r.   r/   )r   )r4   r-   r5   r-   r.   r-   )r.   r/   )r!   r"   r#   r$   r2   r7   r:   r&   r'   r(   r*   r*   J   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	<    G d
 d          Z	dS )ExampleBasezExample base model.r   
dataset_idNdefaultOptional[dict[str, Any]]inputsoutputsmetadatac                      e Zd ZdZdZdZdS )ExampleBase.Config#Configuration class for the schema.TN)r!   r"   r#   r$   frozenarbitrary_types_allowedr&   r'   r(   ConfigrE   c   s!        11"&r'   rI   )
r!   r"   r#   r$   r%   r   rA   rB   rC   rI   r&   r'   r(   r<   r<   [   s         ',uT':':':F::::(-d(;(;(;G;;;;).t)<)<)<H<<<<' ' ' ' ' ' ' ' ' 'r'   r<   c                  $    e Zd ZU ded<   ded<   dS )_AttachmentDictr   r   r   r   N)r!   r"   r#   r%   r&   r'   r(   rK   rK   j   s'         NNNr'   rK   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	          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.Optional[UUID]idc                 >    t          j        t          j                  S Nr   nowr   utcr&   r'   r(   <lambda>zExampleCreate.<lambda>x       hl9S9S r'   default_factoryr   
created_atNr>   r@   rA   rB   rC   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                      j        di | dS zInitialize from dict.Nr&   super__init__r1   r   	__class__s     r(   rf   zExampleCreate.__init__   &      4     r'   )r!   r"   r#   r$   r%   r   rY   rA   rB   rC   r[   r\   r^   r`   ra   rf   __classcell__rh   s   @r(   rM   rM   t   s        ** 51S1STTTJTTTT',uT':':':F::::(-d(;(;(;G;;;;).t)<)<)<H<<<<-1E11118<K<<<<#####6:::::$(M((((! ! ! ! ! ! ! ! !r'   rM   c                      e Zd ZU dZded<   dS )ExampleUpsertWithAttachmentsz Example create with attachments.r   r=   Nr    r&   r'   r(   rm   rm      s$         **r'   rm   c                  2    e Zd ZU dZded<   ded<   ded<   dS )	AttachmentInfozInfo for an attachment.r   presigned_urlr*   readerOptional[str]r   Nr    r&   r'   r(   ro   ro      s<         !!r'   ro   c                  f    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<    ee
          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                 B    t          j        dt          j                  S )Nr   )tz)r   fromtimestampr   rT   r&   r'   r(   rU   zExample.<lambda>   s     6qX\ J J J r'   rW   r   rY   z$00000000-0000-0000-0000-000000000000r>   r=   NOptional[datetime]modified_atz	list[Run]runsrN   ra   z#Optional[dict[str, AttachmentInfo]]r\   rr   	_host_url
_tenant_idkwargsr	   r.   Nonec                V     t                      j        di | || _        || _        dS )Initialize a Dataset object.Nr&   )re   rf   r{   r|   )r1   r{   r|   r}   rh   s       r(   rf   zExample.__init__   s4     	""6""""$r'   c                    | j         rDd| j         d| j         }| j        r | j          dt	          | j                   | S | j          | S dS )URL of this run within the app.
/datasets/z/e//o/N)r{   r=   rO   r|   r   )r1   paths     r(   urlzExample.url   so     > 	-===DG==D J.IIS-A-AI4IIIn,d,,,tr'   c                F    | 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   r9   s    r(   __repr__zExample.__repr__   s3    .aadgaaDOaaUYU]aaaar'   )NN)r{   rr   r|   rN   r}   r	   r.   r~   r.   rr   )r!   r"   r#   r$   r%   r   rY   r   r=   ry   listrz   ra   r\   r   r{   r|   rf   propertyr   r   rj   rk   s   @r(   rt   rt      s        HHH 5JJ  J     uTT*P%Q%QRRRJRRRR&+eD&9&9&9K9999eD111D1111$(M((((7<uT7J7J7JKJJJJ.*{4888I8888!,T!:!:!:J:::: $(%)	% 	% 	% 	% 	% 	% 	%    Xb b b b b b br'   rt   c                      e Zd ZU dZded<   dS )ExampleSearchzExample returned via search.r   rO   Nr    r&   r'   r(   r   r      s         &&HHHHHr'   r   c                  \    e Zd ZU dZ eed          Zded<    eed          Z	ded<   d	S )
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%   r   r   r&   r'   r(   r   r      s~         //"U*X  F     *L  F      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<    G d d          Z fdZ xZS )ExampleUpdatez Example update with attachments.r   rO   NrN   r=   r>   r@   rA   rB   rC   rZ   r[   zOptional[Attachments]r\   zOptional[AttachmentsOperations]attachments_operationsc                      e Zd ZdZdZdS )ExampleUpdate.ConfigrF   TNr!   r"   r#   r$   rG   r&   r'   r(   rI   r              11r'   rI   c                :     t                      j        di | dS rc   rd   rg   s     r(   rf   zExampleUpdate.__init__   ri   r'   )r!   r"   r#   r$   r%   r=   r   rA   rB   rC   r[   r\   r   rI   rf   rj   rk   s   @r(   r   r      s        **HHH!%J%%%%',uT':':':F::::(-d(;(;(;G;;;;).t)<)<)<H<<<<-1E1111)-K---->BBBBB       
! ! ! ! ! ! ! ! !r'   r   c                      e Zd ZdZdZdZdZdS )DataTypezEnum for dataset data types.kvllmchatN)r!   r"   r#   r$   r   r   r   r&   r'   r(   r   r      s#        &&	B
CDDDr'   r   c                  T    e Zd ZU dZded<   dZded<   dZded<    G d	 d
          ZdS )DatasetBasezDataset base model.r   nameNrr   r   zOptional[DataType]	data_typec                      e Zd ZdZdZdS )DatasetBase.ConfigrF   TNr   r&   r'   r(   rI   r      r   r'   rI   )r!   r"   r#   r$   r%   r   r   rI   r&   r'   r(   r   r      so         III!%K%%%%$(I((((         r'   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<   dS )DatasetTransformationz#Schema for dataset transformations.r   r   z%Union[DatasetTransformationType, str]transformation_typeNr    r&   r'   r(   r   r     s-         --OOO>>>>>>r'   r   F)totalc                  D    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   Nr>   rx   ry   Optional[int]example_countsession_countlast_session_start_timer@   inputs_schemaoutputs_schemaz%Optional[list[DatasetTransformation]]transformationsrC   rr   r{   rN   r|   _public_pathr}   r	   r.   r~   c                    d|v r|                     d          |d<   d|v r|                     d          |d<    t                      j        di | || _        || _        || _        dS )r   inputs_schema_definitionr   outputs_schema_definitionr   Nr&   )popre   rf   r{   r|   r   )r1   r{   r|   r   r}   rh   s        r(   rf   zDataset.__init__#  s     &//&,jj1K&L&LF?#&&00'-zz2M'N'NF#$""6""""$(r'   c                    | j         rU| j        r| j          | j         S | j        r&| j          dt          | j                   d| j         S | j          d| j         S dS )r   r   r   N)r{   r   r|   r   rO   r9   s    r(   r   zDataset.url6  s     > 	:  >.=$*;=== W.VVS-A-AVVTWVVVn99999tr'   )NNN)
r{   rr   r|   rN   r   rr   r}   r	   r.   r~   r   )r!   r"   r#   r$   r%   r   ry   r   r   r   r   r   r   rC   r   r{   r|   r   rf   r   r   rj   rk   s   @r(   r   r     sz        HHH&+eD&9&9&9K9999#'M''''#'M''''266666.2M2222/3N3333=AOAAAA)-H----*{4888I8888!,T!:!:!:J::::"-+d";";";L;;;; $(%)&*	) ) ) ) ) ) )&    X    r'   r   c                  ,    e Zd ZU dZdZded<   ded<   dS )DatasetVersionz%Class representing a dataset version.Nr_   tagsr   as_of)r!   r"   r#   r$   r   r%   r&   r'   r(   r   r   B  s0         // $D$$$$OOOOOr'   r   c                 
    di iS )NrC   r&   r&   r'   r(   _default_extrar   I  s    r'   c                     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 G d% d&          Zd	S )*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   rA   rB   rN   reference_example_idparent_run_idr_   r   z-Union[Attachments, dict[str, AttachmentInfo]]r\   r.   dict[str, Any]c                T    | j         i | _         | j                             di           S zRetrieve the metadata (if any).NrC   )r   
setdefaultr9   s    r(   rC   zRunBase.metadata  s+     :DJz$$Z444r'   c                6    | j                             d          S )z"Retrieve the revision ID (if any).revision_id)rC   getr9   s    r(   r   zRunBase.revision_id  s     }  ///r'   Optional[float]c                V    | j         dS | j         | j        z
                                  S )zLatency in seconds.N)r   r   total_secondsr9   s    r(   latencyzRunBase.latency  s,     = 4/>>@@@r'   c                F    | j          d| j         d| j         d| j         dS )r   r   z, name='z', run_type='r   )rh   rO   r   r   r9   s    r(   r   zRunBase.__repr__  s1    .``dg``ty``t}````r'   c                      e Zd ZdZdZdS )RunBase.ConfigrF   TN)r!   r"   r#   r$   rH   r&   r'   r(   rI   r     s        11"&r'   rI   r.   r   )r.   rN   )r.   r   )r!   r"   r#   r$   r%   r   r   r   r   r   r   r   r   rA   rB   r   r   r   r\   r   rC   r   r   r   rI   r&   r'   r(   r   r   M  s          HHH(III* MMM" $(H''''-!E.AAAEAAAA=E;!%J%%%%F#'F'''' 5...F....""G""""/+/////@$(M((((@ $D$$$$6AFB B BK    4 5 5 5 X5 0 0 0 X0 A A A XAa a a' ' ' ' ' ' ' ' ' 'r'   r   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<   	 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(<   d;d< fd-Zed=d.            Zed>d0            Z ed>d1            Z!ed?d3            Z"ed?d4            Z#ed@d6            Z$ed@d7            Z%edAd9            Z&edAd:            Z' xZ(S )BRunz$Run schema when loading from the DB.NrN   
session_idOptional[list[UUID]]child_run_idszOptional[list[Run]]
child_runsr@   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 r>   r   dotted_orderOptional[bool]
in_datasetr{   r}   r	   r.   r~   c                r   |                     d          sd|                     d          i|}|                    dd          pi } t                      j        di |d|i || _        | j                                        s0| j        s+| j        	                                 | j
         | _        dS dS dS )Initialize a Run object.r   rO   rA   Nr&   )r   r   re   rf   r{   r   stripr   r   	isoformatrO   )r1   r{   r}   rA   rh   s       r(   rf   zRun.__init__  s    zz*%% 	> &**T"2"2=f=FHd++1r11611&1111" &&(( 	J1C 	J#'?#<#<#>#> I I ID	J 	J 	J 	Jr'   c                B    | j         r| j        r| j          | j         S dS )r   N)r{   r   r9   s    r(   r   zRun.url  s1     > 	6dm 	6n5dm555tr'   
int | Nonec                    | j         S )zAlias for prompt_tokens.)r   r9   s    r(   input_tokenszRun.input_tokens  s     !!r'   c                    | j         S )zAlias for completion_tokens.)r   r9   s    r(   output_tokenszRun.output_tokens  s     %%r'   Decimal | Nonec                    | j         S )zAlias for prompt_cost.)r   r9   s    r(   
input_costzRun.input_cost  s     r'   c                    | j         S )zAlias for completion_cost.)r   r9   s    r(   output_costzRun.output_cost  s     ##r'   dict[str, int] | Nonec                    | j         S )zAlias for prompt_token_details.)r   r9   s    r(   input_token_detailszRun.input_token_details  s     ((r'   c                    | j         S )zAlias for output_token_details.)r   r9   s    r(   output_token_detailszRun.output_token_details  s     ,,r'   dict[str, Decimal] | Nonec                    | j         S )zAlias for prompt_cost_details.)r   r9   s    r(   input_cost_detailszRun.input_cost_details  s     ''r'   c                    | j         S )z"Alias for completion_cost_details.)r   r9   s    r(   output_cost_detailszRun.output_cost_details!  s     ++r'   rQ   r{   rr   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   r   r   r   r   r   r   r   r   r   r   r   r{   rf   r   r   r  r
  r  r  r  r  r  r  rj   rk   s   @r(   r   r     sj        ..!%J%%%%-*.M....(&*J****M/3N3333&"H""""7"&K&&&&: F    .#'M''''/'+++++/"&L&&&&1599999 :>==== ,0////-$(J((((M%)K))))G)-O----C8<<<<< =A@@@@ ,0N////!NNNCb)))L))))
 "&J%%%%+*{4888I8888J J J J J J J    X " " " X" & & & X&       X  $ $ $ X$ ) ) ) X) - - - X- ( ( ( X( , , , X, , , , ,r'   r   c                  .    e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
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  '  s7        ??DE
CIIFFFFr'   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$<   d%S )&RunLikeDictz&Run-like dictionary, for type-hinting.r   r   r  r   r   r   r   rA   rB   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$  3  s2        00III    !!!!    """"####((((%%%%&&&&NNNr'   r$  c                  2    e Zd ZU dZdZded<   	 dZded<   dS )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,  P  s>         00-11111.#'H''''33r'   r,  c                  b    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<   dS )FeedbackSourceBasezBase class for feedback sources.

    This represents whether feedback is submitted from the API, model, human labeler,
        etc.
    r   typerW   r@   rC   NzOptional[Union[UUID, str]]user_idrr   	user_name)
r!   r"   r#   r$   r%   r   r   rC   r2  r3  r&   r'   r(   r0  r0  Y  sp           III*).t)D)D)DHDDDD6*.G....:#I####<<r'   r0  c                  "    e Zd ZU dZdZded<   dS )APIFeedbackSourcezAPI feedback source.apizLiteral['api']r1  Nr!   r"   r#   r$   r1  r%   r&   r'   r(   r5  r5  j  s)          D      r'   r5  c                  "    e Zd ZU dZdZded<   dS )ModelFeedbackSourcezModel feedback source.modelzLiteral['model']r1  Nr7  r&   r'   r(   r9  r9  p  s)           $D$$$$$$r'   r9  c                      e Zd ZdZdZ	 dZdS )FeedbackSourceTypezFeedback source type.r6  r:  N)r!   r"   r#   r$   APIMODELr&   r'   r(   r<  r<  v  s#        
C2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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<   	  G d d          ZdS )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   c                      e Zd ZdZdZdS )FeedbackBase.ConfigrF   TNr   r&   r'   r(   rI   rN    r   r'   rI   )r!   r"   r#   r$   r%   rY   ry   rD  rF  rG  rH  rJ  r   rK  rL  r   rI   r&   r'   r(   r@  r@    s\        HHH(%)J)))),&*K****2<>HHHAE+EQ!G!!!!2)-J----!48O8888%!%J%%%%T044444X(,,,,,1 !E    '         r'   r@  c                  *    e Zd ZU dZded<   	 ded<   dS )FeedbackCategoryz+Specific value and label pair for feedback.floatrF  rr   labelNr    r&   r'   r(   rP  rP    s0         55LLLCNNr'   rP  c                  B    e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   d	S )
FeedbackConfigz:Represents _how_ a feedback value ought to be interpreted.z0Literal['continuous', 'categorical', 'freeform']r1  r   minmaxz Optional[list[FeedbackCategory]]
categoriesNr    r&   r'   r(   rT  rT    sW         DD::::440000@ @r'   rT  c                  >    e Zd ZU dZded<   	 dZded<   	 dZded<   dS )	FeedbackCreatez"Schema used for creating feedback.r0  rJ  NzOptional[FeedbackConfig]feedback_configr   r   )r!   r"   r#   r$   r%   rZ  r   r&   r'   r(   rY  rY    sL         ,,''''%04O4444% E      r'   rY  c                  D    e Zd ZU dZded<   ded<   	 ded<   	 dZded	<   dS )
FeedbackzSchema for getting feedback.r   rO   r   rY   ry   NrI  rJ  )r!   r"   r#   r$   r%   rJ  r&   r'   r(   r\  r\    sP         &&HHH,248O888822r'   r\  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                 >    t          j        t          j                  S rQ   rR   r&   r'   r(   rU   zTracerSession.<lambda>  rV   r'   rW   r   r   Nrx   r   rr   r   r   r@   r   	tenant_idrN   reference_dataset_idr>   r{   r}   r	   r.   r~   c                     t                      j        di | || _        | j        j        ,| j                            t          j                  | _        dS dS )r  N)tzinfor&   )re   rf   r{   r   rc  replacer   rT   )r1   r{   r}   rh   s      r(   rf   zTracerSession.__init__  sZ    ""6""""?!)"o55X\5JJDOOO *)r'   c                F    | j         r| j          d| j         d| j         S dS )r   r   z/projects/p/N)r{   r`  rO   r9   s    r(   r   zTracerSession.url  s6     > 	OnNNNNTWNNNtr'   r   c                @    | j         	d| j         vri S | j         d         S r   r   r9   s    r(   rC   zTracerSession.metadata  *     :4:!=!=Iz*%%r'   r   c                @    | j         	d| j         vrg S | j         d         S )zRetrieve the tags (if any).Nr   rg  r9   s    r(   r   zTracerSession.tags  s*     :tz!9!9Iz&!!r'   rQ   r  r   r   )r.   r   )r!   r"   r#   r$   r%   r   r   r   r   r   r   r   r{   rf   r   r   rC   r   rj   rk   s   @r(   r^  r^    sq         
 HHH  51S1STTTJTTTT+#'H'''')!%K%%%%)D"&*E****)OOO0((((J*{4888I8888K K K K K K K    X & & & X& " " " X" " " " "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<   	 ded<   dS )TracerSessionResultzqA 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   rx   last_run_start_timer@   r   zOptional[list[dict[str, Any]]]
run_facetsr   r   r   r   first_token_p50first_token_p99r   
error_rateNr    r&   r'   r(   rk  rk    s          
 ,$$$$?$$$$6=    D$$$$H++++8,,,,)....-!!!!M""""G&&&&C((((G((((>))r'   rk  c                  D    e Zd ZU dZded<   	 ded<   	 ed	d            ZdS )
BaseMessageLikez7A protocol representing objects similar to BaseMessage.r   contentzdict[Any, Any]additional_kwargsr.   c                    dS )z,Type of the Message, used for serialization.Nr&   r9   s    r(   r1  zBaseMessageLike.type;  s      r'   N)r.   r   )r!   r"   r#   r$   r%   r   r1  r&   r'   r(   ru  ru  2  sU         AALLL%%%%%C; ; ; X; ; ;r'   ru  c                  6    e Zd ZU dZded<   	 ded<   	 ded<   dS )DatasetShareSchemaz*Represents the schema for a dataset share.r   r=   share_tokenr   r   Nr    r&   r'   r(   rz  rz  @  s?         44 ,HHH((r'   rz  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<   dS )AnnotationQueuezRepresents an annotation queue.r   rO   r   r   Nrr   r   c                 >    t          j        t          j                  S rQ   rR   r&   r'   r(   rU   zAnnotationQueue.<lambda>T  rV   r'   rW   r   rY   c                 >    t          j        t          j                  S rQ   rR   r&   r'   r(   rU   zAnnotationQueue.<lambda>V  rV   r'   
updated_atr`  )	r!   r"   r#   r$   r%   r   r   rY   r  r&   r'   r(   r}  r}  K  s         ))HHH8III+!%K%%%%: 51S1STTTJTTTT> 51S1STTTJTTTTCOOODDr'   r}  c                  "    e Zd ZU dZdZded<   dS )AnnotationQueueWithDetailsz,Represents an annotation queue with details.Nrr   rubric_instructions)r!   r"   r#   r$   r  r%   r&   r'   r(   r  r  \  s*         66)-----;;r'   r  c                  Z    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S )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  c  sl         ,,    D<    7""""AOOO/####88r'   r  c                  R    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S )LangSmithInfoz'Information about the LangSmith server.r   r   versionNrx   license_expiration_timezOptional[BatchIngestConfig]batch_ingest_configr@   instance_flags)	r!   r"   r#   r$   r  r%   r  r  r  r&   r'   r(   r  r  t  sg         11G.266666+7;;;;;/3N333333r'   r  c                  F    e Zd ZU dZded<   	 ded<   	 ded<   	 dZded	<   dS )
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    sS         ,,GGG)*#'M''''''r'   r  c                  6    e Zd ZU dZded<   	 ded<   	 ded<   dS )	FeedbackIngestTokenz2Represents the schema for a feedback ingest token.r   rO   r   r   r   
expires_atNr    r&   r'   r(   r  r    s<         <<HHH.HHH3++r'   r  c                  6    e Zd ZU dZded<   	 ded<   	 ded<   dS )	RunEventzRun event schema.r   r   zUnion[datetime, str]timer@   r}   Nr    r&   r'   r(   r  r    s?         III$$$$,,r'   r  c                  6    e Zd ZU dZded<   	 ded<   	 ded<   dS )TimeDeltaInputzTimedelta input schema.r-   dayshoursminutesNr    r&   r'   r(   r  r    s9         !!IIIJJJLLLr'   r  c                  6    e Zd ZU dZded<   	 ded<   	 ded<   dS )DatasetDiffInfoz;Represents the difference information between two datasets.z
list[UUID]examples_modifiedexamples_addedexamples_removedNr    r&   r'   r(   r  r    sB         E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dS )ComparativeExperimentzRepresents a comparative experiment.

    This information summarizes evaluation results comparing
    two or more models on a given dataset.
    r   rO   Nrr   r   r   r`  r   rY   ry   ra  r@   r   r   experiments_infor   r.   r   c                @    | j         	d| j         vri S | j         d         S r   rg  r9   s    r(   rC   zComparativeExperiment.metadata  rh  r'   r   )r!   r"   r#   r$   r%   r   r   r   r  r   r   rC   r&   r'   r(   r  r    s           HHH?D:!%K%%%%@OOOGDJJ&*E****?-11111\/3N3333P& & & X& & &r'   r  c                  N    e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   	 ded	<   d
S )PromptCommitz$Represents a Prompt with a manifest.r   ownerrepocommit_hashr   manifestz
list[dict]examplesNr    r&   r'   r(   r  r    sZ         ..JJJ0III!(%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<   dS )ListedPromptCommitz;Represents a listed prompt commit with associated metadata.r   rO   r   r  r  NrN   r   repo_id	parent_idrr   r  rx   rY   r  rW   r   example_run_idsr   r   num_downloads	num_viewsparent_commit_hash)r!   r"   r#   r$   r%   r   r  r  r  rY   r  r   r   r  r  r  r  r&   r'   r(   r  r    s        EEHHH6JJJ)III3"&K&&&&O"G""""5 $I$$$$8!%K%%%%*%)J))))=%)J))))B,1E$,G,G,GOGGGGH#$M$$$$> I    :(,,,,,11r'   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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<   dS ) Promptz"Represents a Prompt with metadata.r   repo_handleNrr   r   readmerO   r`  r   rY   r  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    sx        ,,!!%K%%%%( F    #GGGNNN,*-OOO')OOO.&*****3&*****30NNN<NNN"NNN)-----@&*****& -11111:-11111::r'   r  c                  *    e Zd ZU dZded<   	 ded<   dS )ListPromptsResponsez A list of prompts with metadata.zlist[Prompt]reposr-   r   Nr    r&   r'   r(   r  r  J  s0         **JJJ&&r'   r  c                  (    e Zd ZdZdZ	 dZ	 dZ	 dZdS )PromptSortFieldz$Enum for sorting fields for prompts.r  r  r  r  N)r!   r"   r#   r$   r  r  r  r  r&   r'   r(   r  r  S  s3        ..#MIJIr'   r  c                  6    e Zd ZU dZded<   	 ded<   	 ded<   dS )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  `  sJ          
 JJJ OOO r'   r  c                  *    e Zd ZU dZded<   	 ded<   dS )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  u  s7          
 JJJNNN r'   r  c                  6    e Zd ZU dZded<   	 ded<   	 ded<   dS )InputCostDetailszvBreakdown of input token costs.

    Does *not* need to sum to full input cost. Does *not* need to have all keys.
    rQ  r  r  r  Nr    r&   r'   r(   r  r    sM          
 LLL%  r'   r  c                  *    e Zd ZU dZded<   	 ded<   dS )OutputCostDetailszxBreakdown of output token costs.

    Does *not* need to sum to full output cost. Does *not* need to have all keys.
    rQ  r  r  Nr    r&   r'   r(   r  r    s:          
 LLL& 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S )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    s          
 JPA7777 :999 #"""'####(""""'5555/77770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<   dS )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  rQ  r  r  r   r  r  r  r  Nr    r&   r'   r(   r  r    s           33******,,,,+'('((((/****00r'   r  c                  *    e Zd ZU dZded<   	 ded<   dS )UpsertExamplesResponsezCResponse object returned from the upsert_examples_multipart method.r-   countr   example_idsNr    r&   r'   r(   r  r    s0         MMJJJ45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   rC  r   r   rE  r   tupler/   r*  r*   r<   rK   _AttachmentLikerM   ExampleUploadWithAttachmentsrm   ro   rt   r   r   r   ExampleUpdateWithAttachmentsr   r   DatasetTransformationTyper   r   r   r   r   r   r  r$  r,  r0  r5  r9  r<  r@  rP  rT  rY  r\  r^  rk  ru  rz  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 2 2 2 2 2 2 2 2                                  4 4 4 4 4 4 4 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 (b (b (b (bk (b (b (bV    K       I   ! ! ! ! !I ! ! !,  -     sD   
 
 
 
 
) 
 
 
 $ ? ? ? ? ?IU ? ? ? ?- - - - -k - - -`    Y     U' U' U' U' U'i U' U' U'p, , , , ,' , , ,D	 	 	 	 	#t 	 	 	    )5    :4 4 4 4 4 4 4 4= = = = = = = ="! ! ! ! !* ! ! !% % % % %, % % %# # # # # # # #' ' ' ' '9 ' ' 'TO O O O Oy O O O O@ @ @ @ @Ye @ @ @ @! ! ! ! !\ ! ! !	3 	3 	3 	3 	3| 	3 	3 	33" 3" 3" 3" 3"I 3" 3" 3"l#* #* #* #* #*- #* #* #*L 
; 
; 
; 
; 
;h 
; 
; 
;) ) ) ) )% ) ) ) )E E E E Ei E E E"< < < < < < < <9 9 9 9 9	 9 9 9 9"	4 	4 	4 	4 	4I 	4 	4 	4      	( 	( 	( 	( 	(	 	( 	( 	(, , , , ,) , , ,- - - - -y - - - -    Ye    = = = = =i = = =!& !& !& !& !&I !& !& !&H         9      (2 (2 (2 (2 (2 (2 (2 (2V.; .; .; .; .;Y .; .; .;b' ' ' ' ') ' ' '
 
 
 
 
c4 
 
 
    	    *    %         y    *    	     1 1 1 1 1I 1 1 1D1 1 1 1 1Ye 1 1 1 1:6 6 6 6 6Y 6 6 6 6 6s   A A'&A'