Skip to content

Commit 48349f4

Browse files
authored
[Workers AI] Hide deprecated legacy models from docs (#30538)
* [Workers AI] Hide deprecated legacy models from docs * [Workers AI] Sync legacy model files to upstream * [Workers AI] Skip deprecated catalog models
1 parent 9a170b9 commit 48349f4

21 files changed

Lines changed: 60 additions & 8855 deletions

bin/fetch-ai-models.js

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
1-
import fs from "fs";
2-
3-
fetch("https://ai-cloudflare-com.pages.dev/api/models")
4-
.then((res) => res.json())
5-
.then((data) => {
6-
data.models.map((model) => {
7-
const fileName = model.name.split("/")[2];
8-
fs.writeFileSync(
9-
`./src/content/workers-ai-models/${fileName}.json`,
10-
JSON.stringify(model, null, 4),
11-
"utf-8",
12-
);
13-
});
14-
});
1+
import fs from "node:fs";
2+
import path from "node:path";
3+
4+
const OUTPUT_DIR = path.join(process.cwd(), "src/content/workers-ai-models");
5+
6+
const response = await fetch("https://ai-cloudflare-com.pages.dev/api/models");
7+
const data = await response.json();
8+
const existingFiles = new Set(
9+
fs.readdirSync(OUTPUT_DIR).filter((file) => file.endsWith(".json")),
10+
);
11+
12+
for (const model of data.models) {
13+
const fileName = `${model.name.split("/")[2]}.json`;
14+
existingFiles.delete(fileName);
15+
fs.writeFileSync(
16+
path.join(OUTPUT_DIR, fileName),
17+
JSON.stringify(model, null, 4),
18+
"utf-8",
19+
);
20+
}
21+
22+
for (const fileName of existingFiles) {
23+
fs.unlinkSync(path.join(OUTPUT_DIR, fileName));
24+
}

bin/fetch-catalog-models.ts

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,22 @@ const API_BASE_URL =
9191
const PER_PAGE = 100;
9292
const CONCURRENCY = 5;
9393

94+
function getPlannedDeprecationDate(model: CatalogModel): string | undefined {
95+
const metadata = model.metadata as Record<string, unknown> | undefined;
96+
const value = metadata?.planned_deprecation_date;
97+
return typeof value === "string" ? value : undefined;
98+
}
99+
100+
function isDeprecated(model: CatalogModel): boolean {
101+
const plannedDeprecationDate = getPlannedDeprecationDate(model);
102+
if (!plannedDeprecationDate) {
103+
return false;
104+
}
105+
106+
const timestamp = new Date(plannedDeprecationDate).getTime();
107+
return !Number.isNaN(timestamp) && Date.now() > timestamp;
108+
}
109+
94110
function parseArgs(): { file?: string } {
95111
const args = process.argv.slice(2);
96112
const fileIndex = args.indexOf("--file");
@@ -125,11 +141,19 @@ async function loadFromFile(filePath: string): Promise<CatalogModel[]> {
125141
}
126142

127143
const publicModels = models.filter((m) => !m.private);
128-
const skipped = models.length - publicModels.length;
144+
const activeModels = publicModels.filter((m) => !isDeprecated(m));
145+
const skippedPrivate = models.length - publicModels.length;
146+
const skippedDeprecated = publicModels.length - activeModels.length;
147+
const skippedNotes = [
148+
skippedPrivate > 0 ? `${skippedPrivate} private skipped` : null,
149+
skippedDeprecated > 0 ? `${skippedDeprecated} deprecated skipped` : null,
150+
]
151+
.filter(Boolean)
152+
.join(", ");
129153
console.log(
130-
` Loaded ${models.length} models${skipped > 0 ? ` (${skipped} private skipped)` : ""}`,
154+
` Loaded ${models.length} models${skippedNotes ? ` (${skippedNotes})` : ""}`,
131155
);
132-
return publicModels;
156+
return activeModels;
133157
}
134158

135159
function getApiHeaders(token: string): Record<string, string> {
@@ -373,6 +397,7 @@ function writeModels(models: CatalogModel[]): void {
373397
// Write each model to a JSON file
374398
let written = 0;
375399
const skipped: string[] = [];
400+
const skippedDeprecated: string[] = [];
376401

377402
for (const model of models) {
378403
// Skip private models
@@ -381,6 +406,11 @@ function writeModels(models: CatalogModel[]): void {
381406
continue;
382407
}
383408

409+
if (isDeprecated(model)) {
410+
skippedDeprecated.push(model.model_id);
411+
continue;
412+
}
413+
384414
// Trim string fields that may have leading/trailing whitespace
385415
model.name = model.name.trim();
386416
model.description = model.description.trim();
@@ -408,6 +438,9 @@ function writeModels(models: CatalogModel[]): void {
408438
if (skipped.length > 0) {
409439
console.log(` Skipped (private): ${skipped.length}`);
410440
}
441+
if (skippedDeprecated.length > 0) {
442+
console.log(` Skipped (deprecated): ${skippedDeprecated.length}`);
443+
}
411444
console.log(` Output: ${OUTPUT_DIR}`);
412445
}
413446

src/content/workers-ai-models/deepseek-coder-6.7b-base-awq.json

Lines changed: 0 additions & 466 deletions
This file was deleted.

src/content/workers-ai-models/deepseek-coder-6.7b-instruct-awq.json

Lines changed: 0 additions & 466 deletions
This file was deleted.

src/content/workers-ai-models/deepseek-math-7b-instruct.json

Lines changed: 0 additions & 470 deletions
This file was deleted.

src/content/workers-ai-models/discolm-german-7b-v1-awq.json

Lines changed: 0 additions & 466 deletions
This file was deleted.

src/content/workers-ai-models/falcon-7b-instruct.json

Lines changed: 0 additions & 466 deletions
This file was deleted.

src/content/workers-ai-models/llama-2-13b-chat-awq.json

Lines changed: 0 additions & 466 deletions
This file was deleted.

src/content/workers-ai-models/llamaguard-7b-awq.json

Lines changed: 0 additions & 446 deletions
This file was deleted.

src/content/workers-ai-models/mistral-7b-instruct-v0.1-awq.json

Lines changed: 0 additions & 466 deletions
This file was deleted.

0 commit comments

Comments
 (0)