super-harness / src /app /api /chat /models /route.ts
Cyber Catalyst Team
Deploy to HF Spaces with LFS
4782147
Raw
History Blame Contribute Delete
1.97 kB
import { customModelProvider } from "lib/ai/models";
let lastFetch = 0;
const CACHE_TTL = 1000 * 60 * 60; // 1 hour
async function fetchProviderModels(
url: string,
providerKey: string,
headers: Record<string, string> = {},
transform: (data: any) => any[] = (data) => data.data || []
) {
try {
const res = await fetch(url, { headers });
if (!res.ok) return;
const data = await res.json();
const modelsList = transform(data);
const providerEntry = customModelProvider.modelsInfo.find((p) => p.provider === providerKey);
if (providerEntry) {
const existingNames = new Set(providerEntry.models.map((m) => m.name));
for (const m of modelsList) {
const id = m.id || m.name;
if (id && !existingNames.has(id)) {
providerEntry.models.push({
name: id,
isToolCallUnsupported: false,
isImageInputUnsupported: false,
supportedFileMimeTypes: [],
});
existingNames.add(id);
}
}
}
} catch (error) {
console.error(`Failed to fetch models for ${providerKey}:`, error);
}
}
export const GET = async () => {
if (Date.now() - lastFetch > CACHE_TTL) {
lastFetch = Date.now();
await Promise.allSettled([
fetchProviderModels("https://openrouter.ai/api/v1/models", "openRouter"),
fetchProviderModels(
"https://api.groq.com/openai/v1/models",
"groq",
process.env.GROQ_API_KEY ? { Authorization: `Bearer ${process.env.GROQ_API_KEY}` } : {}
),
fetchProviderModels(
"https://integrate.api.nvidia.com/v1/models",
"nvidiaNim",
process.env.NVIDIA_API_KEY ? { Authorization: `Bearer ${process.env.NVIDIA_API_KEY}` } : {}
),
]);
}
return Response.json(
customModelProvider.modelsInfo.sort((a, b) => {
if (a.hasAPIKey && !b.hasAPIKey) return -1;
if (!a.hasAPIKey && b.hasAPIKey) return 1;
return 0;
}),
);
};