| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | from enum import Enumfrom pydantic import BaseModel, ValidationInfo, field_validatorclass TracingProviderEnum(Enum):    LANGFUSE = "langfuse"    LANGSMITH = "langsmith"class BaseTracingConfig(BaseModel):    """    Base model class for tracing    """    ...class LangfuseConfig(BaseTracingConfig):    """    Model class for Langfuse tracing config.    """    public_key: str    secret_key: str    host: str = "https://api.langfuse.com"    @field_validator("host")    @classmethod    def set_value(cls, v, info: ValidationInfo):        if v is None or v == "":            v = "https://api.langfuse.com"        if not v.startswith("https://") and not v.startswith("http://"):            raise ValueError("host must start with https:// or http://")        return vclass LangSmithConfig(BaseTracingConfig):    """    Model class for Langsmith tracing config.    """    api_key: str    project: str    endpoint: str = "https://api.smith.langchain.com"    @field_validator("endpoint")    @classmethod    def set_value(cls, v, info: ValidationInfo):        if v is None or v == "":            v = "https://api.smith.langchain.com"        if not v.startswith("https://"):            raise ValueError("endpoint must start with https://")        return v
 |