From b58ac519397c933640c0256add9a4d61367f915c Mon Sep 17 00:00:00 2001 From: komatsu Date: Wed, 1 Oct 2025 11:26:39 +0900 Subject: [PATCH 1/2] fix: openai.api_base reconfigurable --- hatchling/config/openai_settings.py | 2 +- hatchling/core/llm/model_manager_api.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hatchling/config/openai_settings.py b/hatchling/config/openai_settings.py index 9f7e3ce..5ca4faa 100644 --- a/hatchling/config/openai_settings.py +++ b/hatchling/config/openai_settings.py @@ -30,7 +30,7 @@ class OpenAISettings(BaseModel): ) api_base: str = Field( - default="https://api.openai.com/v1", + default_factory=lambda: os.environ.get("OPENAI_API_URL", "https://api.openai.com/v1"), description="The base URL for OpenAI API requests.", json_schema_extra={"access_level": SettingAccessLevel.READ_ONLY}, ) diff --git a/hatchling/core/llm/model_manager_api.py b/hatchling/core/llm/model_manager_api.py index d270a8d..65864f5 100644 --- a/hatchling/core/llm/model_manager_api.py +++ b/hatchling/core/llm/model_manager_api.py @@ -224,7 +224,7 @@ async def _list_openai_models(settings: AppSettings) -> List[ModelInfo]: # model listing requires different permissions and pricing try: - client = AsyncOpenAI(api_key=settings.openai.api_key) + client = AsyncOpenAI(api_key=settings.openai.api_key, base_url=settings.openai.api_base) models_response = await client.models.list() models = [] From c1aa2d9fe92267d0896e625c78c7cee7fd7c8921 Mon Sep 17 00:00:00 2001 From: LittleCoinCoin Date: Sat, 4 Oct 2025 13:53:28 +0900 Subject: [PATCH 2/2] feat: lower restriction level on `api_base` Set the level of setting `openai:api_base` to be "PROTECTED" and not read-only to allow dynamic modification using `settings:set` command. This is useful when using a different provider following OpenAI's API (e.g. vllm). --- hatchling/config/openai_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hatchling/config/openai_settings.py b/hatchling/config/openai_settings.py index 5ca4faa..3243ddc 100644 --- a/hatchling/config/openai_settings.py +++ b/hatchling/config/openai_settings.py @@ -32,7 +32,7 @@ class OpenAISettings(BaseModel): api_base: str = Field( default_factory=lambda: os.environ.get("OPENAI_API_URL", "https://api.openai.com/v1"), description="The base URL for OpenAI API requests.", - json_schema_extra={"access_level": SettingAccessLevel.READ_ONLY}, + json_schema_extra={"access_level": SettingAccessLevel.PROTECTED}, ) timeout: int = Field(