feat: add llmgateway.io model sync provider
Add a sync provider for the LLM Gateway (llmgateway.io) aggregator, mirroring its public /v1/models catalog into providers/llmgateway. The gateway exposes an OpenRouter-shaped response, but its supported_parameters and modality data are noisy (it omits "tools" for flagship models yet lists "temperature" for ones marked temperature=false). So the gateway is treated as authoritative only for the volatile, gateway-specific data — cost and served limits — while capability and modality fields stay curated (preserved from the existing entry, which a factored model inherits from its base). Only text-output models are synced. - packages/core/src/sync/providers/llmgateway.ts: new provider - packages/core/src/sync/index.ts: register in providers + aggregators - package.json: add llmgateway:sync script - .github/workflows/sync-models.yml: optional LLMGATEWAY_API_KEY Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -67,6 +67,7 @@ jobs:
|
||||
HF_TOKEN: ${{ secrets.HF_TOKEN }}
|
||||
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
||||
VENICE_API_KEY: ${{ secrets.VENICE_API_KEY }}
|
||||
LLMGATEWAY_API_KEY: ${{ secrets.LLMGATEWAY_API_KEY }}
|
||||
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
|
||||
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
|
||||
GOOGLE_GENERATIVE_AI_API_KEY: ${{ secrets.GOOGLE_GENERATIVE_AI_API_KEY }}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
"databricks:generate": "bun ./packages/core/script/generate-databricks.ts",
|
||||
"helicone:generate": "bun ./packages/core/script/generate-helicone.ts",
|
||||
"huggingface:sync": "bun ./packages/core/script/sync-models.ts huggingface",
|
||||
"llmgateway:sync": "bun ./packages/core/script/sync-models.ts llmgateway",
|
||||
"venice:sync": "bun ./packages/core/script/sync-models.ts venice",
|
||||
"vercel:generate": "bun ./packages/core/script/sync-models.ts vercel",
|
||||
"wandb:generate": "bun ./packages/core/script/generate-wandb.ts",
|
||||
|
||||
@@ -8,6 +8,7 @@ import { baseten } from "./providers/baseten.js";
|
||||
import { cloudflareWorkersAi } from "./providers/cloudflare-workers-ai.js";
|
||||
import { google } from "./providers/google.js";
|
||||
import { huggingface } from "./providers/huggingface.js";
|
||||
import { llmgateway } from "./providers/llmgateway.js";
|
||||
import { openrouter } from "./providers/openrouter.js";
|
||||
import { ovhcloud } from "./providers/ovhcloud.js";
|
||||
import { vercel } from "./providers/vercel.js";
|
||||
@@ -82,6 +83,7 @@ export const providers: {
|
||||
"cloudflare-workers-ai": SyncProvider<any>;
|
||||
google: SyncProvider<any>;
|
||||
huggingface: SyncProvider<any>;
|
||||
llmgateway: SyncProvider<any>;
|
||||
openrouter: SyncProvider<any>;
|
||||
ovhcloud: SyncProvider<any>;
|
||||
vercel: SyncProvider<any>;
|
||||
@@ -92,6 +94,7 @@ export const providers: {
|
||||
"cloudflare-workers-ai": cloudflareWorkersAi,
|
||||
google,
|
||||
huggingface,
|
||||
llmgateway,
|
||||
openrouter,
|
||||
ovhcloud,
|
||||
vercel,
|
||||
@@ -100,7 +103,7 @@ export const providers: {
|
||||
};
|
||||
|
||||
export const groups = {
|
||||
aggregators: ["huggingface", "openrouter", "vercel"],
|
||||
aggregators: ["huggingface", "llmgateway", "openrouter", "vercel"],
|
||||
cloudflare: ["cloudflare-workers-ai"],
|
||||
direct: ["baseten", "google", "ovhcloud", "venice", "xai"],
|
||||
} as const;
|
||||
|
||||
@@ -0,0 +1,217 @@
|
||||
import { z } from "zod";
|
||||
|
||||
import { inferKimiFamily, ModelFamilyValues } from "../../family.js";
|
||||
import type { ExistingModel, SyncProvider, SyncedFullModel, SyncedModel } from "../index.js";
|
||||
import { factorBaseModel } from "./openrouter.js";
|
||||
|
||||
const API_ENDPOINT = "https://api.llmgateway.io/v1/models";
|
||||
|
||||
const Pricing = z.object({
|
||||
prompt: z.string().optional(),
|
||||
completion: z.string().optional(),
|
||||
internal_reasoning: z.string().optional(),
|
||||
input_cache_read: z.string().optional(),
|
||||
input_cache_write: z.string().optional(),
|
||||
});
|
||||
|
||||
export const LLMGatewayModel = z.object({
|
||||
id: z.string(),
|
||||
name: z.string(),
|
||||
created: z.number(),
|
||||
family: z.string().optional(),
|
||||
architecture: z.object({
|
||||
input_modalities: z.array(z.string()),
|
||||
output_modalities: z.array(z.string()),
|
||||
}),
|
||||
pricing: Pricing,
|
||||
context_length: z.number(),
|
||||
supported_parameters: z.array(z.string()),
|
||||
structured_outputs: z.boolean().optional(),
|
||||
}).passthrough();
|
||||
|
||||
export const LLMGatewayResponse = z.object({
|
||||
data: z.array(LLMGatewayModel),
|
||||
}).passthrough();
|
||||
|
||||
export type LLMGatewayModel = z.infer<typeof LLMGatewayModel>;
|
||||
|
||||
export const llmgateway = {
|
||||
id: "llmgateway",
|
||||
name: "LLM Gateway",
|
||||
modelsDir: "providers/llmgateway/models",
|
||||
async fetchModels() {
|
||||
const headers = process.env.LLMGATEWAY_API_KEY
|
||||
? { Authorization: `Bearer ${process.env.LLMGATEWAY_API_KEY}` }
|
||||
: undefined;
|
||||
const response = await fetch(API_ENDPOINT, { headers });
|
||||
if (!response.ok) {
|
||||
throw new Error(`LLM Gateway request failed: ${response.status} ${response.statusText}`);
|
||||
}
|
||||
return response.json();
|
||||
},
|
||||
parseModels(raw) {
|
||||
return LLMGatewayResponse.parse(raw).data.filter((model) => {
|
||||
const output = model.architecture.output_modalities;
|
||||
return output.length === 1 && output[0] === "text";
|
||||
});
|
||||
},
|
||||
translateModel(model, context) {
|
||||
return {
|
||||
id: model.id,
|
||||
model: buildLLMGatewayModel(model, context.existing(model.id)),
|
||||
};
|
||||
},
|
||||
} satisfies SyncProvider<LLMGatewayModel>;
|
||||
|
||||
function dateFromTimestamp(timestamp: number) {
|
||||
return new Date(timestamp * 1000).toISOString().slice(0, 10);
|
||||
}
|
||||
|
||||
function price(value: string | undefined) {
|
||||
if (value === undefined) return undefined;
|
||||
const number = Number(value);
|
||||
return Number.isFinite(number) && number >= 0
|
||||
? Math.round(number * 1_000_000_000_000) / 1_000_000
|
||||
: undefined;
|
||||
}
|
||||
|
||||
// Cache/reasoning prices are reported as "0" when the gateway has no data; treat
|
||||
// those as unknown so we never downgrade a hand-authored value to zero.
|
||||
function nonZeroPrice(value: string | undefined) {
|
||||
const result = price(value);
|
||||
return result !== undefined && result > 0 ? result : undefined;
|
||||
}
|
||||
|
||||
type Modality = "text" | "audio" | "image" | "video" | "pdf";
|
||||
|
||||
function modalities(values: string[], fallback: Modality[]): Modality[] {
|
||||
const allowed = new Set<Modality>(["text", "audio", "image", "video", "pdf"]);
|
||||
const result = values
|
||||
.map((value) => value.toLowerCase())
|
||||
.map((value) => (value === "file" ? "pdf" : value))
|
||||
.filter((value): value is Modality => allowed.has(value as Modality));
|
||||
return [...new Set(result.length > 0 ? result : fallback)];
|
||||
}
|
||||
|
||||
function inferFamily(model: LLMGatewayModel, name: string) {
|
||||
const kimiFamily = inferKimiFamily(model.id, name);
|
||||
if (kimiFamily !== undefined) return kimiFamily;
|
||||
|
||||
const target = `${model.id} ${name}`.toLowerCase();
|
||||
return [...ModelFamilyValues]
|
||||
.sort((a, b) => b.length - a.length)
|
||||
.find((family) => {
|
||||
const value = family.toLowerCase().replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
||||
if (family === "o") {
|
||||
return new RegExp(`(^|[^a-z0-9])${value}(?=\\d|$|[^a-z0-9])`).test(target);
|
||||
}
|
||||
return new RegExp(`(^|[^a-z0-9])${value}(?=$|[^a-z0-9])`).test(target);
|
||||
});
|
||||
}
|
||||
|
||||
function buildLLMGatewayModel(
|
||||
model: LLMGatewayModel,
|
||||
existing: ExistingModel | undefined,
|
||||
): SyncedModel {
|
||||
const prompt = price(model.pricing.prompt);
|
||||
const completion = price(model.pricing.completion);
|
||||
const reasoning = model.supported_parameters.includes("reasoning")
|
||||
|| model.supported_parameters.includes("include_reasoning");
|
||||
const context = model.context_length > 0
|
||||
? model.context_length
|
||||
: existing?.limit?.context ?? model.context_length;
|
||||
|
||||
// The gateway is authoritative for the volatile, gateway-specific data — cost
|
||||
// and served limits. Its supported_parameters / modalities are too noisy to
|
||||
// drive capability fields (it omits "tools" for flagship models yet lists
|
||||
// "temperature" for ones the catalog deliberately marks temperature=false),
|
||||
// so those stay curated: preserved from the existing entry (which, for a
|
||||
// factored model, inherits its base when the field is absent).
|
||||
const cost = prompt !== undefined && completion !== undefined
|
||||
? {
|
||||
input: prompt,
|
||||
output: completion,
|
||||
reasoning: reasoning ? nonZeroPrice(model.pricing.internal_reasoning) ?? existing?.cost?.reasoning : existing?.cost?.reasoning,
|
||||
cache_read: nonZeroPrice(model.pricing.input_cache_read) ?? existing?.cost?.cache_read,
|
||||
cache_write: nonZeroPrice(model.pricing.input_cache_write) ?? existing?.cost?.cache_write,
|
||||
tiers: existing?.cost?.tiers,
|
||||
}
|
||||
: existing?.cost;
|
||||
const limit = {
|
||||
context,
|
||||
input: existing?.limit?.input,
|
||||
output: existing?.limit?.output ?? context,
|
||||
};
|
||||
|
||||
// Existing factored model: refresh cost + limit, keep every authored override
|
||||
// as-is (undefined fields keep inheriting the base model).
|
||||
if (existing?.base_model !== undefined) {
|
||||
return factorBaseModel(
|
||||
existing.base_model,
|
||||
{
|
||||
attachment: existing.attachment,
|
||||
reasoning: existing.reasoning,
|
||||
temperature: existing.temperature,
|
||||
tool_call: existing.tool_call,
|
||||
structured_output: existing.structured_output,
|
||||
status: existing.status,
|
||||
interleaved: existing.interleaved,
|
||||
knowledge: existing.knowledge,
|
||||
modalities: existing.modalities,
|
||||
limit,
|
||||
cost,
|
||||
},
|
||||
limit,
|
||||
existing.base_model_omit,
|
||||
);
|
||||
}
|
||||
|
||||
// Existing full model: refresh cost + limit, preserve curated metadata.
|
||||
if (existing !== undefined) {
|
||||
return {
|
||||
name: existing.name ?? model.name,
|
||||
family: existing.family,
|
||||
release_date: existing.release_date ?? dateFromTimestamp(model.created),
|
||||
last_updated: existing.last_updated ?? dateFromTimestamp(model.created),
|
||||
attachment: existing.attachment ?? false,
|
||||
reasoning: existing.reasoning ?? false,
|
||||
temperature: existing.temperature ?? false,
|
||||
tool_call: existing.tool_call ?? false,
|
||||
structured_output: existing.structured_output,
|
||||
knowledge: existing.knowledge,
|
||||
open_weights: existing.open_weights ?? false,
|
||||
status: existing.status,
|
||||
interleaved: existing.interleaved,
|
||||
cost,
|
||||
limit,
|
||||
modalities: existing.modalities ?? defaultModalities(model),
|
||||
} satisfies SyncedFullModel;
|
||||
}
|
||||
|
||||
// Brand-new model: best-effort translation from the gateway. Capability and
|
||||
// modality data are unreliable here and should be hand-reviewed.
|
||||
const { input, output } = defaultModalities(model);
|
||||
return {
|
||||
name: model.name,
|
||||
family: inferFamily(model, model.name),
|
||||
release_date: dateFromTimestamp(model.created),
|
||||
last_updated: dateFromTimestamp(model.created),
|
||||
attachment: input.some((value) => value !== "text"),
|
||||
reasoning,
|
||||
temperature: model.supported_parameters.includes("temperature"),
|
||||
tool_call: model.supported_parameters.includes("tools")
|
||||
|| model.supported_parameters.includes("tool_choice"),
|
||||
structured_output: model.structured_outputs ?? false,
|
||||
open_weights: false,
|
||||
cost,
|
||||
limit,
|
||||
modalities: { input, output },
|
||||
} satisfies SyncedFullModel;
|
||||
}
|
||||
|
||||
function defaultModalities(model: LLMGatewayModel) {
|
||||
return {
|
||||
input: modalities(model.architecture.input_modalities, ["text"]),
|
||||
output: modalities(model.architecture.output_modalities, ["text"]),
|
||||
};
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
name = "Claude 3.5 Haiku"
|
||||
family = "claude"
|
||||
release_date = "2024-10-22"
|
||||
last_updated = "2024-10-22"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = false
|
||||
open_weights = false
|
||||
status = "deprecated"
|
||||
|
||||
[cost]
|
||||
input = 0.80
|
||||
output = 4.00
|
||||
cache_read = 0.08
|
||||
|
||||
[limit]
|
||||
context = 200_000
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,7 +0,0 @@
|
||||
base_model = "anthropic/claude-3-5-sonnet-20241022"
|
||||
|
||||
[cost]
|
||||
input = 3
|
||||
output = 15
|
||||
cache_read = 0.3
|
||||
cache_write = 3.75
|
||||
@@ -10,9 +10,10 @@ structured_output = false
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 3.00
|
||||
output = 15.00
|
||||
cache_read = 0.30
|
||||
input = 3
|
||||
output = 15
|
||||
cache_read = 0.3
|
||||
cache_write = 3.75
|
||||
|
||||
[limit]
|
||||
context = 200_000
|
||||
@@ -20,4 +21,4 @@ output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
output = ["text"]
|
||||
|
||||
@@ -10,9 +10,10 @@ structured_output = false
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 15.00
|
||||
output = 75.00
|
||||
cache_read = 1.50
|
||||
input = 15
|
||||
output = 75
|
||||
cache_read = 1.5
|
||||
cache_write = 18.75
|
||||
|
||||
[limit]
|
||||
context = 200_000
|
||||
@@ -20,4 +21,4 @@ output = 4_096
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
output = ["text"]
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
base_model = "anthropic/claude-opus-4-20250514"
|
||||
|
||||
[cost]
|
||||
input = 15
|
||||
output = 75
|
||||
cache_read = 1.5
|
||||
cache_write = 18.75
|
||||
@@ -1,7 +0,0 @@
|
||||
base_model = "anthropic/claude-sonnet-4-20250514"
|
||||
|
||||
[cost]
|
||||
input = 3
|
||||
output = 15
|
||||
cache_read = 0.3
|
||||
cache_write = 3.75
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "DeepSeek R1 (0528)"
|
||||
family = "deepseek"
|
||||
release_date = "2025-05-28"
|
||||
last_updated = "2025-05-28"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
temperature = true
|
||||
tool_call = false
|
||||
structured_output = false
|
||||
open_weights = true
|
||||
status = "beta"
|
||||
|
||||
[cost]
|
||||
input = 0.55
|
||||
output = 2.19
|
||||
|
||||
[limit]
|
||||
context = 64_000
|
||||
output = 16_384
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -12,7 +12,7 @@ open_weights = true
|
||||
[cost]
|
||||
input = 0.56
|
||||
output = 1.68
|
||||
cache_read = 0.07
|
||||
cache_read = 0.112
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
|
||||
@@ -12,7 +12,7 @@ open_weights = true
|
||||
[cost]
|
||||
input = 0.28
|
||||
output = 0.42
|
||||
cache_read = 0.056
|
||||
cache_read = 0.028
|
||||
|
||||
[limit]
|
||||
context = 163_840
|
||||
|
||||
@@ -7,3 +7,6 @@ field = "reasoning_content"
|
||||
input = 0.14
|
||||
output = 0.28
|
||||
cache_read = 0.0028
|
||||
|
||||
[limit]
|
||||
context = 1_050_000
|
||||
|
||||
@@ -7,3 +7,6 @@ field = "reasoning_content"
|
||||
input = 0.435
|
||||
output = 0.87
|
||||
cache_read = 0.003625
|
||||
|
||||
[limit]
|
||||
context = 1_050_000
|
||||
|
||||
@@ -4,3 +4,6 @@ status = "deprecated"
|
||||
[cost]
|
||||
input = 0.1
|
||||
output = 0.3
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
name = "Fugu Ultra"
|
||||
release_date = "2026-06-22"
|
||||
last_updated = "2026-06-22"
|
||||
attachment = true
|
||||
reasoning = true
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = false
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 5
|
||||
output = 30
|
||||
cache_read = 0.5
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
output = 1_000_000
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -1,5 +0,0 @@
|
||||
base_model = "google/gemini-2.0-flash-lite"
|
||||
|
||||
[cost]
|
||||
input = 0.075
|
||||
output = 0.3
|
||||
@@ -1,6 +0,0 @@
|
||||
base_model = "google/gemini-2.0-flash"
|
||||
|
||||
[cost]
|
||||
input = 0.1
|
||||
output = 0.4
|
||||
cache_read = 0.025
|
||||
@@ -0,0 +1,23 @@
|
||||
name = "Gemini 2.5 Flash Lite Preview (09-2025)"
|
||||
family = "gemini"
|
||||
release_date = "2025-09-25"
|
||||
last_updated = "2025-09-25"
|
||||
attachment = true
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 0.1
|
||||
output = 0.4
|
||||
cache_read = 0.01
|
||||
|
||||
[limit]
|
||||
context = 1_048_576
|
||||
output = 1_048_576
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -4,4 +4,3 @@ base_model = "google/gemini-2.5-flash-lite"
|
||||
input = 0.1
|
||||
output = 0.4
|
||||
cache_read = 0.01
|
||||
input_audio = 0.3
|
||||
|
||||
@@ -4,4 +4,3 @@ base_model = "google/gemini-2.5-flash"
|
||||
input = 0.3
|
||||
output = 2.5
|
||||
cache_read = 0.03
|
||||
input_audio = 1
|
||||
|
||||
@@ -4,4 +4,3 @@ base_model = "google/gemini-3-flash-preview"
|
||||
input = 0.5
|
||||
output = 3
|
||||
cache_read = 0.05
|
||||
input_audio = 1
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
base_model = "google/gemini-3.1-flash-lite-preview"
|
||||
|
||||
[cost]
|
||||
input = 0.25
|
||||
output = 1.5
|
||||
cache_read = 0.025
|
||||
input_audio = 0.5
|
||||
@@ -4,4 +4,4 @@ base_model = "google/gemini-3.1-flash-lite"
|
||||
input = 0.25
|
||||
output = 1.5
|
||||
cache_read = 0.025
|
||||
input_audio = 0.5
|
||||
cache_write = 0.08333
|
||||
|
||||
@@ -4,4 +4,4 @@ base_model = "google/gemini-3.5-flash"
|
||||
input = 1.5
|
||||
output = 9
|
||||
cache_read = 0.15
|
||||
input_audio = 1.5
|
||||
cache_write = 0.08333
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
name = "Gemma 2 27B IT"
|
||||
family = "gemma"
|
||||
release_date = "2024-06-27"
|
||||
last_updated = "2024-06-27"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = false
|
||||
structured_output = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.08
|
||||
output = 0.08
|
||||
|
||||
[limit]
|
||||
context = 8_192
|
||||
output = 16_384
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,22 +0,0 @@
|
||||
name = "Gemma 3 1B IT"
|
||||
family = "gemma"
|
||||
release_date = "2025-03-12"
|
||||
last_updated = "2025-03-12"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = false
|
||||
structured_output = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.08
|
||||
output = 0.30
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
output = 16_384
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,22 +0,0 @@
|
||||
name = "Gemma 3 27B"
|
||||
family = "gemma"
|
||||
release_date = "2025-03-12"
|
||||
last_updated = "2025-03-12"
|
||||
attachment = true
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = false
|
||||
structured_output = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.27
|
||||
output = 0.27
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 16_384
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -5,3 +5,6 @@ input = 0.2
|
||||
output = 1.1
|
||||
cache_read = 0.03
|
||||
cache_write = 0
|
||||
|
||||
[limit]
|
||||
context = 131_000
|
||||
|
||||
@@ -5,3 +5,6 @@ input = 0
|
||||
output = 0
|
||||
cache_read = 0
|
||||
cache_write = 0
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
|
||||
@@ -5,3 +5,6 @@ input = 0.6
|
||||
output = 2.2
|
||||
cache_read = 0.11
|
||||
cache_write = 0
|
||||
|
||||
[limit]
|
||||
context = 131_000
|
||||
|
||||
@@ -3,3 +3,7 @@ base_model = "zhipuai/glm-4.5v"
|
||||
[cost]
|
||||
input = 0.6
|
||||
output = 1.8
|
||||
cache_read = 0.11
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
|
||||
@@ -3,3 +3,7 @@ base_model = "zhipuai/glm-4.6v"
|
||||
[cost]
|
||||
input = 0.3
|
||||
output = 0.9
|
||||
cache_read = 0.05
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
name = "GLM-4.7 Flash (Free)"
|
||||
family = "glm"
|
||||
release_date = "2025-12-22"
|
||||
last_updated = "2025-12-22"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = false
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 0
|
||||
output = 0
|
||||
|
||||
[limit]
|
||||
context = 200_000
|
||||
output = 200_000
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,7 +1,7 @@
|
||||
base_model = "zhipuai/glm-4.7-flash"
|
||||
|
||||
[cost]
|
||||
input = 0
|
||||
output = 0
|
||||
cache_read = 0
|
||||
input = 0.06
|
||||
output = 0.4
|
||||
cache_read = 0.01
|
||||
cache_write = 0
|
||||
|
||||
@@ -4,7 +4,10 @@ base_model = "zhipuai/glm-5.1"
|
||||
field = "reasoning_content"
|
||||
|
||||
[cost]
|
||||
input = 6
|
||||
output = 24
|
||||
cache_read = 1.3
|
||||
input = 1.4
|
||||
output = 4.4
|
||||
cache_read = 0.26
|
||||
cache_write = 0
|
||||
|
||||
[limit]
|
||||
context = 204_800
|
||||
|
||||
@@ -8,3 +8,6 @@ input = 1
|
||||
output = 3.2
|
||||
cache_read = 0.2
|
||||
cache_write = 0
|
||||
|
||||
[limit]
|
||||
context = 203_000
|
||||
|
||||
@@ -4,3 +4,6 @@ base_model = "openai/gpt-4.1-mini"
|
||||
input = 0.4
|
||||
output = 1.6
|
||||
cache_read = 0.1
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
|
||||
@@ -4,3 +4,6 @@ base_model = "openai/gpt-4.1-nano"
|
||||
input = 0.1
|
||||
output = 0.4
|
||||
cache_read = 0.025
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
|
||||
@@ -4,3 +4,6 @@ base_model = "openai/gpt-4.1"
|
||||
input = 2
|
||||
output = 8
|
||||
cache_read = 0.5
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
|
||||
@@ -10,7 +10,3 @@ tier = { type = "context", size = 272_000 }
|
||||
input = 10
|
||||
output = 45
|
||||
cache_read = 1
|
||||
|
||||
[experimental.modes.fast]
|
||||
cost = { input = 12.5, output = 75, cache_read = 1.25 }
|
||||
provider = { body = { service_tier = "priority" } }
|
||||
|
||||
@@ -10,8 +10,8 @@ structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 0.05
|
||||
output = 0.25
|
||||
input = 0.15
|
||||
output = 0.75
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
|
||||
@@ -10,8 +10,8 @@ structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 0.04
|
||||
output = 0.15
|
||||
input = 0.1
|
||||
output = 0.5
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
name = "Grok 4.1 Fast Non-Reasoning"
|
||||
family = "grok"
|
||||
release_date = "2025-11-19"
|
||||
last_updated = "2025-11-19"
|
||||
attachment = true
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = false
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 0.2
|
||||
output = 0.5
|
||||
cache_read = 0.05
|
||||
|
||||
[limit]
|
||||
context = 2_000_000
|
||||
output = 2_000_000
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -1,8 +1,8 @@
|
||||
base_model = "xai/grok-4.20-0309-non-reasoning"
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 2.5
|
||||
input = 2
|
||||
output = 6
|
||||
cache_read = 0.2
|
||||
|
||||
[[cost.tiers]]
|
||||
@@ -10,3 +10,6 @@ tier = { type = "context", size = 200_000 }
|
||||
input = 2.5
|
||||
output = 5
|
||||
cache_read = 0.4
|
||||
|
||||
[limit]
|
||||
context = 2_000_000
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
base_model = "xai/grok-4.20-0309-reasoning"
|
||||
reasoning_options = [{ type = "effort", values = ["low", "medium", "high"] }]
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 2.5
|
||||
input = 2
|
||||
output = 6
|
||||
cache_read = 0.2
|
||||
|
||||
[[cost.tiers]]
|
||||
@@ -11,3 +14,6 @@ tier = { type = "context", size = 200_000 }
|
||||
input = 2.5
|
||||
output = 5
|
||||
cache_read = 0.4
|
||||
|
||||
[limit]
|
||||
context = 2_000_000
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
base_model = "xai/grok-4.20-0309-non-reasoning"
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 2.5
|
||||
input = 2
|
||||
output = 6
|
||||
cache_read = 0.2
|
||||
|
||||
[[cost.tiers]]
|
||||
@@ -10,3 +10,6 @@ tier = { type = "context", size = 200_000 }
|
||||
input = 2.5
|
||||
output = 5
|
||||
cache_read = 0.4
|
||||
|
||||
[limit]
|
||||
context = 2_000_000
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
base_model = "xai/grok-4.20-0309-reasoning"
|
||||
reasoning_options = [{ type = "effort", values = ["low", "medium", "high"] }]
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 2.5
|
||||
input = 2
|
||||
output = 6
|
||||
cache_read = 0.2
|
||||
|
||||
[[cost.tiers]]
|
||||
@@ -11,3 +14,6 @@ tier = { type = "context", size = 200_000 }
|
||||
input = 2.5
|
||||
output = 5
|
||||
cache_read = 0.4
|
||||
|
||||
[limit]
|
||||
context = 2_000_000
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
base_model = "xai/grok-4.3"
|
||||
reasoning_options = [{ type = "effort", values = ["low", "medium", "high"] }]
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 2.5
|
||||
cache_read = 0.2
|
||||
cache_read = 0.3125
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { type = "context", size = 200_000 }
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
name = "Grok 4 Fast Reasoning"
|
||||
family = "grok"
|
||||
release_date = "2025-07-09"
|
||||
last_updated = "2025-07-09"
|
||||
attachment = true
|
||||
reasoning = true
|
||||
reasoning_options = [{ type = "effort", values = ["low", "medium", "high"] }]
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 0.20
|
||||
output = 0.50
|
||||
cache_read = 0.05
|
||||
|
||||
[limit]
|
||||
context = 2_000_000
|
||||
output = 30_000
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
+8
-7
@@ -1,22 +1,23 @@
|
||||
name = "Grok 4 (0709)"
|
||||
name = "Grok 4"
|
||||
family = "grok"
|
||||
release_date = "2025-07-09"
|
||||
last_updated = "2025-07-09"
|
||||
attachment = false
|
||||
attachment = true
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
structured_output = false
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 3.00
|
||||
output = 15.00
|
||||
input = 3
|
||||
output = 15
|
||||
cache_read = 0.75
|
||||
|
||||
[limit]
|
||||
context = 256_000
|
||||
output = 256_000
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -1,22 +0,0 @@
|
||||
name = "Hermes 2 Pro Llama 3 8B"
|
||||
family = "hermes"
|
||||
release_date = "2024-05-27"
|
||||
last_updated = "2024-05-27"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = false
|
||||
structured_output = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.14
|
||||
output = 0.14
|
||||
|
||||
[limit]
|
||||
context = 8_192
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -10,12 +10,12 @@ structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.60
|
||||
output = 2.50
|
||||
cache_read = 0.12
|
||||
input = 1
|
||||
output = 3
|
||||
cache_read = 0.5
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
context = 256_000
|
||||
output = 16_384
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Llama 3.1 8B Instruct"
|
||||
family = "llama"
|
||||
release_date = "2024-07-23"
|
||||
last_updated = "2024-07-23"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
open_weights = true
|
||||
status = "beta"
|
||||
|
||||
[cost]
|
||||
input = 0.22
|
||||
output = 0.22
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 2_048
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +1,8 @@
|
||||
name = "Llama 3.1 Nemotron Ultra 253B"
|
||||
base_model = "nvidia/llama-3.1-nemotron-ultra-253b"
|
||||
family = "llama"
|
||||
release_date = "2025-04-07"
|
||||
last_updated = "2025-04-07"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = false
|
||||
structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.60
|
||||
output = 1.80
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
input = 0.6
|
||||
output = 1.8
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
base_model = "meta/llama-3.3-70b-instruct"
|
||||
|
||||
[cost]
|
||||
input = 0
|
||||
output = 0
|
||||
input = 0.13
|
||||
output = 0.4
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
|
||||
@@ -14,7 +14,7 @@ input = 0.24
|
||||
output = 0.97
|
||||
|
||||
[limit]
|
||||
context = 8_192
|
||||
context = 1_048_576
|
||||
output = 2_048
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -14,7 +14,7 @@ input = 0.17
|
||||
output = 0.66
|
||||
|
||||
[limit]
|
||||
context = 8_192
|
||||
context = 131_072
|
||||
output = 2_048
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Llama 4 Scout"
|
||||
family = "llama"
|
||||
release_date = "2025-04-05"
|
||||
last_updated = "2025-04-05"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = false
|
||||
open_weights = true
|
||||
status = "beta"
|
||||
|
||||
[cost]
|
||||
input = 0.18
|
||||
output = 0.59
|
||||
|
||||
[limit]
|
||||
context = 32_768
|
||||
output = 16_384
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,10 +0,0 @@
|
||||
base_model = "xiaomi/mimo-v2-flash"
|
||||
reasoning_options = [{ type = "toggle" }]
|
||||
|
||||
[interleaved]
|
||||
field = "reasoning_content"
|
||||
|
||||
[cost]
|
||||
input = 0.1
|
||||
output = 0.3
|
||||
cache_read = 0.01
|
||||
@@ -8,3 +8,6 @@ field = "reasoning_content"
|
||||
input = 0.4
|
||||
output = 2
|
||||
cache_read = 0.08
|
||||
|
||||
[limit]
|
||||
context = 256_000
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
base_model = "xiaomi/mimo-v2-pro"
|
||||
reasoning_options = [{ type = "toggle" }]
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle"
|
||||
|
||||
[interleaved]
|
||||
field = "reasoning_content"
|
||||
@@ -14,3 +16,6 @@ tier = { type = "context", size = 256_000 }
|
||||
input = 2
|
||||
output = 6
|
||||
cache_read = 0.4
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
base_model = "xiaomi/mimo-v2.5-pro"
|
||||
reasoning_options = [{ type = "toggle" }]
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle"
|
||||
|
||||
[interleaved]
|
||||
field = "reasoning_content"
|
||||
|
||||
[cost]
|
||||
input = 1
|
||||
output = 3
|
||||
cache_read = 0.2
|
||||
input = 0.435
|
||||
output = 0.87
|
||||
cache_read = 0.0036
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { type = "context", size = 256_000 }
|
||||
input = 2
|
||||
output = 6
|
||||
cache_read = 0.4
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
base_model = "xiaomi/mimo-v2.5"
|
||||
reasoning_options = [{ type = "toggle" }]
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle"
|
||||
|
||||
[interleaved]
|
||||
field = "reasoning_content"
|
||||
|
||||
[cost]
|
||||
input = 0.4
|
||||
output = 2
|
||||
cache_read = 0.08
|
||||
input = 0.14
|
||||
output = 0.28
|
||||
cache_read = 0.0028
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { type = "context", size = 256_000 }
|
||||
input = 0.8
|
||||
output = 4
|
||||
cache_read = 0.16
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
base_model = "minimax/MiniMax-M2.1"
|
||||
|
||||
[cost]
|
||||
input = 0.3
|
||||
output = 1.2
|
||||
input = 0.27
|
||||
output = 1.1
|
||||
|
||||
@@ -3,5 +3,5 @@ base_model = "minimax/MiniMax-M2.5-highspeed"
|
||||
[cost]
|
||||
input = 0.6
|
||||
output = 2.4
|
||||
cache_read = 0.06
|
||||
cache_read = 0.03
|
||||
cache_write = 0.375
|
||||
|
||||
@@ -5,3 +5,6 @@ input = 0.3
|
||||
output = 1.2
|
||||
cache_read = 0.03
|
||||
cache_write = 0.375
|
||||
|
||||
[limit]
|
||||
context = 228_700
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
base_model = "minimax/MiniMax-M2"
|
||||
|
||||
[cost]
|
||||
input = 0.3
|
||||
output = 1.2
|
||||
input = 0.2
|
||||
output = 1
|
||||
cache_read = 0.03
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
base_model = "mistral/mistral-large-latest"
|
||||
|
||||
[cost]
|
||||
input = 0.5
|
||||
output = 1.5
|
||||
input = 4
|
||||
output = 12
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
base_model = "nvidia/nemotron-3-ultra-550b-a55b"
|
||||
reasoning_options = [{ type = "toggle" }]
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle"
|
||||
|
||||
[cost]
|
||||
input = 0.5
|
||||
output = 2.5
|
||||
cache_read = 0.15
|
||||
|
||||
[limit]
|
||||
context = 262_144
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
base_model = "mistral/pixtral-large-latest"
|
||||
|
||||
[cost]
|
||||
input = 2
|
||||
output = 6
|
||||
input = 4
|
||||
output = 12
|
||||
|
||||
@@ -3,3 +3,5 @@ base_model = "alibaba/qwen-flash"
|
||||
[cost]
|
||||
input = 0.05
|
||||
output = 0.4
|
||||
cache_read = 0.01
|
||||
cache_write = 0.0625
|
||||
|
||||
@@ -10,8 +10,8 @@ structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 0.345
|
||||
output = 1.377
|
||||
input = 1.6
|
||||
output = 6.4
|
||||
|
||||
[limit]
|
||||
context = 32_768
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
base_model = "alibaba/qwen-omni-turbo"
|
||||
|
||||
[cost]
|
||||
input = 0.07
|
||||
output = 0.27
|
||||
input_audio = 4.44
|
||||
output_audio = 8.89
|
||||
input = 0.2
|
||||
output = 0.8
|
||||
|
||||
@@ -10,11 +10,13 @@ structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 0.115
|
||||
output = 0.287
|
||||
input = 0.4
|
||||
output = 1.2
|
||||
cache_read = 0.08
|
||||
cache_write = 0.5
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
context = 1_000_000
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -4,3 +4,8 @@ base_model = "alibaba/qwen-plus"
|
||||
input = 0.4
|
||||
output = 1.2
|
||||
reasoning = 4
|
||||
cache_read = 0.08
|
||||
cache_write = 0.5
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
|
||||
@@ -2,4 +2,4 @@ base_model = "alibaba/qwen-vl-plus"
|
||||
|
||||
[cost]
|
||||
input = 0.21
|
||||
output = 0.63
|
||||
output = 0.64
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
base_model = "alibaba/qwen2-5-vl-72b-instruct"
|
||||
|
||||
[cost]
|
||||
input = 2.8
|
||||
output = 8.4
|
||||
input = 0.13
|
||||
output = 0.4
|
||||
|
||||
[limit]
|
||||
context = 32_768
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
name = "Qwen2.5 Coder 7B"
|
||||
family = "qwen"
|
||||
release_date = "2024-09-19"
|
||||
last_updated = "2024-09-19"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
tool_call = false
|
||||
structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.05
|
||||
output = 0.05
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -10,11 +10,11 @@ structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.20
|
||||
output = 0.80
|
||||
input = 0.2
|
||||
output = 0.8
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
context = 40_960
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -10,11 +10,11 @@ structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.09
|
||||
output = 0.58
|
||||
input = 0.2
|
||||
output = 0.6
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
context = 262_000
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -10,11 +10,11 @@ structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.20
|
||||
output = 0.60
|
||||
input = 0.2
|
||||
output = 0.6
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
context = 262_000
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
name = "Qwen3 30B A3B FP8"
|
||||
family = "qwen"
|
||||
release_date = "2025-04-28"
|
||||
last_updated = "2025-04-28"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.10
|
||||
output = 0.10
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -10,11 +10,11 @@ structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.10
|
||||
output = 0.30
|
||||
input = 0.1
|
||||
output = 0.3
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
context = 262_000
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
name = "Qwen3 30B A3B Thinking (2507)"
|
||||
family = "qwen"
|
||||
release_date = "2025-07-08"
|
||||
last_updated = "2025-07-08"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.10
|
||||
output = 0.10
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,22 +0,0 @@
|
||||
name = "Qwen3 32B FP8"
|
||||
family = "qwen"
|
||||
release_date = "2025-04-28"
|
||||
last_updated = "2025-04-28"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.10
|
||||
output = 0.10
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,6 +1,9 @@
|
||||
base_model = "alibaba/qwen3-32b"
|
||||
|
||||
[cost]
|
||||
input = 0.7
|
||||
output = 2.8
|
||||
input = 0.1
|
||||
output = 0.3
|
||||
reasoning = 8.4
|
||||
|
||||
[limit]
|
||||
context = 32_768
|
||||
|
||||
@@ -14,7 +14,7 @@ input = 0.03
|
||||
output = 0.03
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
context = 128_000
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
base_model = "alibaba/qwen3-coder-30b-a3b-instruct"
|
||||
|
||||
[cost]
|
||||
input = 0.45
|
||||
output = 2.25
|
||||
input = 0.1
|
||||
output = 0.3
|
||||
|
||||
[limit]
|
||||
context = 262_000
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
base_model = "alibaba/qwen3-coder-480b-a35b-instruct"
|
||||
|
||||
[cost]
|
||||
input = 1.5
|
||||
output = 7.5
|
||||
input = 0.4
|
||||
output = 1.8
|
||||
|
||||
@@ -3,3 +3,5 @@ base_model = "alibaba/qwen3-coder-flash"
|
||||
[cost]
|
||||
input = 0.3
|
||||
output = 1.5
|
||||
cache_read = 0.06
|
||||
cache_write = 0.375
|
||||
|
||||
@@ -12,6 +12,7 @@ open_weights = false
|
||||
[cost]
|
||||
input = 0.108
|
||||
output = 0.675
|
||||
cache_read = 0.06
|
||||
|
||||
[limit]
|
||||
context = 262_144
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
base_model = "alibaba/qwen3-coder-plus"
|
||||
|
||||
[cost]
|
||||
input = 1
|
||||
output = 5
|
||||
input = 6
|
||||
output = 60
|
||||
cache_read = 1.2
|
||||
cache_write = 7.5
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
|
||||
@@ -10,12 +10,13 @@ structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 0.359
|
||||
output = 1.434
|
||||
cache_read = 0.072
|
||||
input = 1.2
|
||||
output = 6
|
||||
cache_read = 0.24
|
||||
cache_write = 1.5
|
||||
|
||||
[limit]
|
||||
context = 256_000
|
||||
context = 262_144
|
||||
output = 32_800
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
base_model = "alibaba/qwen3-max"
|
||||
|
||||
[cost]
|
||||
input = 1.2
|
||||
output = 6
|
||||
input = 3
|
||||
output = 15
|
||||
cache_read = 0.6
|
||||
cache_write = 3.75
|
||||
|
||||
@@ -10,8 +10,8 @@ structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.30
|
||||
output = 1.50
|
||||
input = 0.5
|
||||
output = 2
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
|
||||
@@ -10,12 +10,12 @@ structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 0.022
|
||||
output = 0.215
|
||||
cache_read = 0.0044
|
||||
input = 0.05
|
||||
output = 0.4
|
||||
cache_read = 0.01
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
context = 262_144
|
||||
output = 32_000
|
||||
|
||||
[modalities]
|
||||
|
||||
@@ -4,3 +4,5 @@ base_model = "alibaba/qwen3-vl-plus"
|
||||
input = 0.2
|
||||
output = 1.6
|
||||
reasoning = 4.8
|
||||
cache_read = 0.04
|
||||
cache_write = 0.25
|
||||
|
||||
@@ -12,3 +12,6 @@ input = 2
|
||||
output = 6
|
||||
cache_read = 0.2
|
||||
cache_write = 2.5
|
||||
|
||||
[limit]
|
||||
context = 262_144
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user