diff --git a/src/server.ts b/src/server.ts index 8021709..77871ef 100644 --- a/src/server.ts +++ b/src/server.ts @@ -116,7 +116,17 @@ Bun.serve({ if (pfad === "/models") { const erlaubt = acl.get(keyName) ?? []; const namen = Object.keys(config.aliases).filter((a) => erlaubt.length === 0 || erlaubt.includes(a)); - return Response.json({ object: "list", data: namen.map((id) => ({ id, object: "model", owned_by: "42i" })) }); + const data = namen.map((id) => ({ id, object: "model", owned_by: "42i" })); + // Im Parallelbetrieb auch die LiteLLM-Liste des Clients zeigen, sonst + // verlieren Clients, die Modelle per /models entdecken, die 2608-Namen. + if (config.fallback !== undefined) { + try { + const u = config.upstreams[config.fallback.upstream]; + const r = await fetch(`${u.base}/models`, { headers: { authorization: `Bearer ${auth}` }, signal: AbortSignal.timeout(10_000) }); + if (r.ok) for (const m of ((await r.json()) as { data?: { id: string }[] }).data ?? []) if (!namen.includes(m.id)) data.push({ id: m.id, object: "model", owned_by: config.fallback.upstream }); + } catch { /* LiteLLM nicht da: nur eigene Liste */ } + } + return Response.json({ object: "list", data }); } if (req.method !== "POST" || !(JSON_PFADE.has(pfad) || FORM_PFADE.has(pfad))) return Response.json({ error: { message: `Pfad ${pfad} wird nicht bedient` } }, { status: 404 });