SPB Git forge

spb/polyllm

Public
15commits 1branches 0releases
2.2 MBsize
maindefault branch
13 days agolast push
TypeScript 97.4% SQL 1% JavaScript 0.9% CSS 0.6%
2.0 KB · 45 lines typescript
Raw Blame History
1// Probe 00: list models via REST (x-goog-api-key) and via SDK; dump per-model metadata.2// Run: set -a; . ../../.env; set +a; npx tsx 00-models-list.ts3import { GoogleGenAI } from "@google/genai";4import { writeFileSync } from "node:fs";56const key = process.env.GOOGLE_GEMINI_API_KEY!;7if (!key) throw new Error("GOOGLE_GEMINI_API_KEY missing");89async function main() {10  // REST, paginated11  const all: any[] = [];12  let pageToken: string | undefined;13  do {14    const url = new URL("https://generativelanguage.googleapis.com/v1beta/models");15    url.searchParams.set("pageSize", "1000");16    if (pageToken) url.searchParams.set("pageToken", pageToken);17    const r = await fetch(url, { headers: { "x-goog-api-key": key } });18    console.log("REST status", r.status, "headers:", Object.fromEntries([...r.headers.entries()].filter(([k]) => !/set-cookie/.test(k))));19    const j = await r.json();20    all.push(...(j.models ?? []));21    pageToken = j.nextPageToken;22  } while (pageToken);23  writeFileSync("out/models.json", JSON.stringify(all, null, 2));24  console.log("model count", all.length);25  const keys = new Set<string>();26  for (const m of all) Object.keys(m).forEach((k) => keys.add(k));27  console.log("metadata fields seen:", [...keys].join(", "));28  for (const m of all) {29    console.log(30      m.name.replace("models/", "").padEnd(48),31      String(m.inputTokenLimit).padStart(8),32      String(m.outputTokenLimit).padStart(7),33      (m.thinking ? "think" : "     "),34      (m.supportedGenerationMethods ?? []).join("|"),35      `T=${m.temperature ?? "-"}/${m.maxTemperature ?? "-"} P=${m.topP ?? "-"} K=${m.topK ?? "-"}`,36    );37  }38  // SDK39  const ai = new GoogleGenAI({ apiKey: key });40  const pager = await ai.models.list({ config: { pageSize: 5 } });41  let n = 0;42  for await (const m of pager) { n++; if (n === 1) console.log("SDK first model sample:", JSON.stringify(m)); if (n >= 5) break; }43}44main().catch((e) => { console.error("ERR", e?.message ?? e); process.exit(1); });45