o
    +if$<                     @  s  d Z ddlmZ ddlmZmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZ zddlmZmZmZmZmZmZ W n ey_   ddlmZmZmZmZmZmZ Y nw dd	lmZ eeeed
f Zee	eeeed
f ZG dd deZ G dd de Z!G dd de Z"G dd deZ#G dd deeZ$G dd deZ%G dd de%Z&G dd de%Z'G dd deeZ(G dd deZ)G dd  d e)Z*G d!d" d"ed#d$Z+G d%d& d&e)Z,G d'd( d(eZ-G d)d* d*e-Z.G d+d, d,e-Z/G d-d. d.eZ0G d/d0 d0eZ1G d1d2 d2e1Z2G d3d4 d4e1Z3G d5d6 d6eZ4G d7d8 d8e4Z5eG d9d: d:eZ6G d;d< d<ed#d$Z7G d=d> d>eZ8G d?d@ d@ed#d$Z9G dAdB dBeZ:e";  d
S )CzSchemas for the LangSmith API.    )annotations)datetime	timedelta)Enum)AnyDictListOptionalProtocolUnionruntime_checkable)UUID)	TypedDict)	BaseModelFieldPrivateAttr
StrictBoolStrictFloat	StrictInt)LiteralNc                   @  sB   e Zd ZU dZded< ded< eddZded	< G d
d dZdS )ExampleBasezExample base model.r   
dataset_idzDict[str, Any]inputsNdefaultOptional[Dict[str, Any]]outputsc                   @     e Zd ZdZdS )zExampleBase.ConfigTN__name__
__module____qualname__frozen r#   r#   J/var/www/html/corbot_env/lib/python3.10/site-packages/langsmith/schemas.pyConfig3       r%   )r   r    r!   __doc____annotations__r   r   r%   r#   r#   r#   r$   r   ,   s   
 r   c                   @  s.   e Zd ZU dZded< eejdZded< dS )ExampleCreatezExample create model.Optional[UUID]iddefault_factoryr   
created_atN)	r   r    r!   r'   r(   r   r   utcnowr.   r#   r#   r#   r$   r)   7   s   
 r)   c                      s   e Zd ZU dZded< ded< eddZded	< eed
Zded< dZ	ded< e
ddZded< e
ddZded< 		dd fddZedddZ  ZS )ExamplezExample model.r   r+   r   r.   Nr   Optional[datetime]modified_atr,   z	List[Run]runsr*   source_run_idOptional[str]	_host_url
_tenant_idkwargsr   returnNonec                   s"   t  jdi | || _|| _dS zInitialize a Dataset object.Nr#   )super__init__r6   r7   )selfr6   r7   r8   	__class__r#   r$   r=   I   s   
zExample.__init__c                 C  sL   | j r$d| 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)r6   r   r+   r7   str)r>   pathr#   r#   r$   urlT   s   zExample.url)NN)r6   r5   r7   r*   r8   r   r9   r:   r9   r5   )r   r    r!   r'   r(   r   r2   listr3   r4   r   r6   r7   r=   propertyrF   __classcell__r#   r#   r?   r$   r0   >   s   
 r0   c                   @  sD   e Zd ZU dZdZded< dZded< dZded< G dd	 d	ZdS )
ExampleUpdatezUpdate class for Example.Nr*   r   r   r   r   c                   @  r   )zExampleUpdate.ConfigTNr   r#   r#   r#   r$   r%   f   r&   r%   )	r   r    r!   r'   r   r(   r   r   r%   r#   r#   r#   r$   rK   _   s   
 rK   c                   @  s   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'   rM   rN   rO   r#   r#   r#   r$   rL   j   s
    rL   c                   @  s@   e Zd ZU dZded< dZded< dZded< G d	d
 d
ZdS )DatasetBasezDataset base model.rD   nameNr5   descriptionzOptional[DataType]	data_typec                   @  r   )zDatasetBase.ConfigTNr   r#   r#   r#   r$   r%   y   r&   r%   )r   r    r!   r'   r(   rR   rS   r%   r#   r#   r#   r$   rP   r   s   
 rP   c                   @  s2   e Zd ZU dZdZded< eejdZ	ded< dS )DatasetCreatezDataset create model.Nr*   r+   r,   r   r.   )
r   r    r!   r'   r+   r(   r   r   r/   r.   r#   r#   r#   r$   rT   }   s   
 rT   c                      s   e Zd ZU dZded< de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dZded< e
ddZded< e
ddZded< 			dd fddZedddZ  ZS )DatasetzDataset ORM model.r   r+   r   r.   Nr   r1   r2   Optional[int]example_countsession_countlast_session_start_timer5   r6   r*   r7   _public_pathr8   r   r9   r:   c                   s(   t  jdi | || _|| _|| _dS r;   )r<   r=   r6   r7   rZ   )r>   r6   r7   rZ   r8   r?   r#   r$   r=      s   
zDataset.__init__c                 C  sV   | j r)| jr| j  | j S | jr | j  dt| j d| j S | j  d| j S dS )rA   rC   rB   N)r6   rZ   r7   rD   r+   r>   r#   r#   r$   rF      s   zDataset.url)NNN)
r6   r5   r7   r*   rZ   r5   r8   r   r9   r:   rG   )r   r    r!   r'   r(   r   r2   rW   rX   rY   r   r6   r7   rZ   r=   rI   rF   rJ   r#   r#   r?   r$   rU      s"   
 rU   c                   @  s,   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chainrN   	retriever	embeddingpromptparserN)r   r    r!   r'   r]   r^   rN   r_   r`   ra   rb   r#   r#   r#   r$   r\      s    r\   c                   @  s   e Zd ZU 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ed< 	 d	Z
ded< 	 d	Zded< 	 d	Zded< 	 d	Zded< d	S )RunBasez[
    Base Run schema.
    Contains the fundamental fields to define a run in a system.
    r   r+   rD   rQ   r   
start_timerun_typeNr1   end_timeOptional[dict]extrar5   error
serializedzOptional[List[Dict]]eventsdictr   r   r*   reference_example_idparent_run_idOptional[List[str]]tags)r   r    r!   r'   r(   rf   rh   ri   rj   rk   r   rm   rn   rp   r#   r#   r#   r$   rc      s<   
 rc   c                      s  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ed< 	 eddZded< 	 eddZded< d%d& fd!d"Zed'd#d$Z  ZS )(Runz$Run schema when loading from the DB.Nr*   
session_idOptional[List[UUID]]child_run_idszOptional[List[Run]]
child_runsr   feedback_statsr5   app_pathmanifest_idstatusrV   prompt_tokenscompletion_tokenstotal_tokensr1   first_token_timeparent_run_idsr   trace_id r   rD   dotted_orderr6   r8   r   r9   r:   c                   sf   | dsd| di|}t jdi | || _| j s/| js1| j  | j	 | _dS dS dS )Initialize a Run object.r   r+   Nr#   )
getr<   r=   r6   r   striprn   rd   	isoformatr+   r>   r6   r8   r?   r#   r$   r=     s   
zRun.__init__c                 C  s    | j r| jr| j  | j S dS )rA   N)r6   rw   r[   r#   r#   r$   rF     s   zRun.urlNr6   r5   r8   r   r9   r:   rG   )r   r    r!   r'   rr   r(   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r6   r=   rI   rF   rJ   r#   r#   r?   r$   rq      sD   
 	rq   c                   @  s   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#S )$RunLikeDictz&Run-like dictionary, for type-hinting.rD   rQ   r\   re   r   rd   rg   r   r   r1   rf   rh   r5   ri   rj   r*   rn   rx   zOptional[List[dict]]rk   ro   rp   inputs_s3_urlsoutputs_s3_urlsr+   rr   session_namerm   input_attachmentsoutput_attachmentsr   r   r   Nr   r    r!   r'   r(   r#   r#   r#   r$   r   &  s2   
 r   F)totalc                   @  s,   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.Nr1   last_reviewed_timeadded_at)r   r    r!   r'   r   r(   r   r#   r#   r#   r$   r   B  s   
 r   c                   @  s(   e Zd ZU ded< eedZded< dS )FeedbackSourceBaserD   typer,   r   metadataN)r   r    r!   r(   r   rl   r   r#   r#   r#   r$   r   K  s   
 r   c                   @     e Zd ZU dZdZded< dS )APIFeedbackSourcezAPI feedback source.apizLiteral['api']r   Nr   r    r!   r'   r   r(   r#   r#   r#   r$   r   P     
 r   c                   @  r   )ModelFeedbackSourcezModel feedback source.modelzLiteral['model']r   Nr   r#   r#   r#   r$   r   V  r   r   c                   @  s   e Zd ZdZdZ	 dZdS )FeedbackSourceTypezFeedback source type.r   r   N)r   r    r!   r'   APIMODELr#   r#   r#   r$   r   \  s    r   c                   @  s   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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 dZdS )FeedbackBasezFeedback schema.r   r+   Nr1   r.   r2   run_idrD   key
SCORE_TYPEscore
VALUE_TYPEvaluer5   commentzUnion[str, dict, None]
correctionOptional[FeedbackSourceBase]feedback_sourcec                   @  r   )zFeedbackBase.ConfigTNr   r#   r#   r#   r$   r%   }  r&   r%   )r   r    r!   r'   r(   r.   r2   r   r   r   r   r   r%   r#   r#   r#   r$   r   e  s.   
 r   c                   @  s   e Zd ZU dZded< dS )FeedbackCreatez"Schema used for creating feedback.r   r   Nr   r#   r#   r#   r$   r     s   
 r   c                   @  s:   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   r+   r   r.   r2   Nr   r   )r   r    r!   r'   r(   r   r#   r#   r#   r$   r     s   
 r   c                      s   e Zd ZU dZded< 	 eej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dZd
ed< d d! fddZed"ddZed#ddZed$ddZ  ZS )%TracerSessionzbTracerSession schema for the API.

    Sessions are also referred to as "Projects" in the UI.
    r   r+   r,   r   rd   Nr1   rf   r5   rR   rQ   r   rh   	tenant_idr   r6   r8   r   r9   r:   c                   s   t  jdi | || _dS )r   Nr#   )r<   r=   r6   r   r?   r#   r$   r=     s   
zTracerSession.__init__c                 C  s$   | j r| j  d| j d| j S dS )rA   rC   z/projects/p/N)r6   r   r+   r[   r#   r#   r$   rF     s   zTracerSession.urldict[str, Any]c                 C  s"   | j du s
d| j vri S | j d S )zRetrieve the metadata (if any).Nr   rh   r[   r#   r#   r$   r        
zTracerSession.metadata	List[str]c                 C  s"   | j du s
d| j vrg S | j d S )zRetrieve the tags (if any).Nrp   r   r[   r#   r#   r$   rp     r   zTracerSession.tagsr   r   rG   )r9   r   )r9   r   )r   r    r!   r'   r(   r   r   r/   rd   rf   rR   rQ   rh   r   r6   r=   rI   rF   r   rp   rJ   r#   r#   r?   r$   r     s0   
 r   c                   @  st   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 )TracerSessionResultzvTracerSession schema returned when reading a project
    by ID. Sessions are also referred to as "Projects" in the UI.rV   	run_countzOptional[timedelta]latency_p50latency_p99r|   rz   r{   r1   last_run_start_timer   rv   rs   reference_dataset_idszOptional[List[Dict[str, Any]]]
run_facetsNr   r#   r#   r#   r$   r     s,   
 r   c                   @  s0   e Zd ZU dZded< ded< ed
ddZd	S )BaseMessageLikezA
    A protocol representing objects similar to BaseMessage.
    rD   contentr   additional_kwargsr9   c                 C  s   dS )z,Type of the Message, used for serialization.Nr#   r[   r#   r#   r$   r     s    zBaseMessageLike.typeN)r9   rD   )r   r    r!   r'   r(   rI   r   r#   r#   r#   r$   r     s   
 r   c                   @  s&   e Zd ZU ded< ded< ded< dS )DatasetShareSchemar   r   share_tokenrD   rF   Nr   r    r!   r(   r#   r#   r#   r$   r     s   
 r   c                   @  sZ   e Zd ZU ded< ded< dZded< eejdZd	ed
< eejdZ	d	ed< ded< dS )AnnotationQueuer   r+   rD   rQ   Nr5   rR   r,   r   r.   
updated_atr   )
r   r    r!   r(   rR   r   r   r/   r.   r   r#   r#   r#   r$   r     s   
 r   c                   @  s.   e Zd ZU ded< ded< ded< ded< dS )BatchIngestConfigintscale_up_qsize_triggerscale_up_nthreads_limitscale_down_nempty_trigger
size_limitNr   r#   r#   r#   r$   r     s
   
 r   c                   @  s:   e Zd ZU dZdZded< 	 dZded< 	 dZded	< dS )
LangSmithInfoz'Information about the LangSmith server.r   rD   versionNr1   license_expiration_timezOptional[BatchIngestConfig]batch_ingest_config)r   r    r!   r'   r   r(   r   r   r#   r#   r#   r$   r     s   
 r   )<r'   
__future__r   r   r   enumr   typingr   r   r   r	   r
   r   r   uuidr   typing_extensionsr   pydantic.v1r   r   r   r   r   r   ImportErrorpydanticr   r   rD   r   r   r)   r0   rK   rL   rP   rT   rU   r\   rc   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   update_forward_refsr#   r#   r#   r$   <module>   sX    $	$$
!&3=		2	
