| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | 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")    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")    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
 |