From 6995aba8a1b6004c2f276f27076d28ce5949377c Mon Sep 17 00:00:00 2001 From: Iro <155815508+Iro96@users.noreply.github.com> Date: Thu, 9 Oct 2025 01:31:14 +0700 Subject: [PATCH] fix(stage-ui): auto fallback with LLM model listing when validating (#643) --- .../providers/openai-compatible-builder.ts | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/packages/stage-ui/src/stores/providers/openai-compatible-builder.ts b/packages/stage-ui/src/stores/providers/openai-compatible-builder.ts index da5d3948b..0b668fad9 100644 --- a/packages/stage-ui/src/stores/providers/openai-compatible-builder.ts +++ b/packages/stage-ui/src/stores/providers/openai-compatible-builder.ts @@ -110,6 +110,25 @@ export function buildOpenAICompatibleProvider( } const validationChecks = validation || [] + + // Auto-detect first available model for validation + let model = 'test' // fallback to `test` if fails + try { + const models = await listModels({ + apiKey, + baseURL: baseUrl, + headers: { + ...additionalHeaders, + Authorization: `Bearer ${apiKey}`, + }, + }) + if (models && models.length > 0) + model = models[0].id + } + catch (e) { + console.warn(`Model auto-detection failed: ${(e as Error).message}`) + } + // Health check = try generating text (was: fetch(`${baseUrl}chat/completions`)) if (validationChecks.includes('health')) { @@ -121,7 +140,7 @@ export function buildOpenAICompatibleProvider( ...additionalHeaders, Authorization: `Bearer ${apiKey}`, }, - model: 'test', + model: model, messages: message.messages(message.user('ping')), max_tokens: 1, }) @@ -161,7 +180,7 @@ export function buildOpenAICompatibleProvider( ...additionalHeaders, Authorization: `Bearer ${apiKey}`, }, - model: 'test', + model: model, messages: message.messages(message.user('ping')), max_tokens: 1, })