mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 19:59:50 +08:00
52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
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")
|
|
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")
|
|
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
|