from enum import Enum from pydantic import BaseModel, ValidationInfo, field_validator class 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 v class 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