Source code for langchain_core.tracers.schemas

"""跟踪器的模式。"""
from __future__ import annotations

import datetime
import warnings
from typing import Any, Dict, List, Optional, Type
from uuid import UUID

from langsmith.schemas import RunBase as BaseRunV2
from langsmith.schemas import RunTypeEnum as RunTypeEnumDep

from langchain_core._api import deprecated
from langchain_core.outputs import LLMResult
from langchain_core.pydantic_v1 import BaseModel, Field, root_validator


[docs]@deprecated("0.1.0", alternative="Use string instead.", removal="0.3.0") def RunTypeEnum() -> Type[RunTypeEnumDep]: """运行类型枚举。""" warnings.warn( "RunTypeEnum is deprecated. Please directly use a string instead" " (e.g. 'llm', 'chain', 'tool').", DeprecationWarning, ) return RunTypeEnumDep
[docs]@deprecated("0.1.0", removal="0.3.0") class TracerSessionV1Base(BaseModel): """TracerSessionV1的基类。""" start_time: datetime.datetime = Field(default_factory=datetime.datetime.utcnow) name: Optional[str] = None extra: Optional[Dict[str, Any]] = None
[docs]@deprecated("0.1.0", removal="0.3.0") class TracerSessionV1Create(TracerSessionV1Base): """为TracerSessionV1创建类。"""
[docs]@deprecated("0.1.0", removal="0.3.0") class TracerSessionV1(TracerSessionV1Base): """TracerSessionV1模式。""" id: int
[docs]@deprecated("0.1.0", removal="0.3.0") class TracerSessionBase(TracerSessionV1Base): """用于TracerSession的基类。""" tenant_id: UUID
[docs]@deprecated("0.1.0", removal="0.3.0") class TracerSession(TracerSessionBase): """TracerSessionV1模式用于V2 API。""" id: UUID
[docs]@deprecated("0.1.0", alternative="Run", removal="0.3.0") class BaseRun(BaseModel): """运行的基类。""" uuid: str parent_uuid: Optional[str] = None start_time: datetime.datetime = Field(default_factory=datetime.datetime.utcnow) end_time: datetime.datetime = Field(default_factory=datetime.datetime.utcnow) extra: Optional[Dict[str, Any]] = None execution_order: int child_execution_order: int serialized: Dict[str, Any] session_id: int error: Optional[str] = None
[docs]@deprecated("0.1.0", alternative="Run", removal="0.3.0") class LLMRun(BaseRun): """LLMRun的类。""" prompts: List[str] response: Optional[LLMResult] = None
[docs]@deprecated("0.1.0", alternative="Run", removal="0.3.0") class ChainRun(BaseRun): """ChainRun的类。""" inputs: Dict[str, Any] outputs: Optional[Dict[str, Any]] = None child_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="0.3.0") class ToolRun(BaseRun): """工具运行的类。""" tool_input: str output: Optional[str] = None action: str child_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]class Run(BaseRunV2): """在跟踪器中为V2 API运行模式。""" 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] = None dotted_order: Optional[str] = None @root_validator(pre=True) def assign_name(cls, values: dict) -> dict: """给运行分配名称。""" if values.get("name") is None: if "name" in values["serialized"]: values["name"] = values["serialized"]["name"] elif "id" in values["serialized"]: values["name"] = values["serialized"]["id"][-1] if values.get("events") is None: values["events"] = [] return values
ChainRun.update_forward_refs() ToolRun.update_forward_refs() Run.update_forward_refs() __all__ = [ "BaseRun", "ChainRun", "LLMRun", "Run", "RunTypeEnum", "ToolRun", "TracerSession", "TracerSessionBase", "TracerSessionV1", "TracerSessionV1Base", "TracerSessionV1Create", ]