OpenAI: Server-Key-Setting, Filter-Fix fuer o-Reihe, ehrlicher Modell-Refresh
Der Modell-Refresh war fuer OpenAI faktisch ein No-Op: der Key wurde nur aus
der api_keys-Tabelle geholt, und ohne Key blieb die alte Liste im Speicher
stehen und wurde direkt wieder in models_cache.json geschrieben - waehrend der
Endpoint pauschal Erfolg meldete.
- ServerSettingsService: neues Setting OpenAiApiKey (OpenAI war der einzige
Provider ohne Server-Key, analog Gemini/MiniMax/z.ai)
- OpenAiService: ResolveOpenAiKey() (Setting -> api_keys), HasServerOpenAiKey(),
ResolveProviderConfig zieht den Setting-Key auch im Chat
- OpenAiService: IsOpenAiChatModel() erfasst die o-Reihe inkl. bare IDs
(o1, o3, kuenftig o5) - StartsWith("o3-") hat die verschluckt
- RefreshModelsFromApis() liefert ProviderRefreshResult[] pro Provider;
ModelsEndpoint gibt providers[] zurueck, agent-page.js meldet uebersprungene
Provider als Fehler-Toast statt pauschalem Erfolg
- ChatEndpoint/TelegramService/CronjobService: OpenAI ohne Agent-Key faellt auf
den Server-Key zurueck statt hart abzubrechen
- ARCHITECTURE.md nachgezogen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f38f3a42d1
commit
7305a5a50f
8 files changed
+136
-31
No files matched your search
@@ -66,10 +66,17 @@ registerPage('agent', {
|
||||
refreshModelsBtn.disabled = true;
|
||||
const prevValue = modelEl.value;
|
||||
try {
|
||||
await apiRefreshModels();
|
||||
const res = await apiRefreshModels();
|
||||
await loadAllModels();
|
||||
modelEl.value = prevValue; // vorherige Auswahl wiederherstellen (falls noch vorhanden)
|
||||
showToast('Modell-Listen neu geladen');
|
||||
// Ehrlich melden, was tatsächlich geladen wurde – ein übersprungener Provider
|
||||
// (z.B. OpenAI ohne Key) darf nicht als Erfolg durchgehen.
|
||||
const skipped = (res && res.providers || []).filter(p => !p.loaded);
|
||||
if (skipped.length) {
|
||||
showToast('Neu geladen, übersprungen: ' + skipped.map(p => p.provider + ' – ' + p.note).join('; '), 'error');
|
||||
} else {
|
||||
showToast('Modell-Listen neu geladen');
|
||||
}
|
||||
} catch (err) {
|
||||
showToast(err.message || 'Fehler beim Neu-Laden der Modelle', 'error');
|
||||
} finally {
|
||||
|
||||
Reference in new issue
Block a user