feat(provider): add API key normalization and update OpenAI requester initialization

This commit is contained in:
fdc310
2026-05-11 14:21:42 +08:00
parent 59bd581e88
commit ea13ef87f2
3 changed files with 35 additions and 2 deletions

View File

@@ -17,6 +17,11 @@ class ModelProviderService:
def __init__(self, ap: app.Application) -> None:
self.ap = ap
@staticmethod
def _normalize_api_keys(api_key: str | None) -> list[str]:
normalized_api_key = api_key.strip() if api_key else ''
return [normalized_api_key] if normalized_api_key else []
async def get_providers(self) -> list[dict]:
"""Get all providers"""
result = await self.ap.persistence_mgr.execute_async(sqlalchemy.select(persistence_model.ModelProvider))
@@ -177,7 +182,7 @@ class ModelProviderService:
await self.ap.persistence_mgr.execute_async(
sqlalchemy.update(persistence_model.ModelProvider)
.where(persistence_model.ModelProvider.uuid == '00000000-0000-0000-0000-000000000000')
.values(api_keys=[api_key])
.values(api_keys=self._normalize_api_keys(api_key))
)
await self.ap.model_mgr.reload_provider('00000000-0000-0000-0000-000000000000')

View File

@@ -17,6 +17,7 @@ class OpenAIChatCompletions(requester.ProviderAPIRequester):
"""OpenAI ChatCompletion API 请求器"""
client: openai.AsyncClient
init_api_key: str = 'langbot-init-placeholder'
default_config: dict[str, typing.Any] = {
'base_url': 'https://api.openai.com/v1',
@@ -25,7 +26,7 @@ class OpenAIChatCompletions(requester.ProviderAPIRequester):
async def initialize(self):
self.client = openai.AsyncClient(
api_key='',
api_key=self.init_api_key,
base_url=self.requester_cfg['base_url'].replace(' ', ''),
timeout=self.requester_cfg['timeout'],
http_client=httpx.AsyncClient(trust_env=True, timeout=self.requester_cfg['timeout']),