|
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 |
|
|