From dd3c39ec32c9b3e07b4cb617dec6a9cfaa9c18f1 Mon Sep 17 00:00:00 2001 From: LTbinglingfeng Date: Mon, 25 May 2026 01:55:45 +0800 Subject: [PATCH] fix(providers): retry OpenAI model discovery without auth on failure When the OpenAI-compatible endpoint rejects the first authenticated /models request (some upstreams expose the route unauthenticated, or the configured key only covers chat completions), retry once with no key and no custom headers before surfacing the original error so the discovery panel can populate. --- .../providers/sheets/forms/useModelDiscovery.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/features/providers/sheets/forms/useModelDiscovery.ts b/src/features/providers/sheets/forms/useModelDiscovery.ts index ce320e8..5014b7c 100644 --- a/src/features/providers/sheets/forms/useModelDiscovery.ts +++ b/src/features/providers/sheets/forms/useModelDiscovery.ts @@ -103,7 +103,22 @@ export function useModelDiscovery( const entryKey = (firstEntry?.apiKey ?? '').trim(); const entryHeaders = parseHeadersText(firstEntry?.headersText ?? ''); const headers = { ...baseHeaders, ...entryHeaders }; - next = await modelsApi.fetchModelsViaApiCall(baseUrl, entryKey, headers); + try { + next = await modelsApi.fetchModelsViaApiCall( + baseUrl, + entryKey, + headers + ); + } catch (firstErr) { + // Some OpenAI-compatible endpoints expose /models without auth, or + // reject the configured key for the discovery route. Retry once + // without any auth/headers before surfacing the original error. + try { + next = await modelsApi.fetchModelsViaApiCall(baseUrl); + } catch { + throw firstErr; + } + } } setModels(next ?? []); setHasFetched(true);