"""Schemas for tracers."""from__future__importannotationsimportdatetimeimportwarningsfromtypingimportAny,Dict,List,Optional,TypefromuuidimportUUIDfromlangsmith.schemasimportRunBaseasBaseRunV2fromlangsmith.schemasimportRunTypeEnumasRunTypeEnumDepfromlangchain_core._apiimportdeprecatedfromlangchain_core.outputsimportLLMResultfromlangchain_core.pydantic_v1importBaseModel,Field,root_validator
[docs]@deprecated("0.1.0",alternative="Use string instead.",removal="1.0")defRunTypeEnum()->Type[RunTypeEnumDep]:"""RunTypeEnum."""warnings.warn("RunTypeEnum is deprecated. Please directly use a string instead"" (e.g. 'llm', 'chain', 'tool').",DeprecationWarning,stacklevel=2,)returnRunTypeEnumDep
[docs]@deprecated("0.1.0",removal="1.0")classTracerSessionV1Base(BaseModel):"""Base class for TracerSessionV1."""start_time:datetime.datetime=Field(default_factory=datetime.datetime.utcnow)name:Optional[str]=Noneextra:Optional[Dict[str,Any]]=None
[docs]@deprecated("0.1.0",removal="1.0")classTracerSessionV1Create(TracerSessionV1Base):"""Create class for TracerSessionV1."""
[docs]@deprecated("0.1.0",removal="1.0")classTracerSessionBase(TracerSessionV1Base):"""Base class for TracerSession."""tenant_id:UUID
[docs]@deprecated("0.1.0",removal="1.0")classTracerSession(TracerSessionBase):"""TracerSessionV1 schema for the V2 API."""id:UUID
[docs]@deprecated("0.1.0",alternative="Run",removal="1.0")classBaseRun(BaseModel):"""Base class for Run."""uuid:strparent_uuid:Optional[str]=Nonestart_time:datetime.datetime=Field(default_factory=datetime.datetime.utcnow)end_time:datetime.datetime=Field(default_factory=datetime.datetime.utcnow)extra:Optional[Dict[str,Any]]=Noneexecution_order:intchild_execution_order:intserialized:Dict[str,Any]session_id:interror:Optional[str]=None
[docs]@deprecated("0.1.0",alternative="Run",removal="1.0")classLLMRun(BaseRun):"""Class for LLMRun."""prompts:List[str]response:Optional[LLMResult]=None
[docs]@deprecated("0.1.0",alternative="Run",removal="1.0")classChainRun(BaseRun):"""Class for ChainRun."""inputs:Dict[str,Any]outputs:Optional[Dict[str,Any]]=Nonechild_llm_runs:List[LLMRun]=Field(default_factory=list)child_chain_runs:List[ChainRun]=Field(default_factory=list)child_tool_runs:List[ToolRun]=Field(default_factory=list)
[docs]@deprecated("0.1.0",alternative="Run",removal="1.0")classToolRun(BaseRun):"""Class for ToolRun."""tool_input:stroutput:Optional[str]=Noneaction:strchild_llm_runs:List[LLMRun]=Field(default_factory=list)child_chain_runs:List[ChainRun]=Field(default_factory=list)child_tool_runs:List[ToolRun]=Field(default_factory=list)
# Begin V2 API Schemas
[docs]classRun(BaseRunV2):"""Run schema for the V2 API in the Tracer. Parameters: child_runs: The child runs. tags: The tags. Default is an empty list. events: The events. Default is an empty list. trace_id: The trace ID. Default is None. dotted_order: The dotted order. """child_runs:List[Run]=Field(default_factory=list)tags:Optional[List[str]]=Field(default_factory=list)events:List[Dict[str,Any]]=Field(default_factory=list)trace_id:Optional[UUID]=Nonedotted_order:Optional[str]=None@root_validator(pre=True)defassign_name(cls,values:dict)->dict:"""Assign name to the run."""ifvalues.get("name")isNone:if"name"invalues["serialized"]:values["name"]=values["serialized"]["name"]elif"id"invalues["serialized"]:values["name"]=values["serialized"]["id"][-1]ifvalues.get("events")isNone:values["events"]=[]returnvalues