Merge pull request 'moving config.py and adding OpenAIConfig' (#5) from feature/moving-config.py-and-adding-OpenAIConfig into main

Reviewed-on: #5
This commit was merged in pull request #5.
This commit is contained in:
2026-04-28 22:43:26 -04:00
+42 -2
View File
@@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass from dataclasses import dataclass
from os import getenv
from pathlib import Path from pathlib import Path
import tomllib import tomllib
@@ -68,15 +69,54 @@ class BenchmarkConfig:
return cls(**raw) return cls(**raw)
@dataclass
class OpenAIConfig:
"""OpenAI API configuration."""
api_key: str
openai_project_id: str
openai_chat_completions_url: str
model: str
timeout_seconds: int
@classmethod
def from_toml(cls, config_path: Path) -> OpenAIConfig:
"""Load OpenAI config from a TOML file."""
raw = tomllib.loads(config_path.read_text()).get("openai", {})
api_key = getenv("CLOSEDAI_TOKEN")
if not api_key:
message = "CLOSEDAI_TOKEN is required"
raise KeyError(message)
return cls(
api_key=api_key,
openai_project_id=raw.get(
"openai_project_id", "proj_fQBPEXFgnS87Fk6wZwploFwE"
),
openai_chat_completions_url=raw.get(
"openai_chat_completions_url",
"https://api.openai.com/v1/chat/completions",
),
model=raw.get("model", "gpt-5.4-mini"),
timeout_seconds=raw.get("timeout_seconds", 60),
)
def get_config_dir() -> Path: def get_config_dir() -> Path:
"""Get the path to the config file.""" """Get the path to the config directory."""
return Path(__file__).resolve().parent.parent.parent / "config" return Path(__file__).resolve().parents[2] / "config"
def default_config_path() -> Path: def default_config_path() -> Path:
"""Get the path to the config file.""" """Get the path to the config file."""
return get_config_dir() / "config.toml" return get_config_dir() / "config.toml"
def get_openai_config(config_path: Path | None = None) -> OpenAIConfig:
if config_path is None:
config_path = default_config_path()
return OpenAIConfig.from_toml(config_path)
def get_finetune_config(config_path: Path | None = None) -> FinetuneConfig: def get_finetune_config(config_path: Path | None = None) -> FinetuneConfig:
if config_path is None: if config_path is None:
config_path = default_config_path() config_path = default_config_path()