diff --git a/package.json b/package.json index 8e2c1ce7f..9da1f5623 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "scripts": { "validate": "bun ./packages/core/script/validate.ts", "compare:migrations": "bun ./packages/core/script/compare-model-migrations.ts", + "chutes:generate": "bun ./packages/core/script/generate-chutes.ts", "helicone:generate": "bun ./packages/core/script/generate-helicone.ts", "venice:generate": "bun ./packages/core/script/generate-venice.ts", "vercel:generate": "bun ./packages/core/script/generate-vercel.ts", diff --git a/packages/core/script/generate-chutes.ts b/packages/core/script/generate-chutes.ts new file mode 100644 index 000000000..cf83bdb04 --- /dev/null +++ b/packages/core/script/generate-chutes.ts @@ -0,0 +1,589 @@ +#!/usr/bin/env bun + +/** + * Generates Chutes model TOML files from the Chutes LLM API. + * + * Flags: + * --dry-run: Preview changes without writing files + * --new-only: Only create new models, skip updating existing ones + * --keep-orphans: Don't delete TOML files for models no longer in the API + */ + +import { z } from "zod"; +import path from "node:path"; +import { mkdir } from "node:fs/promises"; +import { ModelFamilyValues } from "../src/family.js"; + +const API_ENDPOINT = "https://llm.chutes.ai/v1/models"; + +enum SkipZeroFields { + LimitContext = "limit.context", + LimitOutput = "limit.output", +} + +const Pricing = z.object({ + prompt: z.number().optional(), + completion: z.number().optional(), + input_cache_read: z.number().optional(), +}).passthrough(); + +const ChutesModel = z.object({ + id: z.string(), + created: z.number(), + pricing: Pricing.optional(), + context_length: z.number().optional(), + max_output_length: z.number().optional(), + max_model_len: z.number().optional(), + input_modalities: z.array(z.string()).optional(), + output_modalities: z.array(z.string()).optional(), + supported_features: z.array(z.string()).optional(), + supported_sampling_parameters: z.array(z.string()).optional(), + quantization: z.string().optional(), +}).passthrough(); + +const ChutesResponse = z.object({ + data: z.array(ChutesModel), +}).passthrough(); + +interface ExistingModel { + name?: string; + family?: string; + attachment?: boolean; + reasoning?: boolean; + tool_call?: boolean; + structured_output?: boolean; + temperature?: boolean; + knowledge?: string; + release_date?: string; + last_updated?: string; + open_weights?: boolean; + interleaved?: boolean | { field: string }; + status?: string; + cost?: { + input?: number; + output?: number; + cache_read?: number; + }; + limit?: { + context?: number; + output?: number; + }; + modalities?: { + input?: string[]; + output?: string[]; + }; +} + +interface MergedModel { + name: string; + family?: string; + attachment: boolean; + reasoning: boolean; + tool_call: boolean; + structured_output?: boolean; + temperature: boolean; + knowledge?: string; + release_date: string; + last_updated: string; + open_weights: boolean; + interleaved?: boolean | { field: string }; + status?: string; + cost?: { + input: number; + output: number; + cache_read?: number; + }; + limit: { + context: number; + output: number; + }; + modalities: { + input: string[]; + output: string[]; + }; +} + +interface Changes { + field: string; + oldValue: string; + newValue: string; +} + +// ── Utility functions ──────────────────────────────────────────────── + +function timestampToDate(timestamp: number): string { + const date = new Date(timestamp * 1000); + return date.toISOString().slice(0, 10); +} + +function getTodayDate(): string { + return new Date().toISOString().slice(0, 10); +} + +function formatNumber(n: number): string { + if (n >= 1000) { + return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "_"); + } + return n.toString(); +} + +/** + * Humanize a model ID into a readable name. + * Strips the org prefix and replaces hyphens with spaces. + * e.g. "Qwen/Qwen3-32B-TEE" → "Qwen3 32B TEE" + */ +function humanizeModelName(modelId: string): string { + const parts = modelId.split("/"); + const modelPart = parts[parts.length - 1]; + return modelPart.replace(/-/g, " "); +} + +// ── Family inference (same approach as generate-vercel.ts) ─────────── + +function isSubstring(target: string, family: string): boolean { + return target.toLowerCase().includes(family.toLowerCase()); +} + +function matchesFamily(target: string, family: string): boolean { + const targetLower = target.toLowerCase(); + const familyLower = family.toLowerCase(); + let familyIdx = 0; + + for (let i = 0; i < targetLower.length && familyIdx < familyLower.length; i++) { + if (targetLower[i] === familyLower[familyIdx]) { + familyIdx++; + } + } + + return familyIdx === familyLower.length; +} + +function inferFamily(modelId: string, modelName: string): string | undefined { + const sortedFamilies = [...ModelFamilyValues].sort((a, b) => b.length - a.length); + + // First pass: try exact substring matches + for (const family of sortedFamilies) { + if (isSubstring(modelId, family)) { + return family; + } + } + + for (const family of sortedFamilies) { + if (isSubstring(modelName, family)) { + return family; + } + } + + // Second pass: fall back to subsequence matching + for (const family of sortedFamilies) { + if (matchesFamily(modelId, family)) { + return family; + } + } + + for (const family of sortedFamilies) { + if (matchesFamily(modelName, family)) { + return family; + } + } + + return undefined; +} + +// ── Load existing TOML ─────────────────────────────────────────────── + +async function loadExistingModel(filePath: string): Promise { + try { + const file = Bun.file(filePath); + if (!(await file.exists())) { + return null; + } + const toml = await import(filePath, { with: { type: "toml" } }).then( + (mod) => mod.default, + ); + return toml as ExistingModel; + } catch (e) { + console.warn(`Warning: Failed to parse existing file ${filePath}:`, e); + return null; + } +} + +// ── Merge API data with existing TOML ──────────────────────────────── + +function mergeModel( + apiModel: z.infer, + existing: ExistingModel | null, +): MergedModel { + const features = new Set(apiModel.supported_features ?? []); + const samplingParams = new Set(apiModel.supported_sampling_parameters ?? []); + const inputMods = apiModel.input_modalities ?? ["text"]; + const outputMods = apiModel.output_modalities ?? ["text"]; + + // Capabilities from API features + const hasAttachment = inputMods.some((m) => + m === "image" || m === "video" || m === "pdf", + ); + const hasReasoning = features.has("reasoning"); + const hasToolCall = features.has("tools"); + const hasStructuredOutput = features.has("structured_outputs"); + const hasTemperature = samplingParams.size > 0 + ? samplingParams.has("temperature") + : true; // default true if no sampling params info + + // Preserve existing values when available (manually specified) + const modelName = existing?.name ?? humanizeModelName(apiModel.id); + const family = existing?.family ?? inferFamily(apiModel.id, modelName); + const knowledge = existing?.knowledge; + const interleaved = existing?.interleaved; + const status = existing?.status; + + // Release date: existing > API created timestamp > today + const releaseDate = existing?.release_date + ?? timestampToDate(apiModel.created) + ?? getTodayDate(); + + // Context limit: prefer context_length, fallback to max_model_len + const apiContext = apiModel.context_length ?? apiModel.max_model_len ?? 0; + const contextLimit = apiContext > 0 + ? apiContext + : (existing?.limit?.context ?? 0); + + // Output limit: prefer max_output_length, fallback to existing + const apiOutput = apiModel.max_output_length ?? 0; + const outputLimit = apiOutput > 0 + ? apiOutput + : (existing?.limit?.output ?? 0); + + const merged: MergedModel = { + name: modelName, + family, + attachment: hasAttachment, + reasoning: hasReasoning, + tool_call: hasToolCall, + temperature: hasTemperature, + release_date: releaseDate, + last_updated: getTodayDate(), + open_weights: true, // Chutes hosts open-weight models + ...(hasStructuredOutput && { structured_output: hasStructuredOutput }), + ...(knowledge && { knowledge }), + ...(interleaved !== undefined && { interleaved }), + ...(status && { status }), + limit: { + context: contextLimit, + output: outputLimit, + }, + modalities: { + input: inputMods, + output: outputMods, + }, + }; + + // Cost: API values are already in USD per 1M tokens — use directly + if (apiModel.pricing) { + const inputPrice = apiModel.pricing.prompt; + const outputPrice = apiModel.pricing.completion; + const cacheReadPrice = apiModel.pricing.input_cache_read; + + if (inputPrice !== undefined && outputPrice !== undefined) { + merged.cost = { + input: inputPrice, + output: outputPrice, + ...(cacheReadPrice !== undefined && { cache_read: cacheReadPrice }), + }; + } + } + + return merged; +} + +// ── TOML formatting ────────────────────────────────────────────────── + +function formatToml(model: MergedModel): string { + const lines: string[] = []; + + lines.push(`# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities.`); + lines.push(`# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status`); + lines.push(`name = "${model.name.replace(/"/g, '\\"')}"`); + if (model.family) { + lines.push(`family = "${model.family}"`); + } + lines.push(`release_date = "${model.release_date}"`); + lines.push(`last_updated = "${model.last_updated}"`); + lines.push(`attachment = ${model.attachment}`); + lines.push(`reasoning = ${model.reasoning}`); + lines.push(`temperature = ${model.temperature}`); + lines.push(`tool_call = ${model.tool_call}`); + if (model.structured_output !== undefined) { + lines.push(`structured_output = ${model.structured_output}`); + } + lines.push(`open_weights = ${model.open_weights}`); + if (model.knowledge) { + lines.push(`knowledge = "${model.knowledge}"`); + } + if (model.status) { + lines.push(`status = "${model.status}"`); + } + + if (model.cost) { + lines.push(""); + lines.push(`[cost]`); + lines.push(`input = ${model.cost.input}`); + lines.push(`output = ${model.cost.output}`); + if (model.cost.cache_read !== undefined) { + lines.push(`cache_read = ${model.cost.cache_read}`); + } + } + + lines.push(""); + lines.push(`[limit]`); + lines.push(`context = ${formatNumber(model.limit.context)}`); + lines.push(`output = ${formatNumber(model.limit.output)}`); + + lines.push(""); + lines.push(`[modalities]`); + lines.push(`input = [${model.modalities.input.map((m) => `"${m}"`).join(", ")}]`); + lines.push(`output = [${model.modalities.output.map((m) => `"${m}"`).join(", ")}]`); + + if (model.interleaved !== undefined) { + lines.push(""); + if (model.interleaved === true) { + lines.push(`interleaved = true`); + } else if (typeof model.interleaved === "object") { + lines.push(`[interleaved]`); + lines.push(`field = "${model.interleaved.field}"`); + } + } + + return lines.join("\n") + "\n"; +} + +// ── Change detection ───────────────────────────────────────────────── + +function detectChanges( + existing: ExistingModel | null, + merged: MergedModel, +): Changes[] { + if (!existing) return []; + + const changes: Changes[] = []; + const EPSILON = 0.001; + + const shouldSkipZero = (field: string, oldVal: unknown, newVal: unknown): boolean => { + if (!Object.values(SkipZeroFields).includes(field as SkipZeroFields)) { + return false; + } + return (typeof oldVal === "number" && oldVal === 0) || (typeof newVal === "number" && newVal === 0); + }; + + const formatValue = (val: unknown): string => { + if (typeof val === "number") return formatNumber(val); + if (Array.isArray(val)) return `[${val.join(", ")}]`; + if (val === undefined) return "(none)"; + return String(val); + }; + + const isMaterialPriceDiff = (oldPrice: unknown, newPrice: unknown): boolean => { + if (oldPrice === 0 && newPrice === undefined) return false; + if (oldPrice !== undefined && newPrice !== undefined) { + return Math.abs((oldPrice as number) - (newPrice as number)) > EPSILON; + } + return oldPrice !== newPrice; + }; + + const compare = (field: string, oldVal: unknown, newVal: unknown) => { + if (shouldSkipZero(field, oldVal, newVal)) return; + + const isDiff = field.startsWith("cost.") + ? isMaterialPriceDiff(oldVal, newVal) + : JSON.stringify(oldVal) !== JSON.stringify(newVal); + + if (isDiff) { + changes.push({ + field, + oldValue: formatValue(oldVal), + newValue: formatValue(newVal), + }); + } + }; + + compare("name", existing.name, merged.name); + compare("family", existing.family, merged.family); + compare("attachment", existing.attachment, merged.attachment); + compare("reasoning", existing.reasoning, merged.reasoning); + compare("tool_call", existing.tool_call, merged.tool_call); + compare("structured_output", existing.structured_output, merged.structured_output); + compare("open_weights", existing.open_weights, merged.open_weights); + compare("release_date", existing.release_date, merged.release_date); + compare("cost.input", existing.cost?.input, merged.cost?.input); + compare("cost.output", existing.cost?.output, merged.cost?.output); + compare("cost.cache_read", existing.cost?.cache_read, merged.cost?.cache_read); + compare("limit.context", existing.limit?.context, merged.limit.context); + compare("limit.output", existing.limit?.output, merged.limit.output); + compare("modalities.input", existing.modalities?.input, merged.modalities.input); + compare("modalities.output", existing.modalities?.output, merged.modalities.output); + + return changes; +} + +// ── Main ───────────────────────────────────────────────────────────── + +async function main() { + const args = process.argv.slice(2); + const dryRun = args.includes("--dry-run"); + const newOnly = args.includes("--new-only"); + const keepOrphans = args.includes("--keep-orphans"); + + const modelsDir = path.join( + import.meta.dirname, + "..", + "..", + "..", + "providers", + "chutes", + "models", + ); + + console.log(`${dryRun ? "[DRY RUN] " : ""}${newOnly ? "[NEW ONLY] " : ""}${keepOrphans ? "[KEEP ORPHANS] " : ""}Fetching Chutes models from API...`); + + const res = await fetch(API_ENDPOINT); + if (!res.ok) { + console.error(`Failed to fetch API: ${res.status} ${res.statusText}`); + process.exit(1); + } + + const json = await res.json(); + const parsed = ChutesResponse.safeParse(json); + if (!parsed.success) { + console.error("Invalid API response:", parsed.error.errors); + process.exit(1); + } + + const apiModels = parsed.data.data; + + // Scan existing TOML files + const existingFiles = new Set(); + try { + for await (const file of new Bun.Glob("**/*.toml").scan({ + cwd: modelsDir, + absolute: false, + })) { + existingFiles.add(file); + } + } catch { + } + + console.log(`Found ${apiModels.length} models in API, ${existingFiles.size} existing files\n`); + + const apiModelIds = new Set(); + + let created = 0; + let updated = 0; + let unchanged = 0; + + for (const apiModel of apiModels) { + const relativePath = `${apiModel.id}.toml`; + const filePath = path.join(modelsDir, relativePath); + const dirPath = path.dirname(filePath); + + apiModelIds.add(relativePath); + + const existing = await loadExistingModel(filePath); + const merged = mergeModel(apiModel, existing); + const tomlContent = formatToml(merged); + + if (existing === null) { + created++; + if (dryRun) { + console.log(`[DRY RUN] Would create: ${relativePath}`); + console.log(` name = "${merged.name}"`); + if (merged.family) { + console.log(` family = "${merged.family}" (inferred)`); + } + console.log(""); + } else { + await mkdir(dirPath, { recursive: true }); + await Bun.write(filePath, tomlContent); + console.log(`Created: ${relativePath}`); + } + } else { + if (newOnly) { + unchanged++; + continue; + } + + const changes = detectChanges(existing, merged); + const existingContent = await Bun.file(filePath).text(); + const formatChanged = existingContent !== tomlContent; + + if (changes.length > 0 || formatChanged) { + updated++; + if (dryRun) { + console.log(`[DRY RUN] Would update: ${relativePath}`); + } else { + await mkdir(dirPath, { recursive: true }); + await Bun.write(filePath, tomlContent); + console.log(`Updated: ${relativePath}`); + } + for (const change of changes) { + console.log(` ${change.field}: ${change.oldValue} → ${change.newValue}`); + } + if (changes.length === 0 && formatChanged) { + console.log(` (format-only change)`); + } + console.log(""); + } else { + unchanged++; + } + } + } + + // Handle orphaned files (on disk but not in API) + const orphaned: string[] = []; + for (const file of existingFiles) { + if (!apiModelIds.has(file)) { + orphaned.push(file); + const orphanPath = path.join(modelsDir, file); + if (keepOrphans) { + console.log(`Orphaned (kept): ${file}`); + } else if (dryRun) { + console.log(`[DRY RUN] Would delete: ${file}`); + } else { + await Bun.file(orphanPath).delete(); + console.log(`Deleted: ${file}`); + + // Clean up empty parent directories + const parentDir = path.dirname(orphanPath); + try { + const remaining = []; + for await (const entry of new Bun.Glob("*").scan({ cwd: parentDir })) { + remaining.push(entry); + } + if (remaining.length === 0) { + const { rmdir } = await import("node:fs/promises"); + await rmdir(parentDir); + console.log(` Removed empty directory: ${path.basename(parentDir)}/`); + } + } catch { + // Directory not empty or other error, ignore + } + } + } + } + + console.log(""); + if (dryRun) { + console.log( + `Summary: ${created} would be created, ${updated} would be updated, ${unchanged} unchanged, ${orphaned.length} would be deleted`, + ); + } else if (keepOrphans) { + console.log( + `Summary: ${created} created, ${updated} updated, ${unchanged} unchanged, ${orphaned.length} orphaned (kept)`, + ); + } else { + console.log( + `Summary: ${created} created, ${updated} updated, ${unchanged} unchanged, ${orphaned.length} deleted`, + ); + } +} + +await main(); diff --git a/providers/chutes/models/MiniMaxAI/MiniMax-M2.1-TEE.toml b/providers/chutes/models/MiniMaxAI/MiniMax-M2.1-TEE.toml deleted file mode 100644 index d1275edab..000000000 --- a/providers/chutes/models/MiniMaxAI/MiniMax-M2.1-TEE.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "MiniMax M2.1 TEE" -family = "minimax" -release_date = "2025-12-29" -last_updated = "2026-01-27" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.27 -output = 1.12 - -[limit] -context = 196_608 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/MiniMaxAI/MiniMax-M2.5-TEE.toml b/providers/chutes/models/MiniMaxAI/MiniMax-M2.5-TEE.toml index f4340bcd4..e88a3db91 100644 --- a/providers/chutes/models/MiniMaxAI/MiniMax-M2.5-TEE.toml +++ b/providers/chutes/models/MiniMaxAI/MiniMax-M2.5-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "MiniMax M2.5 TEE" family = "minimax" release_date = "2026-02-15" -last_updated = "2026-02-15" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -10,9 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.30 -output = 1.10 -cache_read = 0.15 +input = 0.15 +output = 1.2 +cache_read = 0.075 [limit] context = 196_608 diff --git a/providers/chutes/models/NousResearch/DeepHermes-3-Mistral-24B-Preview.toml b/providers/chutes/models/NousResearch/DeepHermes-3-Mistral-24B-Preview.toml index 1ffec8c23..b6c478117 100644 --- a/providers/chutes/models/NousResearch/DeepHermes-3-Mistral-24B-Preview.toml +++ b/providers/chutes/models/NousResearch/DeepHermes-3-Mistral-24B-Preview.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "DeepHermes 3 Mistral 24B Preview" family = "nousresearch" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = false temperature = true @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.02 -output = 0.10 +input = 0.0245 +output = 0.0978 +cache_read = 0.01225 [limit] context = 32_768 diff --git a/providers/chutes/models/NousResearch/Hermes-4-14B.toml b/providers/chutes/models/NousResearch/Hermes-4-14B.toml index 13280c9a7..23929e3a9 100644 --- a/providers/chutes/models/NousResearch/Hermes-4-14B.toml +++ b/providers/chutes/models/NousResearch/Hermes-4-14B.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Hermes 4 14B" family = "nousresearch" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.01 -output = 0.05 +input = 0.0136 +output = 0.0543 +cache_read = 0.0068 [limit] context = 40_960 diff --git a/providers/chutes/models/NousResearch/Hermes-4-405B-FP8-TEE.toml b/providers/chutes/models/NousResearch/Hermes-4-405B-FP8-TEE.toml deleted file mode 100644 index 32935a658..000000000 --- a/providers/chutes/models/NousResearch/Hermes-4-405B-FP8-TEE.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "Hermes 4 405B FP8 TEE" -family = "nousresearch" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.30 -output = 1.20 - -[limit] -context = 131_072 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/NousResearch/Hermes-4-70B.toml b/providers/chutes/models/NousResearch/Hermes-4-70B.toml deleted file mode 100644 index c855eb602..000000000 --- a/providers/chutes/models/NousResearch/Hermes-4-70B.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "Hermes 4 70B" -family = "nousresearch" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.11 -output = 0.38 - -[limit] -context = 131_072 -output = 131_072 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/NousResearch/Hermes-4.3-36B.toml b/providers/chutes/models/NousResearch/Hermes-4.3-36B.toml deleted file mode 100644 index 1855c4d64..000000000 --- a/providers/chutes/models/NousResearch/Hermes-4.3-36B.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "Hermes 4.3 36B" -family = "nousresearch" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = false -structured_output = false -open_weights = true - -[cost] -input = 0.10 -output = 0.39 - -[limit] -context = 32_768 -output = 8_192 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/OpenGVLab/InternVL3-78B-TEE.toml b/providers/chutes/models/OpenGVLab/InternVL3-78B-TEE.toml deleted file mode 100644 index 75cfe6dd1..000000000 --- a/providers/chutes/models/OpenGVLab/InternVL3-78B-TEE.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "InternVL3 78B TEE" -family = "opengvlab" -release_date = "2025-01-06" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = false -structured_output = true -open_weights = true - -[cost] -input = 0.10 -output = 0.39 - -[limit] -context = 32_768 -output = 32_768 - -[modalities] -input = ["text", "image"] -output = ["text"] diff --git a/providers/chutes/models/Qwen/Qwen2.5-72B-Instruct.toml b/providers/chutes/models/Qwen/Qwen2.5-72B-Instruct.toml index 57eebab9a..57a856670 100644 --- a/providers/chutes/models/Qwen/Qwen2.5-72B-Instruct.toml +++ b/providers/chutes/models/Qwen/Qwen2.5-72B-Instruct.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Qwen2.5 72B Instruct" family = "qwen" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = false temperature = true @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.13 -output = 0.52 +input = 0.2989 +output = 1.1957 +cache_read = 0.14945 [limit] context = 32_768 diff --git a/providers/chutes/models/Qwen/Qwen2.5-Coder-32B-Instruct.toml b/providers/chutes/models/Qwen/Qwen2.5-Coder-32B-Instruct.toml index 6770cc04f..b49c7d3de 100644 --- a/providers/chutes/models/Qwen/Qwen2.5-Coder-32B-Instruct.toml +++ b/providers/chutes/models/Qwen/Qwen2.5-Coder-32B-Instruct.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Qwen2.5 Coder 32B Instruct" family = "qwen" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = false temperature = true @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.03 -output = 0.11 +input = 0.0272 +output = 0.1087 +cache_read = 0.0136 [limit] context = 32_768 diff --git a/providers/chutes/models/Qwen/Qwen2.5-VL-32B-Instruct.toml b/providers/chutes/models/Qwen/Qwen2.5-VL-32B-Instruct.toml index d2cfb35c8..4f8eb0d3e 100644 --- a/providers/chutes/models/Qwen/Qwen2.5-VL-32B-Instruct.toml +++ b/providers/chutes/models/Qwen/Qwen2.5-VL-32B-Instruct.toml @@ -1,8 +1,10 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Qwen2.5 VL 32B Instruct" family = "qwen" release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false +last_updated = "2026-04-25" +attachment = true reasoning = false temperature = true tool_call = false @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.05 -output = 0.22 +input = 0.0543 +output = 0.2174 +cache_read = 0.02715 [limit] context = 16_384 diff --git a/providers/chutes/models/Qwen/Qwen2.5-VL-72B-Instruct-TEE.toml b/providers/chutes/models/Qwen/Qwen2.5-VL-72B-Instruct-TEE.toml deleted file mode 100644 index 5014326cf..000000000 --- a/providers/chutes/models/Qwen/Qwen2.5-VL-72B-Instruct-TEE.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "Qwen2.5 VL 72B Instruct TEE" -family = "qwen" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = false -structured_output = true -open_weights = true - -[cost] -input = 0.15 -output = 0.60 - -[limit] -context = 32_768 -output = 32_768 - -[modalities] -input = ["text", "image"] -output = ["text"] diff --git a/providers/chutes/models/Qwen/Qwen3-14B.toml b/providers/chutes/models/Qwen/Qwen3-14B.toml deleted file mode 100644 index e73eb18e6..000000000 --- a/providers/chutes/models/Qwen/Qwen3-14B.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "Qwen3 14B" -family = "qwen" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.05 -output = 0.22 - -[limit] -context = 40_960 -output = 40_960 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/Qwen/Qwen3-235B-A22B-Instruct-2507-TEE.toml b/providers/chutes/models/Qwen/Qwen3-235B-A22B-Instruct-2507-TEE.toml index 3471cfe5d..06eda16b2 100644 --- a/providers/chutes/models/Qwen/Qwen3-235B-A22B-Instruct-2507-TEE.toml +++ b/providers/chutes/models/Qwen/Qwen3-235B-A22B-Instruct-2507-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Qwen3 235B A22B Instruct 2507 TEE" family = "qwen" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = false temperature = true @@ -10,9 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.08 -output = 0.55 -cache_read = 0.04 +input = 0.1 +output = 0.6 +cache_read = 0.05 [limit] context = 262_144 diff --git a/providers/chutes/models/Qwen/Qwen3-235B-A22B-Thinking-2507.toml b/providers/chutes/models/Qwen/Qwen3-235B-A22B-Thinking-2507.toml index bdb613f1b..d3491ea5c 100644 --- a/providers/chutes/models/Qwen/Qwen3-235B-A22B-Thinking-2507.toml +++ b/providers/chutes/models/Qwen/Qwen3-235B-A22B-Thinking-2507.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Qwen3 235B A22B Thinking 2507" family = "qwen" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -11,7 +13,8 @@ open_weights = true [cost] input = 0.11 -output = 0.60 +output = 0.6 +cache_read = 0.055 [limit] context = 262_144 diff --git a/providers/chutes/models/Qwen/Qwen3-235B-A22B.toml b/providers/chutes/models/Qwen/Qwen3-235B-A22B.toml deleted file mode 100644 index 624a91ac0..000000000 --- a/providers/chutes/models/Qwen/Qwen3-235B-A22B.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "Qwen3 235B A22B" -family = "qwen" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.30 -output = 1.20 - -[limit] -context = 40_960 -output = 40_960 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/Qwen/Qwen3-30B-A3B-Instruct-2507.toml b/providers/chutes/models/Qwen/Qwen3-30B-A3B-Instruct-2507.toml deleted file mode 100644 index 52df2568c..000000000 --- a/providers/chutes/models/Qwen/Qwen3-30B-A3B-Instruct-2507.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "Qwen3 30B A3B Instruct 2507" -family = "qwen" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.08 -output = 0.33 - -[limit] -context = 262_144 -output = 262_144 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/Qwen/Qwen3-30B-A3B.toml b/providers/chutes/models/Qwen/Qwen3-30B-A3B.toml index 809fcca2c..2456a469a 100644 --- a/providers/chutes/models/Qwen/Qwen3-30B-A3B.toml +++ b/providers/chutes/models/Qwen/Qwen3-30B-A3B.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Qwen3 30B A3B" family = "qwen" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -12,6 +14,7 @@ open_weights = true [cost] input = 0.06 output = 0.22 +cache_read = 0.03 [limit] context = 40_960 diff --git a/providers/chutes/models/Qwen/Qwen3-32B.toml b/providers/chutes/models/Qwen/Qwen3-32B-TEE.toml similarity index 52% rename from providers/chutes/models/Qwen/Qwen3-32B.toml rename to providers/chutes/models/Qwen/Qwen3-32B-TEE.toml index 48681ecd3..de2948a36 100644 --- a/providers/chutes/models/Qwen/Qwen3-32B.toml +++ b/providers/chutes/models/Qwen/Qwen3-32B-TEE.toml @@ -1,7 +1,9 @@ -name = "Qwen3 32B" +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status +name = "Qwen3 32B TEE" family = "qwen" -release_date = "2025-12-29" -last_updated = "2026-01-10" +release_date = "2026-04-25" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -21,6 +23,3 @@ output = 40_960 [modalities] input = ["text"] output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8-TEE.toml b/providers/chutes/models/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8-TEE.toml deleted file mode 100644 index d034d425d..000000000 --- a/providers/chutes/models/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8-TEE.toml +++ /dev/null @@ -1,23 +0,0 @@ -name = "Qwen3 Coder 480B A35B Instruct FP8 TEE" -family = "qwen" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.22 -output = 0.95 -cache_read = 0.11 - -[limit] -context = 262_144 -output = 262_144 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/Qwen/Qwen3-Coder-Next-TEE.toml b/providers/chutes/models/Qwen/Qwen3-Coder-Next-TEE.toml new file mode 100644 index 000000000..a0c13d671 --- /dev/null +++ b/providers/chutes/models/Qwen/Qwen3-Coder-Next-TEE.toml @@ -0,0 +1,25 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status +name = "Qwen3 Coder Next TEE" +family = "qwen" +release_date = "2026-04-25" +last_updated = "2026-04-25" +attachment = false +reasoning = false +temperature = true +tool_call = true +structured_output = true +open_weights = true + +[cost] +input = 0.12 +output = 0.75 +cache_read = 0.06 + +[limit] +context = 262_144 +output = 65_536 + +[modalities] +input = ["text"] +output = ["text"] diff --git a/providers/chutes/models/Qwen/Qwen3-Coder-Next.toml b/providers/chutes/models/Qwen/Qwen3-Coder-Next.toml deleted file mode 100644 index e5275d832..000000000 --- a/providers/chutes/models/Qwen/Qwen3-Coder-Next.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "Qwen3 Coder Next" -family = "qwen" -release_date = "2026-02-05" -last_updated = "2026-02-05" -attachment = false -reasoning = false -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.07 -output = 0.30 - -[limit] -context = 262_144 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] \ No newline at end of file diff --git a/providers/chutes/models/Qwen/Qwen3-Next-80B-A3B-Instruct.toml b/providers/chutes/models/Qwen/Qwen3-Next-80B-A3B-Instruct.toml index e38870ca2..3aef5be94 100644 --- a/providers/chutes/models/Qwen/Qwen3-Next-80B-A3B-Instruct.toml +++ b/providers/chutes/models/Qwen/Qwen3-Next-80B-A3B-Instruct.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Qwen3 Next 80B A3B Instruct" family = "qwen" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = false temperature = true @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.10 -output = 0.80 +input = 0.1 +output = 0.8 +cache_read = 0.05 [limit] context = 262_144 diff --git a/providers/chutes/models/Qwen/Qwen3-VL-235B-A22B-Instruct.toml b/providers/chutes/models/Qwen/Qwen3-VL-235B-A22B-Instruct.toml deleted file mode 100644 index fb89f8d17..000000000 --- a/providers/chutes/models/Qwen/Qwen3-VL-235B-A22B-Instruct.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "Qwen3 VL 235B A22B Instruct" -family = "qwen" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.30 -output = 1.20 - -[limit] -context = 262_144 -output = 262_144 - -[modalities] -input = ["text", "image"] -output = ["text"] diff --git a/providers/chutes/models/Qwen/Qwen3.5-397B-A17B-TEE.toml b/providers/chutes/models/Qwen/Qwen3.5-397B-A17B-TEE.toml index 24e244af2..0a3491776 100644 --- a/providers/chutes/models/Qwen/Qwen3.5-397B-A17B-TEE.toml +++ b/providers/chutes/models/Qwen/Qwen3.5-397B-A17B-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Qwen3.5 397B A17B TEE" family = "qwen" release_date = "2026-02-18" -last_updated = "2026-02-18" +last_updated = "2026-04-25" attachment = true reasoning = true temperature = true diff --git a/providers/chutes/models/Qwen/Qwen3.6-27B-TEE.toml b/providers/chutes/models/Qwen/Qwen3.6-27B-TEE.toml new file mode 100644 index 000000000..ae9d368ac --- /dev/null +++ b/providers/chutes/models/Qwen/Qwen3.6-27B-TEE.toml @@ -0,0 +1,25 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status +name = "Qwen3.6 27B TEE" +family = "qwen" +release_date = "2026-04-25" +last_updated = "2026-04-25" +attachment = true +reasoning = true +temperature = true +tool_call = true +structured_output = true +open_weights = true + +[cost] +input = 0.195 +output = 1.56 +cache_read = 0.0975 + +[limit] +context = 262_144 +output = 65_536 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/chutes/models/Qwen/Qwen3Guard-Gen-0.6B.toml b/providers/chutes/models/Qwen/Qwen3Guard-Gen-0.6B.toml index 2bf378228..a4d592a65 100644 --- a/providers/chutes/models/Qwen/Qwen3Guard-Gen-0.6B.toml +++ b/providers/chutes/models/Qwen/Qwen3Guard-Gen-0.6B.toml @@ -1,17 +1,18 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Qwen3Guard Gen 0.6B" family = "qwen" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = false temperature = true tool_call = false -structured_output = false open_weights = true [cost] input = 0.01 -output = 0.01 +output = 0.0109 cache_read = 0.005 [limit] diff --git a/providers/chutes/models/XiaomiMiMo/MiMo-V2-Flash-TEE.toml b/providers/chutes/models/XiaomiMiMo/MiMo-V2-Flash-TEE.toml new file mode 100644 index 000000000..0d4f0123b --- /dev/null +++ b/providers/chutes/models/XiaomiMiMo/MiMo-V2-Flash-TEE.toml @@ -0,0 +1,25 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status +name = "MiMo V2 Flash TEE" +family = "mimo" +release_date = "2026-04-25" +last_updated = "2026-04-25" +attachment = false +reasoning = false +temperature = true +tool_call = true +structured_output = true +open_weights = true + +[cost] +input = 0.09 +output = 0.29 +cache_read = 0.045 + +[limit] +context = 262_144 +output = 65_536 + +[modalities] +input = ["text"] +output = ["text"] diff --git a/providers/chutes/models/XiaomiMiMo/MiMo-V2-Flash.toml b/providers/chutes/models/XiaomiMiMo/MiMo-V2-Flash.toml deleted file mode 100644 index 26c7d4c23..000000000 --- a/providers/chutes/models/XiaomiMiMo/MiMo-V2-Flash.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "MiMo V2 Flash" -family = "mimo" -release_date = "2025-12-29" -last_updated = "2026-01-27" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = false -open_weights = true - -[cost] -input = 0.09 -output = 0.29 - -[limit] -context = 262_144 -output = 32_000 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/chutesai/Mistral-Small-3.1-24B-Instruct-2503.toml b/providers/chutes/models/chutesai/Mistral-Small-3.1-24B-Instruct-2503.toml deleted file mode 100644 index 72eefa2db..000000000 --- a/providers/chutes/models/chutesai/Mistral-Small-3.1-24B-Instruct-2503.toml +++ /dev/null @@ -1,23 +0,0 @@ -name = "Mistral Small 3.1 24B Instruct 2503" -family = "chutesai" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.03 -output = 0.11 -cache_read = 0.015 - -[limit] -context = 131_072 -output = 131_072 - -[modalities] -input = ["text", "image"] -output = ["text"] diff --git a/providers/chutes/models/chutesai/Mistral-Small-3.2-24B-Instruct-2506.toml b/providers/chutes/models/chutesai/Mistral-Small-3.2-24B-Instruct-2506.toml deleted file mode 100644 index 2d2b60340..000000000 --- a/providers/chutes/models/chutesai/Mistral-Small-3.2-24B-Instruct-2506.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "Mistral Small 3.2 24B Instruct 2506" -family = "chutesai" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.06 -output = 0.18 - -[limit] -context = 131_072 -output = 131_072 - -[modalities] -input = ["text", "image"] -output = ["text"] diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-R1-0528-TEE.toml b/providers/chutes/models/deepseek-ai/DeepSeek-R1-0528-TEE.toml index 29eb60004..b4432bb16 100644 --- a/providers/chutes/models/deepseek-ai/DeepSeek-R1-0528-TEE.toml +++ b/providers/chutes/models/deepseek-ai/DeepSeek-R1-0528-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "DeepSeek R1 0528 TEE" family = "deepseek-thinking" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.40 -output = 1.75 +input = 0.45 +output = 2.15 +cache_read = 0.225 [limit] context = 163_840 diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-R1-Distill-Llama-70B.toml b/providers/chutes/models/deepseek-ai/DeepSeek-R1-Distill-Llama-70B.toml index 3b5b44f27..a7b03fda8 100644 --- a/providers/chutes/models/deepseek-ai/DeepSeek-R1-Distill-Llama-70B.toml +++ b/providers/chutes/models/deepseek-ai/DeepSeek-R1-Distill-Llama-70B.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "DeepSeek R1 Distill Llama 70B" family = "deepseek-thinking" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.03 -output = 0.11 +input = 0.0272 +output = 0.1087 +cache_read = 0.0136 [limit] context = 131_072 diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-R1-TEE.toml b/providers/chutes/models/deepseek-ai/DeepSeek-R1-TEE.toml deleted file mode 100644 index e38e11eae..000000000 --- a/providers/chutes/models/deepseek-ai/DeepSeek-R1-TEE.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "DeepSeek R1 TEE" -family = "deepseek-thinking" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = false -structured_output = true -open_weights = true - -[cost] -input = 0.30 -output = 1.20 - -[limit] -context = 163_840 -output = 163_840 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-V3-0324-TEE.toml b/providers/chutes/models/deepseek-ai/DeepSeek-V3-0324-TEE.toml index 7e65e90a7..75b5fd8bf 100644 --- a/providers/chutes/models/deepseek-ai/DeepSeek-V3-0324-TEE.toml +++ b/providers/chutes/models/deepseek-ai/DeepSeek-V3-0324-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "DeepSeek V3 0324 TEE" family = "deepseek" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = false temperature = true @@ -10,9 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.19 -output = 0.87 -cache_read = 0.095 +input = 0.25 +output = 1 +cache_read = 0.125 [limit] context = 163_840 diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-TEE.toml b/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-TEE.toml index 00c28f5f2..23f75a115 100644 --- a/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-TEE.toml +++ b/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "DeepSeek V3.1 TEE" family = "deepseek" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.20 -output = 0.80 +input = 0.27 +output = 1 +cache_read = 0.135 [limit] context = 163_840 diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-Terminus-TEE.toml b/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-Terminus-TEE.toml deleted file mode 100644 index 7a17ecfdb..000000000 --- a/providers/chutes/models/deepseek-ai/DeepSeek-V3.1-Terminus-TEE.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "DeepSeek V3.1 Terminus TEE" -family = "deepseek" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.23 -output = 0.90 - -[limit] -context = 163_840 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-V3.2-Speciale-TEE.toml b/providers/chutes/models/deepseek-ai/DeepSeek-V3.2-Speciale-TEE.toml deleted file mode 100644 index 3a4e8aa32..000000000 --- a/providers/chutes/models/deepseek-ai/DeepSeek-V3.2-Speciale-TEE.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "DeepSeek V3.2 Speciale TEE" -family = "deepseek" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = false -structured_output = true -open_weights = true - -[cost] -input = 0.27 -output = 0.41 - -[limit] -context = 163_840 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-V3.2-TEE.toml b/providers/chutes/models/deepseek-ai/DeepSeek-V3.2-TEE.toml index 889dba46e..eeb0240dc 100644 --- a/providers/chutes/models/deepseek-ai/DeepSeek-V3.2-TEE.toml +++ b/providers/chutes/models/deepseek-ai/DeepSeek-V3.2-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "DeepSeek V3.2 TEE" family = "deepseek" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true diff --git a/providers/chutes/models/deepseek-ai/DeepSeek-V3.toml b/providers/chutes/models/deepseek-ai/DeepSeek-V3.toml deleted file mode 100644 index 6f1379823..000000000 --- a/providers/chutes/models/deepseek-ai/DeepSeek-V3.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "DeepSeek V3" -family = "deepseek" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = false -structured_output = true -open_weights = true - -[cost] -input = 0.30 -output = 1.20 - -[limit] -context = 163_840 -output = 163_840 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/google/gemma-4-31B-turbo-TEE.toml b/providers/chutes/models/google/gemma-4-31B-turbo-TEE.toml new file mode 100644 index 000000000..6b14971c2 --- /dev/null +++ b/providers/chutes/models/google/gemma-4-31B-turbo-TEE.toml @@ -0,0 +1,25 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status +name = "gemma 4 31B turbo TEE" +family = "gemma" +release_date = "2026-04-25" +last_updated = "2026-04-25" +attachment = true +reasoning = true +temperature = true +tool_call = true +structured_output = true +open_weights = true + +[cost] +input = 0.13 +output = 0.38 +cache_read = 0.065 + +[limit] +context = 131_072 +output = 65_536 + +[modalities] +input = ["text", "image"] +output = ["text"] diff --git a/providers/chutes/models/miromind-ai/MiroThinker-v1.5-235B.toml b/providers/chutes/models/miromind-ai/MiroThinker-v1.5-235B.toml deleted file mode 100644 index ac2ccd4b7..000000000 --- a/providers/chutes/models/miromind-ai/MiroThinker-v1.5-235B.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "MiroThinker V1.5 235B" -release_date = "2026-01-10" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = false -structured_output = false -open_weights = true - -[cost] -input = 0.30 -output = 1.20 -cache_read = 0.15 - -[limit] -context = 262_144 -output = 8_192 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/mistralai/Devstral-2-123B-Instruct-2512-TEE.toml b/providers/chutes/models/mistralai/Devstral-2-123B-Instruct-2512-TEE.toml deleted file mode 100644 index 2aeea73f9..000000000 --- a/providers/chutes/models/mistralai/Devstral-2-123B-Instruct-2512-TEE.toml +++ /dev/null @@ -1,21 +0,0 @@ -name = "Devstral 2 123B Instruct 2512 TEE" -release_date = "2026-01-10" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.05 -output = 0.22 - -[limit] -context = 262_144 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/moonshotai/Kimi-K2-Instruct-0905.toml b/providers/chutes/models/moonshotai/Kimi-K2-Instruct-0905.toml deleted file mode 100644 index be9d0e708..000000000 --- a/providers/chutes/models/moonshotai/Kimi-K2-Instruct-0905.toml +++ /dev/null @@ -1,23 +0,0 @@ -name = "Kimi K2 Instruct 0905" -family = "kimi" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.39 -output = 1.90 -cache_read = 0.195 - -[limit] -context = 262_144 -output = 262_144 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/moonshotai/Kimi-K2-Thinking-TEE.toml b/providers/chutes/models/moonshotai/Kimi-K2-Thinking-TEE.toml deleted file mode 100644 index 55a4ba40c..000000000 --- a/providers/chutes/models/moonshotai/Kimi-K2-Thinking-TEE.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "Kimi K2 Thinking TEE" -family = "kimi-thinking" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.40 -output = 1.75 - -[limit] -context = 262_144 -output = 65_535 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/moonshotai/Kimi-K2.5-TEE.toml b/providers/chutes/models/moonshotai/Kimi-K2.5-TEE.toml index 74c97d3a6..b54781682 100644 --- a/providers/chutes/models/moonshotai/Kimi-K2.5-TEE.toml +++ b/providers/chutes/models/moonshotai/Kimi-K2.5-TEE.toml @@ -1,21 +1,21 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Kimi K2.5 TEE" family = "kimi" release_date = "2026-01-27" -last_updated = "2026-01-27" -attachment = false +last_updated = "2026-04-25" +attachment = true reasoning = true temperature = true tool_call = true -knowledge = "2024-10" -open_weights = true structured_output = true - -[interleaved] -field = "reasoning_content" +open_weights = true +knowledge = "2024-10" [cost] -input = 0.60 -output = 3.00 +input = 0.44 +output = 2 +cache_read = 0.22 [limit] context = 262_144 @@ -24,3 +24,6 @@ output = 65_535 [modalities] input = ["text", "image", "video"] output = ["text"] + +[interleaved] +field = "reasoning_content" diff --git a/providers/chutes/models/moonshotai/Kimi-K2.6-TEE.toml b/providers/chutes/models/moonshotai/Kimi-K2.6-TEE.toml index 539522020..c1d7bd39c 100644 --- a/providers/chutes/models/moonshotai/Kimi-K2.6-TEE.toml +++ b/providers/chutes/models/moonshotai/Kimi-K2.6-TEE.toml @@ -1,26 +1,29 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Kimi K2.6 TEE" family = "kimi" release_date = "2026-04-20" -last_updated = "2026-04-23" +last_updated = "2026-04-25" attachment = true reasoning = true temperature = true tool_call = true -knowledge = "2025-12" -open_weights = true structured_output = true - -[interleaved] -field = "reasoning_content" +open_weights = true +knowledge = "2025-12" [cost] -input = 0.44 -output = 2.00 +input = 0.95 +output = 4 +cache_read = 0.475 [limit] context = 262_144 -output = 262_144 +output = 65_535 [modalities] input = ["text", "image", "video"] output = ["text"] + +[interleaved] +field = "reasoning_content" diff --git a/providers/chutes/models/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16.toml b/providers/chutes/models/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16.toml deleted file mode 100644 index 388412a77..000000000 --- a/providers/chutes/models/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "NVIDIA Nemotron 3 Nano 30B A3B BF16" -family = "nemotron" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.06 -output = 0.24 - -[limit] -context = 262_144 -output = 262_144 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/openai/gpt-oss-120b-TEE.toml b/providers/chutes/models/openai/gpt-oss-120b-TEE.toml index eef1fb956..832b80c36 100644 --- a/providers/chutes/models/openai/gpt-oss-120b-TEE.toml +++ b/providers/chutes/models/openai/gpt-oss-120b-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "gpt oss 120b TEE" family = "gpt-oss" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.04 -output = 0.18 +input = 0.09 +output = 0.36 +cache_read = 0.045 [limit] context = 131_072 diff --git a/providers/chutes/models/openai/gpt-oss-20b.toml b/providers/chutes/models/openai/gpt-oss-20b.toml deleted file mode 100644 index dd4ad3810..000000000 --- a/providers/chutes/models/openai/gpt-oss-20b.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "gpt oss 20b" -family = "gpt-oss" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.02 -output = 0.10 - -[limit] -context = 131_072 -output = 131_072 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/rednote-hilab/dots.ocr.toml b/providers/chutes/models/rednote-hilab/dots.ocr.toml index c506e890b..77244c234 100644 --- a/providers/chutes/models/rednote-hilab/dots.ocr.toml +++ b/providers/chutes/models/rednote-hilab/dots.ocr.toml @@ -1,8 +1,10 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "dots.ocr" family = "rednote" release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false +last_updated = "2026-04-25" +attachment = true reasoning = false temperature = true tool_call = false @@ -11,7 +13,7 @@ open_weights = true [cost] input = 0.01 -output = 0.01 +output = 0.0109 cache_read = 0.005 [limit] diff --git a/providers/chutes/models/tngtech/DeepSeek-R1T-Chimera.toml b/providers/chutes/models/tngtech/DeepSeek-R1T-Chimera.toml deleted file mode 100644 index 5c7814479..000000000 --- a/providers/chutes/models/tngtech/DeepSeek-R1T-Chimera.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "DeepSeek R1T Chimera" -family = "tngtech" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = false -structured_output = true -open_weights = true - -[cost] -input = 0.30 -output = 1.20 - -[limit] -context = 163_840 -output = 163_840 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/tngtech/DeepSeek-TNG-R1T2-Chimera-TEE.toml b/providers/chutes/models/tngtech/DeepSeek-TNG-R1T2-Chimera-TEE.toml new file mode 100644 index 000000000..783d65beb --- /dev/null +++ b/providers/chutes/models/tngtech/DeepSeek-TNG-R1T2-Chimera-TEE.toml @@ -0,0 +1,25 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status +name = "DeepSeek TNG R1T2 Chimera TEE" +family = "deepseek" +release_date = "2026-04-25" +last_updated = "2026-04-25" +attachment = false +reasoning = true +temperature = true +tool_call = true +structured_output = true +open_weights = true + +[cost] +input = 0.3 +output = 1.1 +cache_read = 0.15 + +[limit] +context = 163_840 +output = 163_840 + +[modalities] +input = ["text"] +output = ["text"] diff --git a/providers/chutes/models/tngtech/DeepSeek-TNG-R1T2-Chimera.toml b/providers/chutes/models/tngtech/DeepSeek-TNG-R1T2-Chimera.toml deleted file mode 100644 index 81ebd152c..000000000 --- a/providers/chutes/models/tngtech/DeepSeek-TNG-R1T2-Chimera.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "DeepSeek TNG R1T2 Chimera" -family = "tngtech" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.25 -output = 0.85 - -[limit] -context = 163_840 -output = 163_840 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/tngtech/TNG-R1T-Chimera-TEE.toml b/providers/chutes/models/tngtech/TNG-R1T-Chimera-TEE.toml deleted file mode 100644 index d45f90949..000000000 --- a/providers/chutes/models/tngtech/TNG-R1T-Chimera-TEE.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "TNG R1T Chimera TEE" -family = "tngtech" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.25 -output = 0.85 - -[limit] -context = 163_840 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/tngtech/TNG-R1T-Chimera-Turbo.toml b/providers/chutes/models/tngtech/TNG-R1T-Chimera-Turbo.toml deleted file mode 100644 index 930cc1961..000000000 --- a/providers/chutes/models/tngtech/TNG-R1T-Chimera-Turbo.toml +++ /dev/null @@ -1,21 +0,0 @@ -name = "TNG R1T Chimera Turbo" -release_date = "2026-01-27" -last_updated = "2026-01-27" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.22 -output = 0.60 - -[limit] -context = 163_840 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/unsloth/Llama-3.2-1B-Instruct.toml b/providers/chutes/models/unsloth/Llama-3.2-1B-Instruct.toml index fae0b47f2..6b4c9fe3c 100644 --- a/providers/chutes/models/unsloth/Llama-3.2-1B-Instruct.toml +++ b/providers/chutes/models/unsloth/Llama-3.2-1B-Instruct.toml @@ -1,20 +1,22 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Llama 3.2 1B Instruct" +family = "unsloth" release_date = "2026-01-27" -last_updated = "2026-01-27" +last_updated = "2026-04-25" attachment = false reasoning = false temperature = true tool_call = false -structured_output = false open_weights = true [cost] input = 0.01 -output = 0.01 +output = 0.0109 cache_read = 0.005 [limit] -context = 32_768 +context = 16_384 output = 8_192 [modalities] diff --git a/providers/chutes/models/unsloth/Llama-3.2-3B-Instruct.toml b/providers/chutes/models/unsloth/Llama-3.2-3B-Instruct.toml index 1575de200..71fc80c5d 100644 --- a/providers/chutes/models/unsloth/Llama-3.2-3B-Instruct.toml +++ b/providers/chutes/models/unsloth/Llama-3.2-3B-Instruct.toml @@ -1,22 +1,23 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Llama 3.2 3B Instruct" family = "unsloth" release_date = "2025-02-12" -last_updated = "2025-02-12" +last_updated = "2026-04-25" attachment = false reasoning = false temperature = true tool_call = false -structured_output = false open_weights = true [cost] input = 0.01 -output = 0.01 +output = 0.0136 cache_read = 0.005 [limit] -context = 16384 -output = 16384 +context = 16_384 +output = 16_384 [modalities] input = ["text"] diff --git a/providers/chutes/models/unsloth/Mistral-Nemo-Instruct-2407.toml b/providers/chutes/models/unsloth/Mistral-Nemo-Instruct-2407.toml index 1777e7e66..45754714e 100644 --- a/providers/chutes/models/unsloth/Mistral-Nemo-Instruct-2407.toml +++ b/providers/chutes/models/unsloth/Mistral-Nemo-Instruct-2407.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "Mistral Nemo Instruct 2407" family = "unsloth" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = false temperature = true diff --git a/providers/chutes/models/unsloth/Mistral-Small-24B-Instruct-2501.toml b/providers/chutes/models/unsloth/Mistral-Small-24B-Instruct-2501.toml deleted file mode 100644 index ad834e3d7..000000000 --- a/providers/chutes/models/unsloth/Mistral-Small-24B-Instruct-2501.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "Mistral Small 24B Instruct 2501" -family = "unsloth" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = false -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.03 -output = 0.11 - -[limit] -context = 32_768 -output = 32_768 - -[modalities] -input = ["text", "image"] -output = ["text"] diff --git a/providers/chutes/models/unsloth/gemma-3-12b-it.toml b/providers/chutes/models/unsloth/gemma-3-12b-it.toml index 09fcbcd48..9da3039a6 100644 --- a/providers/chutes/models/unsloth/gemma-3-12b-it.toml +++ b/providers/chutes/models/unsloth/gemma-3-12b-it.toml @@ -1,17 +1,19 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "gemma 3 12b it" family = "unsloth" release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false +last_updated = "2026-04-25" +attachment = true reasoning = false temperature = true tool_call = false -structured_output = true open_weights = true [cost] input = 0.03 -output = 0.10 +output = 0.1 +cache_read = 0.015 [limit] context = 131_072 diff --git a/providers/chutes/models/unsloth/gemma-3-27b-it.toml b/providers/chutes/models/unsloth/gemma-3-27b-it.toml index 72f993474..2a46b20ee 100644 --- a/providers/chutes/models/unsloth/gemma-3-27b-it.toml +++ b/providers/chutes/models/unsloth/gemma-3-27b-it.toml @@ -1,8 +1,10 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "gemma 3 27b it" family = "unsloth" release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false +last_updated = "2026-04-25" +attachment = true reasoning = false temperature = true tool_call = true @@ -10,9 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.04 -output = 0.15 -cache_read = 0.02 +input = 0.0272 +output = 0.1087 +cache_read = 0.0136 [limit] context = 128_000 diff --git a/providers/chutes/models/unsloth/gemma-3-4b-it.toml b/providers/chutes/models/unsloth/gemma-3-4b-it.toml index dffddfd5b..657e375eb 100644 --- a/providers/chutes/models/unsloth/gemma-3-4b-it.toml +++ b/providers/chutes/models/unsloth/gemma-3-4b-it.toml @@ -1,8 +1,10 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "gemma 3 4b it" family = "unsloth" release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false +last_updated = "2026-04-25" +attachment = true reasoning = false temperature = true tool_call = false @@ -11,7 +13,8 @@ open_weights = true [cost] input = 0.01 -output = 0.03 +output = 0.0272 +cache_read = 0.005 [limit] context = 96_000 diff --git a/providers/chutes/models/zai-org/GLM-4.5-Air.toml b/providers/chutes/models/zai-org/GLM-4.5-Air.toml deleted file mode 100644 index a4dae664d..000000000 --- a/providers/chutes/models/zai-org/GLM-4.5-Air.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "GLM 4.5 Air" -family = "glm" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.05 -output = 0.22 - -[limit] -context = 131_072 -output = 131_072 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/zai-org/GLM-4.5-FP8.toml b/providers/chutes/models/zai-org/GLM-4.5-FP8.toml deleted file mode 100644 index 8796fe678..000000000 --- a/providers/chutes/models/zai-org/GLM-4.5-FP8.toml +++ /dev/null @@ -1,21 +0,0 @@ -name = "GLM 4.5 FP8" -release_date = "2026-01-27" -last_updated = "2026-01-27" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.30 -output = 1.20 - -[limit] -context = 131_072 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/zai-org/GLM-4.5-TEE.toml b/providers/chutes/models/zai-org/GLM-4.5-TEE.toml deleted file mode 100644 index 59437301e..000000000 --- a/providers/chutes/models/zai-org/GLM-4.5-TEE.toml +++ /dev/null @@ -1,25 +0,0 @@ -name = "GLM 4.5 TEE" -family = "glm" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.35 -output = 1.55 - -[limit] -context = 131_072 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/zai-org/GLM-4.6-FP8.toml b/providers/chutes/models/zai-org/GLM-4.6-FP8.toml deleted file mode 100644 index 81a1cb012..000000000 --- a/providers/chutes/models/zai-org/GLM-4.6-FP8.toml +++ /dev/null @@ -1,21 +0,0 @@ -name = "GLM 4.6 FP8" -release_date = "2026-01-27" -last_updated = "2026-01-27" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.30 -output = 1.20 - -[limit] -context = 202_752 -output = 65_535 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/zai-org/GLM-4.6-TEE.toml b/providers/chutes/models/zai-org/GLM-4.6-TEE.toml deleted file mode 100644 index d7c6f7a35..000000000 --- a/providers/chutes/models/zai-org/GLM-4.6-TEE.toml +++ /dev/null @@ -1,26 +0,0 @@ -name = "GLM 4.6 TEE" -family = "glm" -release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.40 -output = 1.70 -cache_read = 0.20 - -[limit] -context = 202_752 -output = 65_536 - -[modalities] -input = ["text"] -output = ["text"] - -[interleaved] -field = "reasoning_content" diff --git a/providers/chutes/models/zai-org/GLM-4.6V.toml b/providers/chutes/models/zai-org/GLM-4.6V.toml index fc5c392d0..dff476025 100644 --- a/providers/chutes/models/zai-org/GLM-4.6V.toml +++ b/providers/chutes/models/zai-org/GLM-4.6V.toml @@ -1,8 +1,10 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "GLM 4.6V" family = "glm" release_date = "2025-12-29" -last_updated = "2026-01-10" -attachment = false +last_updated = "2026-04-25" +attachment = true reasoning = true temperature = true tool_call = true @@ -10,8 +12,8 @@ structured_output = true open_weights = true [cost] -input = 0.30 -output = 0.90 +input = 0.3 +output = 0.9 cache_read = 0.15 [limit] diff --git a/providers/chutes/models/zai-org/GLM-4.7-FP8.toml b/providers/chutes/models/zai-org/GLM-4.7-FP8.toml index 6c82aa4b8..4b8c67dc9 100644 --- a/providers/chutes/models/zai-org/GLM-4.7-FP8.toml +++ b/providers/chutes/models/zai-org/GLM-4.7-FP8.toml @@ -1,6 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "GLM 4.7 FP8" +family = "glm" release_date = "2026-01-27" -last_updated = "2026-01-27" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -9,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.30 -output = 1.20 +input = 0.2989 +output = 1.1957 +cache_read = 0.14945 [limit] context = 202_752 diff --git a/providers/chutes/models/zai-org/GLM-4.7-Flash.toml b/providers/chutes/models/zai-org/GLM-4.7-Flash.toml deleted file mode 100644 index 72e0b3fc6..000000000 --- a/providers/chutes/models/zai-org/GLM-4.7-Flash.toml +++ /dev/null @@ -1,21 +0,0 @@ -name = "GLM 4.7 Flash" -release_date = "2026-01-27" -last_updated = "2026-01-27" -attachment = false -reasoning = true -temperature = true -tool_call = true -structured_output = true -open_weights = true - -[cost] -input = 0.06 -output = 0.35 - -[limit] -context = 202_752 -output = 65_535 - -[modalities] -input = ["text"] -output = ["text"] diff --git a/providers/chutes/models/zai-org/GLM-4.7-TEE.toml b/providers/chutes/models/zai-org/GLM-4.7-TEE.toml index 5e9217cee..3773cd246 100644 --- a/providers/chutes/models/zai-org/GLM-4.7-TEE.toml +++ b/providers/chutes/models/zai-org/GLM-4.7-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "GLM 4.7 TEE" family = "glm" release_date = "2025-12-29" -last_updated = "2026-01-10" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -10,8 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.40 -output = 1.50 +input = 0.39 +output = 1.75 +cache_read = 0.195 [limit] context = 202_752 diff --git a/providers/chutes/models/zai-org/GLM-5-TEE.toml b/providers/chutes/models/zai-org/GLM-5-TEE.toml index e2de76214..cb5799fca 100644 --- a/providers/chutes/models/zai-org/GLM-5-TEE.toml +++ b/providers/chutes/models/zai-org/GLM-5-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "GLM 5 TEE" family = "glm" release_date = "2026-02-14" -last_updated = "2026-02-14" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -11,7 +13,7 @@ open_weights = true [cost] input = 0.95 -output = 3.15 +output = 2.55 cache_read = 0.475 [limit] diff --git a/providers/chutes/models/zai-org/GLM-5-Turbo.toml b/providers/chutes/models/zai-org/GLM-5-Turbo.toml index 10c77e03b..6c631a10e 100644 --- a/providers/chutes/models/zai-org/GLM-5-Turbo.toml +++ b/providers/chutes/models/zai-org/GLM-5-Turbo.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "GLM 5 Turbo" family = "glm" release_date = "2026-03-11" -last_updated = "2026-03-11" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -10,9 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.49 -output = 1.96 -cache_read = 0.245 +input = 0.4891 +output = 1.9565 +cache_read = 0.24455 [limit] context = 202_752 diff --git a/providers/chutes/models/zai-org/GLM-5.1-TEE.toml b/providers/chutes/models/zai-org/GLM-5.1-TEE.toml index 74b9d634c..4a5cc8e45 100644 --- a/providers/chutes/models/zai-org/GLM-5.1-TEE.toml +++ b/providers/chutes/models/zai-org/GLM-5.1-TEE.toml @@ -1,7 +1,9 @@ +# Auto-generated by generate-chutes.ts — do not edit pricing, limits, or capabilities. +# Manual overrides preserved on re-run: name, family, knowledge, interleaved, status name = "GLM 5.1 TEE" family = "glm" release_date = "2026-04-08" -last_updated = "2026-04-08" +last_updated = "2026-04-25" attachment = false reasoning = true temperature = true @@ -10,9 +12,9 @@ structured_output = true open_weights = true [cost] -input = 0.95 -output = 3.15 -cache_read = 0.475 +input = 1.05 +output = 3.5 +cache_read = 0.525 [limit] context = 202_752