feat: 更新模型获取逻辑,处理返回的模型数组并添加鉴权头

This commit is contained in:
DrSmoothl
2026-05-02 00:08:12 +08:00
parent 9e48cd2848
commit b132a64de6
3 changed files with 18 additions and 2 deletions

View File

@@ -158,7 +158,14 @@ export async function fetchProviderModels(
endpoint,
})
const response = await fetchWithAuth(`/api/webui/models/list?${params}`)
return parseResponse<ModelListItem[]>(response)
// 后端返回 { success, models, provider, count },需要展开取出 models 数组
const parsed = await parseResponse<{ models?: ModelListItem[] } | ModelListItem[]>(response)
if (!parsed.success) {
return parsed
}
const body = parsed.data
const models = Array.isArray(body) ? body : Array.isArray(body?.models) ? body.models : []
return { success: true, data: models }
}
/**

View File

@@ -138,7 +138,11 @@ export function ProviderForm({
</DialogDescription>
</DialogHeader>
<form onSubmit={(e) => { e.preventDefault(); handleSaveEdit(); }} autoComplete="off">
<form
onSubmit={(e) => { e.preventDefault(); handleSaveEdit(); }}
autoComplete="off"
className="contents"
>
<DialogBody>
<div className="grid gap-4 py-4">
<div className="grid gap-2" data-tour="provider-template-select">

View File

@@ -146,6 +146,11 @@ async def _fetch_models_from_provider(
client_config = build_openai_compatible_client_config(provider)
headers.update(client_config.default_headers)
params.update(client_config.default_query)
# build_openai_compatible_client_config 在“默认 Bearer”场景下
# 会把 api_key 留在 client_config.api_key 中交给 OpenAI SDK 自行注入 Authorization 头,
# 而不会写入 default_headers。这里我们用 httpx 直接发请求,需要手动补上鉴权头/参数。
if client_config.api_key and "Authorization" not in headers:
headers["Authorization"] = f"Bearer {client_config.api_key}"
try:
async with httpx.AsyncClient(timeout=30.0) as client: