diff --git a/src/adapters/openai_adapter.py b/src/adapters/openai_adapter.py index bc0c894..526641b 100644 --- a/src/adapters/openai_adapter.py +++ b/src/adapters/openai_adapter.py @@ -17,10 +17,14 @@ logger = logging.getLogger(__name__) class OpenAIAdapter(ModelAdapter): """Adapter for the OpenAI API (GPT-4o, o1, etc.).""" - def __init__(self, api_key: str | None = None) -> None: - self._client = AsyncOpenAI( - api_key=api_key or settings.openai_api_key, - ) + def __init__(self, api_key: str | None = None, base_url: str | None = None) -> None: + kwargs: dict[str, Any] = { + "api_key": api_key or settings.openai_api_key, + } + url = base_url or settings.openai_base_url + if url: + kwargs["base_url"] = url + self._client = AsyncOpenAI(**kwargs) # ------------------------------------------------------------------ # Streaming diff --git a/src/config.py b/src/config.py index 1e7e9eb..a30bf59 100644 --- a/src/config.py +++ b/src/config.py @@ -30,6 +30,7 @@ class Settings(BaseSettings): # --- Model providers --- anthropic_api_key: str = "" openai_api_key: str = "" + openai_base_url: str = "" # Custom base URL (for MiniMax, DeepInfra, etc.) default_model_provider: str = "claude" default_model_id: str = "claude-sonnet-4-20250514" max_tokens: int = 4096