Spaces:
Running
Running
File size: 1,443 Bytes
7b4b748 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import os
from dataclasses import dataclass, field
from pathlib import Path
from dotenv import load_dotenv
load_dotenv(Path(__file__).resolve().parents[1] / ".env")
@dataclass(frozen=True)
class TelemetryConfig:
enabled: bool = os.getenv("OTEL_ENABLED", "true").lower() == "true"
service_name: str = os.getenv("OTEL_SERVICE_NAME", "ollive-oss-api")
max_spans: int = int(os.getenv("OTEL_MAX_SPANS", "2000"))
@dataclass(frozen=True)
class GuardrailConfig:
max_input_chars: int = int(os.getenv("GUARDRAIL_MAX_INPUT_CHARS", "4000"))
block_on_input_violation: bool = True
block_on_output_violation: bool = True
@dataclass(frozen=True)
class CostConfig:
cpu_hour_usd: float = float(os.getenv("API_CPU_HOUR_USD", "0.042"))
estimated_tokens_per_char: float = float(os.getenv("API_TOKENS_PER_CHAR", "0.25"))
@dataclass(frozen=True)
class ApiConfig:
host: str = os.getenv("API_HOST", "0.0.0.0")
port: int = int(os.getenv("API_PORT", "8000"))
api_key: str = os.getenv("API_SERVICE_KEY", "")
max_history_turns: int = int(os.getenv("MAX_HISTORY_TURNS", "10"))
benchmark_samples: int = int(os.getenv("BENCHMARK_SAMPLES", "10"))
benchmark_seed: int = int(os.getenv("BENCHMARK_SEED", "42"))
telemetry: TelemetryConfig = field(default_factory=TelemetryConfig)
guardrails: GuardrailConfig = field(default_factory=GuardrailConfig)
cost: CostConfig = field(default_factory=CostConfig)
|