Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 18cd726008 | |||
| 52d5045ee7 | |||
| 4faf76317a | |||
| efb5d8ea0d | |||
| 0273194a65 | |||
| a034112075 | |||
| b91080aa0e | |||
| 6fda2e07c2 | |||
| 24b7a2aa4c | |||
| d1d08289ac | |||
| 9875219078 | |||
| ec23529c0c | |||
| 62ef55a446 | |||
| 6eaf975918 | |||
| f8ac4b4fb1 | |||
| 03e2178662 | |||
| 03e495d946 | |||
| 1f5a03df40 | |||
| 0968fea09f | |||
| 1fb770040a | |||
| 1efc768ae5 | |||
| c3aab14477 | |||
| 236d2dd99a | |||
| ad211c8f8f | |||
| 38ccccc20d | |||
| cce20188e5 | |||
| 2acddd4818 | |||
| c67dbc2e02 | |||
| 790e5cb842 | |||
| 73160c42bd | |||
| ff9bc91921 | |||
| 9c249c78cb | |||
| c40d2ae925 | |||
| 71b3ca345d | |||
| 0b0414d78e | |||
| f5edd52931 | |||
| d53651e3d9 | |||
| 2e25bad01c | |||
| fcf16dcf64 | |||
| 8a61715de2 | |||
| 5d913d45eb |
@@ -38,6 +38,8 @@ For model catalog changes, enforce these review rules:
|
||||
- Treat a missing compliant logo for a new provider as a merge blocker. The SVG must use `currentColor`, have no fixed size or hardcoded color, and preferably use a square `viewBox`.
|
||||
- Treat duplicated provider-agnostic metadata as a merge blocker when a matching `models/<provider>/<model>.toml` exists; the provider entry must use `base_model` and retain only provider-specific fields and overrides.
|
||||
- Treat missing `reasoning_options` on `reasoning = true` provider models as a merge blocker. Options describe controls exposed by that inference provider, not merely by the upstream model. An empty array is correct when reasoning exists but no caller control is verified.
|
||||
- Before reporting a `reasoning_options` problem, compare the proposed model with existing entries for the same underlying model that use a comparable request surface. Determine that surface from the effective `npm`, provider API shape, and any model-level provider override—not from the model family alone. Prefer native-provider examples when the target uses the native SDK (for example, an Anthropic model through `@ai-sdk/anthropic` should be compared with the Anthropic provider). Prefer established OpenAI-compatible gateway examples when the target uses an OpenAI-compatible chat-completions surface (for example, Cloudflare AI Gateway may be usefully compared with OpenRouter). Do not compare a native Anthropic route with an OpenAI-compatible gateway as though their controls were interchangeable.
|
||||
- Use those peer entries as required review context, not as values to copy mechanically or as standalone proof. Consistent same-model, same-surface examples make a proposed option more plausible and help identify likely omissions or contradictions; target-provider documentation, endpoint metadata, adapter behavior, or reproduced requests still override peer precedent. A lack of bespoke provider documentation is not by itself an action item when the target surface and strong peer examples support the proposal and the diff contains no concrete contradictory evidence. Conversely, do not accept or reject `reasoning_options = []` mechanically: explain the specific mismatch with the target API shape or comparable providers before requesting a change.
|
||||
- Do not treat absence of a sync module as a blocker. Recommend one only when a context-rich provider API can authoritatively populate model data or delete models no longer served.
|
||||
- Data-changing PRs should cite direct provider pricing, model documentation, or API references in the PR body. Missing citations are not by themselves a merge blocker, but should be reported as a low-severity request for evidence when material factual changes otherwise cannot be reviewed. Prefer first-party sources and require each citation to state what it supports.
|
||||
- You cannot fetch citation URLs. Assess whether citations are present, direct, and mapped to claims, but never claim you opened a URL or verified its contents. A URL or PR assertion alone does not prove a disputed value.
|
||||
|
||||
@@ -15,6 +15,7 @@ import { deepinfra } from "./providers/deepinfra.js";
|
||||
import { digitalocean } from "./providers/digitalocean.js";
|
||||
import { empiriolabs } from "./providers/empiriolabs.js";
|
||||
import { google } from "./providers/google.js";
|
||||
import { hyper } from "./providers/hyper.js";
|
||||
import { huggingface } from "./providers/huggingface.js";
|
||||
import { kilo } from "./providers/kilo.js";
|
||||
import { llmgateway } from "./providers/llmgateway.js";
|
||||
@@ -114,8 +115,9 @@ export const providers: {
|
||||
digitalocean: SyncProvider<any>;
|
||||
empiriolabs: SyncProvider<any>;
|
||||
google: SyncProvider<any>;
|
||||
kilo: SyncProvider<any>;
|
||||
hyper: SyncProvider<any>;
|
||||
huggingface: SyncProvider<any>;
|
||||
kilo: SyncProvider<any>;
|
||||
llmgateway: SyncProvider<any>;
|
||||
openai: SyncProvider<any>;
|
||||
openrouter: SyncProvider<any>;
|
||||
@@ -136,8 +138,9 @@ export const providers: {
|
||||
digitalocean,
|
||||
empiriolabs,
|
||||
google,
|
||||
kilo,
|
||||
hyper,
|
||||
huggingface,
|
||||
kilo,
|
||||
llmgateway,
|
||||
openai,
|
||||
openrouter,
|
||||
@@ -152,7 +155,7 @@ export const providers: {
|
||||
export const groups = {
|
||||
aggregators: ["crossmodel", "empiriolabs", "huggingface", "kilo", "llmgateway", "openrouter", "vercel"],
|
||||
cloudflare: ["cloudflare-workers-ai"],
|
||||
direct: ["ambient", "anthropic", "baseten", "chutes", "deepinfra", "digitalocean", "google", "openai", "ovhcloud", "pioneer", "venice", "wandb", "xai"],
|
||||
direct: ["ambient", "anthropic", "baseten", "chutes", "deepinfra", "digitalocean", "google", "hyper", "openai", "ovhcloud", "pioneer", "venice", "wandb", "xai"],
|
||||
} as const;
|
||||
|
||||
type ProviderID = keyof typeof providers;
|
||||
|
||||
@@ -0,0 +1,156 @@
|
||||
import { existsSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
import { z } from "zod";
|
||||
|
||||
import type { ExistingModel, SyncProvider, SyncedFullModel, SyncedModel } from "../index.js";
|
||||
import { factorBaseModel } from "./openrouter.js";
|
||||
|
||||
const API_ENDPOINT = "https://hyper.charm.land/v1/models";
|
||||
const MODELS_DIR = path.join(import.meta.dirname, "..", "..", "..", "..", "..", "models");
|
||||
|
||||
function baseModelExists(modelID: string) {
|
||||
return existsSync(path.join(MODELS_DIR, `${modelID}.toml`));
|
||||
}
|
||||
|
||||
const ReasoningEffort = z.enum([
|
||||
"default",
|
||||
"max",
|
||||
"low",
|
||||
"high",
|
||||
"none",
|
||||
"medium",
|
||||
"minimal",
|
||||
"xhigh",
|
||||
]);
|
||||
|
||||
export const HyperModel = z.object({
|
||||
id: z.string(),
|
||||
created: z.number(),
|
||||
display_name: z.string(),
|
||||
context_window: z.number(),
|
||||
max_output_tokens: z.number(),
|
||||
capabilities: z.object({
|
||||
vision: z.boolean().optional(),
|
||||
}).optional(),
|
||||
reasoning: z.object({
|
||||
effort_levels: z.array(z.object({
|
||||
value: z.string(),
|
||||
display: z.string().optional(),
|
||||
})).optional(),
|
||||
}).optional(),
|
||||
pricing: z.object({
|
||||
input: z.number().optional(),
|
||||
output: z.number().optional(),
|
||||
cache_hit: z.number().optional(),
|
||||
cache_create: z.number().optional(),
|
||||
}).optional(),
|
||||
}).passthrough();
|
||||
|
||||
const HyperResponse = z.object({
|
||||
data: z.array(HyperModel),
|
||||
}).passthrough();
|
||||
|
||||
export type HyperModel = z.infer<typeof HyperModel>;
|
||||
|
||||
export const hyper = {
|
||||
id: "hyper",
|
||||
name: "Charm Hyper",
|
||||
modelsDir: "providers/hyper/models",
|
||||
preserveBaseModels: false,
|
||||
async fetchModels() {
|
||||
const key = process.env.HYPER_API_KEY;
|
||||
const response = await fetch(API_ENDPOINT, key
|
||||
? { headers: { Authorization: `Bearer ${key}` } }
|
||||
: undefined);
|
||||
if (!response.ok) {
|
||||
throw new Error(`Hyper models request failed: ${response.status} ${response.statusText}`);
|
||||
}
|
||||
return response.json();
|
||||
},
|
||||
parseModels(raw) {
|
||||
return HyperResponse.parse(raw).data;
|
||||
},
|
||||
translateModel(model, context) {
|
||||
const existing = context.existing(model.id);
|
||||
const baseModel = existing?.base_model;
|
||||
if (baseModel === undefined || !baseModelExists(baseModel)) return undefined;
|
||||
return {
|
||||
id: model.id,
|
||||
model: buildHyperModel(model, existing, baseModel),
|
||||
};
|
||||
},
|
||||
} satisfies SyncProvider<HyperModel>;
|
||||
|
||||
function dateFromTimestamp(timestamp: number) {
|
||||
return new Date(timestamp * 1000).toISOString().slice(0, 10);
|
||||
}
|
||||
|
||||
function reasoningOptions(model: HyperModel) {
|
||||
const effortLevels = model.reasoning?.effort_levels?.map((level) => level.value) ?? [];
|
||||
if (effortLevels.length === 0) return [];
|
||||
const values = effortLevels.filter(isReasoningEffort);
|
||||
if (values.length === 0) return [{ type: "toggle" as const }];
|
||||
return [{ type: "effort" as const, values }];
|
||||
}
|
||||
|
||||
function isReasoningEffort(value: string): value is z.infer<typeof ReasoningEffort> {
|
||||
return ReasoningEffort.safeParse(value).success;
|
||||
}
|
||||
|
||||
function price(value: number) {
|
||||
return Math.round(value * 1_000_000) / 1_000_000;
|
||||
}
|
||||
|
||||
function positivePrice(value: number | undefined) {
|
||||
return value !== undefined && value > 0 ? price(value) : undefined;
|
||||
}
|
||||
|
||||
function buildCost(model: HyperModel, existing: ExistingModel["cost"] | undefined) {
|
||||
const pricing = model.pricing;
|
||||
if (pricing?.input === undefined || pricing.output === undefined) return existing;
|
||||
|
||||
return {
|
||||
input: price(pricing.input),
|
||||
output: price(pricing.output),
|
||||
cache_read: positivePrice(pricing.cache_hit)
|
||||
?? (pricing.cache_hit === undefined ? existing?.cache_read : undefined),
|
||||
cache_write: positivePrice(pricing.cache_create)
|
||||
?? (pricing.cache_create === undefined ? existing?.cache_write : undefined),
|
||||
reasoning: existing?.reasoning,
|
||||
};
|
||||
}
|
||||
|
||||
function hyperModalities(vision: boolean) {
|
||||
const input = vision ? ["text" as const, "image" as const] : ["text" as const];
|
||||
return {
|
||||
input,
|
||||
output: ["text" as const],
|
||||
};
|
||||
}
|
||||
|
||||
export function buildHyperModel(
|
||||
model: HyperModel,
|
||||
existing: ExistingModel | undefined,
|
||||
baseModel: string,
|
||||
today = new Date().toISOString().slice(0, 10),
|
||||
): SyncedModel {
|
||||
const limit = {
|
||||
context: model.context_window,
|
||||
input: existing?.limit?.input,
|
||||
output: model.max_output_tokens,
|
||||
};
|
||||
const modalities = hyperModalities(model.capabilities?.vision ?? false);
|
||||
const values: Partial<SyncedFullModel> = {
|
||||
attachment: modalities.input.some((value) => value !== "text"),
|
||||
modalities,
|
||||
reasoning: model.reasoning != null,
|
||||
reasoning_options: model.reasoning != null ? reasoningOptions(model) : undefined,
|
||||
release_date: existing?.release_date ?? dateFromTimestamp(model.created),
|
||||
last_updated: existing?.last_updated ?? today,
|
||||
interleaved: existing?.interleaved,
|
||||
cost: buildCost(model, existing?.cost),
|
||||
limit,
|
||||
};
|
||||
|
||||
return factorBaseModel(baseModel, values, limit, existing?.base_model_omit);
|
||||
}
|
||||
@@ -19,6 +19,7 @@ import {
|
||||
resolveDigitalOceanBaseModel,
|
||||
type DigitalOceanSourceModel,
|
||||
} from "../src/sync/providers/digitalocean.js";
|
||||
import { buildHyperModel, type HyperModel } from "../src/sync/providers/hyper.js";
|
||||
import {
|
||||
buildEmpiriolabsModel,
|
||||
empiriolabs,
|
||||
@@ -791,6 +792,66 @@ function deepInfraModel(model_name: string, tags: string[]): DeepInfraModel {
|
||||
};
|
||||
}
|
||||
|
||||
test("syncs Hyper pricing from catalog input/output fields", () => {
|
||||
const model = hyperModel({
|
||||
id: "minimax-m2.7",
|
||||
reasoning: undefined,
|
||||
pricing: {
|
||||
input: 0.3,
|
||||
output: 1.2,
|
||||
cache_hit: 0.06,
|
||||
cache_create: 0.03,
|
||||
},
|
||||
});
|
||||
|
||||
expect(buildHyperModel(model, undefined, "minimax/MiniMax-M2.7")).toMatchObject({
|
||||
cost: { input: 0.3, output: 1.2, cache_read: 0.06, cache_write: 0.03 },
|
||||
reasoning: false,
|
||||
});
|
||||
expect(buildHyperModel(model, undefined, "minimax/MiniMax-M2.7")).not.toHaveProperty("reasoning_options");
|
||||
});
|
||||
|
||||
test("rounds Hyper pricing to six decimal places", () => {
|
||||
const model = hyperModel({
|
||||
id: "deepseek-v4-flash",
|
||||
pricing: {
|
||||
input: 0.20000010875000002,
|
||||
output: 0.40000021750000003,
|
||||
cache_hit: 0.039999586250000004,
|
||||
},
|
||||
});
|
||||
|
||||
expect(buildHyperModel(model, undefined, "deepseek/deepseek-v4-flash")).toMatchObject({
|
||||
cost: { input: 0.2, output: 0.4, cache_read: 0.04 },
|
||||
});
|
||||
});
|
||||
|
||||
test("sets Hyper reasoning false when API omits reasoning metadata", () => {
|
||||
const model = hyperModel({ id: "llama-3.3-70b-instruct", reasoning: undefined });
|
||||
|
||||
expect(buildHyperModel(model, undefined, "meta/llama-3.3-70b-instruct")).toMatchObject({
|
||||
attachment: false,
|
||||
});
|
||||
expect(buildHyperModel(model, undefined, "meta/llama-3.3-70b-instruct")).not.toHaveProperty("reasoning");
|
||||
expect(buildHyperModel(model, undefined, "meta/llama-3.3-70b-instruct")).not.toHaveProperty("reasoning_options");
|
||||
|
||||
expect(buildHyperModel(hyperModel({ id: "minimax-m2.7", reasoning: undefined }), undefined, "minimax/MiniMax-M2.7")).toMatchObject({
|
||||
reasoning: false,
|
||||
});
|
||||
});
|
||||
|
||||
test("preserves existing Hyper cost when API pricing is missing", () => {
|
||||
const existing = {
|
||||
cost: { input: 1, output: 2 },
|
||||
release_date: "2026-01-01",
|
||||
last_updated: "2026-01-01",
|
||||
};
|
||||
|
||||
expect(buildHyperModel(hyperModel({ id: "minimax-m2.7" }), existing, "minimax/MiniMax-M2.7")).toMatchObject({
|
||||
cost: { input: 1, output: 2 },
|
||||
});
|
||||
});
|
||||
|
||||
test("formats interleaved as a root field before reasoning option tables", () => {
|
||||
const content = formatToml({
|
||||
id: "example/model",
|
||||
@@ -1509,6 +1570,23 @@ function llmGatewayModel(overrides: Partial<LLMGatewayModel> = {}): LLMGatewayMo
|
||||
};
|
||||
}
|
||||
|
||||
function hyperModel(overrides: Partial<HyperModel> = {}): HyperModel {
|
||||
return {
|
||||
id: "deepseek-v4-flash",
|
||||
created: 1_780_592_628,
|
||||
display_name: "DeepSeek V4 Flash",
|
||||
reasoning: {
|
||||
effort_levels: [
|
||||
{ value: "high" },
|
||||
{ value: "xhigh" },
|
||||
],
|
||||
},
|
||||
context_window: 1_000_000,
|
||||
max_output_tokens: 384_000,
|
||||
...overrides,
|
||||
};
|
||||
}
|
||||
|
||||
function openRouterModel(overrides: Partial<OpenRouterModel> = {}): OpenRouterModel {
|
||||
return {
|
||||
id: "anthropic/claude-sonnet-5",
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
# Sources (accessed 2026-07-28):
|
||||
# - Model card, limits (1M context, 999,990 max output), capabilities, GLM-5.2 base:
|
||||
# https://docs.abliteration.ai/models
|
||||
# - Reasoning effort ladder and per-endpoint request fields:
|
||||
# https://docs.abliteration.ai/capabilities/thinking
|
||||
# - Pricing ($5 per 1M tokens, flat input + output):
|
||||
# https://docs.abliteration.ai/pricing
|
||||
# https://abliteration.ai/pricing#api-pricing
|
||||
# - Launch announcement (base model, fine-tuning, benchmarks):
|
||||
# https://abliteration.ai/blog/introducing-abliterated-model-large
|
||||
name = "Abliterated Model Large"
|
||||
description = "GLM-5.2 model abliterated and finetuned for cyber, ML red teaming, and agent testing"
|
||||
release_date = "2026-07-25"
|
||||
last_updated = "2026-07-28"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
temperature = true
|
||||
open_weights = false
|
||||
|
||||
# Two distinct reasoning depths: high and max. The API also accepts the other
|
||||
# ladder values as aliases, mapping minimal-high -> high and xhigh-max -> max.
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": "<value>"} on /v1/chat/completions
|
||||
values = ["none", "high", "max"]
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking": false} on /v1/messages (legacy alias on /v1/chat/completions)
|
||||
|
||||
[cost]
|
||||
input = 5.00
|
||||
output = 5.00
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
input = 1_000_000
|
||||
output = 999_990
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,20 +1,27 @@
|
||||
# Sources (accessed 2026-07-28):
|
||||
# - Model card and capabilities: https://docs.abliteration.ai/models
|
||||
# - Reasoning effort ladder and per-endpoint request fields (reasoning on by
|
||||
# default; "none" disables; top-level thinking:false disables on
|
||||
# /v1/messages and as a legacy alias on /v1/chat/completions):
|
||||
# https://docs.abliteration.ai/capabilities/thinking
|
||||
name = "Abliterated Model"
|
||||
description = "Multimodal model for analyzing text, images, documents, and rich media"
|
||||
# Reasoning HTTP format (accessed 2026-06-25):
|
||||
# This model thinks by default. On POST /v1/chat/completions or /v1/messages,
|
||||
# top-level `thinking: false` skips thinking; omission keeps it enabled.
|
||||
# Sources:
|
||||
# https://docs.abliteration.ai/models
|
||||
# https://docs.abliteration.ai/capabilities/thinking
|
||||
release_date = "2026-01-06"
|
||||
last_updated = "2026-01-06"
|
||||
last_updated = "2026-07-28"
|
||||
attachment = true
|
||||
reasoning = false
|
||||
reasoning = true
|
||||
tool_call = true
|
||||
structured_output = false
|
||||
temperature = true
|
||||
open_weights = true
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort" # API: {"reasoning_effort": "<value>"} on /v1/chat/completions
|
||||
values = ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle" # API: {"thinking": false} on /v1/messages (legacy alias on /v1/chat/completions)
|
||||
|
||||
[cost]
|
||||
input = 3.00
|
||||
output = 3.00
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
# Reasoning controls for the whole API surface (verified 2026-07-28):
|
||||
# https://docs.abliteration.ai/capabilities/thinking
|
||||
# Both models reason by default. Effort ladder, least to most:
|
||||
# none (disables reasoning), minimal, low, medium, high, xhigh, max.
|
||||
# Request field per endpoint:
|
||||
# - POST /v1/chat/completions: top-level "reasoning_effort": "<level>"
|
||||
# (legacy top-level "thinking": false also disables reasoning)
|
||||
# - POST /v1/responses: "reasoning": { "effort": "<level>" }
|
||||
# - POST /v1/messages: "output_config": { "effort": "<level>" } or
|
||||
# "thinking": { "type": "enabled", "budget_tokens": <n> };
|
||||
# "thinking": false disables reasoning
|
||||
name = "abliteration.ai"
|
||||
env = ["ABLIT_KEY"]
|
||||
npm = "@ai-sdk/openai-compatible"
|
||||
# Reasoning HTTP format (accessed 2026-06-25):
|
||||
# POST /v1/chat/completions and POST /v1/messages: top-level `thinking` is true
|
||||
# by default; false skips thinking. POST /v1/responses has no thinking toggle.
|
||||
# No effort or numeric reasoning-budget request field is documented.
|
||||
# Sources:
|
||||
# https://docs.abliteration.ai/capabilities/thinking
|
||||
# https://docs.abliteration.ai/compatibility-matrix
|
||||
api = "https://api.abliteration.ai/v1"
|
||||
doc = "https://docs.abliteration.ai/models"
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# Source: GET https://api.aiand.com/v1/models (USD list prices; accessed
|
||||
# 2026-07-28). Pricing is aiand-specific: $3.00 input, $0.50 cache_read,
|
||||
# $12.50 output (differs from Moonshot official rates).
|
||||
# Modalities: text + image + pdf accepted per GET /v1/models; video rejected
|
||||
# ("does not support video input") — overridden from shared base
|
||||
# text+image+video. PDF kept: sibling aiand Moonshot entries (kimi-k2.6,
|
||||
# kimi-k2.7-code) include pdf after catalog/probe evidence; aiand treats
|
||||
# PDF as a provider-level Files API modality.
|
||||
# reasoning_effort verified live: gateway schema accepts
|
||||
# none/minimal/low/medium/high/xhigh/max, but the K3 backend only accepts
|
||||
# none/low/high/max (minimal/medium/xhigh rejected). Invalid values rejected
|
||||
# with 400 (negative control).
|
||||
base_model = "moonshotai/kimi-k3"
|
||||
|
||||
reasoning_options = [{ type = "effort", values = ["none", "low", "high", "max"] }]
|
||||
|
||||
[cost]
|
||||
input = 3.00
|
||||
cache_read = 0.50
|
||||
output = 12.50
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image", "pdf"]
|
||||
output = ["text"]
|
||||
@@ -0,0 +1,26 @@
|
||||
# AIHubMix model page documents Kimi K3 pricing, supported input modalities
|
||||
# (text, vision, video), and a 1M-token context window.
|
||||
# Source accessed 2026-07-27:
|
||||
# https://aihubmix.com/model/kimi-k3
|
||||
|
||||
base_model = "moonshotai/kimi-k3"
|
||||
last_updated = "2026-07-27"
|
||||
|
||||
[interleaved]
|
||||
field = "reasoning_content"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "toggle"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "high", "max"]
|
||||
|
||||
[cost]
|
||||
input = 3.00
|
||||
output = 15.00
|
||||
cache_read = 0.30
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image", "video"]
|
||||
output = ["text"]
|
||||
@@ -5,7 +5,7 @@ temperature = true
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 0.82
|
||||
output = 3.75
|
||||
input = 0.73
|
||||
output = 3.5
|
||||
cache_read = 0.15
|
||||
cache_write = 0
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/cohere-command-r-08-2024.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/cohere-command-r-plus-08-2024.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/deepseek-r1-0528.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/deepseek-v3-0324.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/deepseek-v3.1.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/gpt-3.5-turbo-0301.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/gpt-3.5-turbo-0613.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/gpt-4-32k.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/gpt-4.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/gpt-5-chat.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/gpt-5.1-chat.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/gpt-5.2-chat.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/grok-4-fast-reasoning.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/kimi-k2-thinking.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/llama-3.2-11b-vision-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/llama-3.2-90b-vision-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/meta-llama-3-70b-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/meta-llama-3-8b-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/meta-llama-3.1-405b-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/meta-llama-3.1-70b-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/meta-llama-3.1-8b-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/mistral-large-2411.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/mistral-nemo.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/o1-mini.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/phi-3-medium-128k-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/phi-3-medium-4k-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/phi-3-mini-128k-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/phi-3-mini-4k-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/phi-3-small-128k-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/phi-3-small-8k-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/phi-3.5-mini-instruct.toml
|
||||
@@ -1 +0,0 @@
|
||||
../../azure/models/phi-3.5-moe-instruct.toml
|
||||
@@ -10,6 +10,7 @@ temperature = false
|
||||
knowledge = "2024-04"
|
||||
tool_call = true
|
||||
open_weights = false
|
||||
status = "deprecated"
|
||||
|
||||
[cost]
|
||||
input = 1.50
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
base_model = "cohere/command-r-08-2024"
|
||||
|
||||
[cost]
|
||||
input = 0.15
|
||||
output = 0.6
|
||||
@@ -1,5 +0,0 @@
|
||||
base_model = "cohere/command-r-plus-08-2024"
|
||||
|
||||
[cost]
|
||||
input = 2.5
|
||||
output = 10
|
||||
@@ -1,24 +0,0 @@
|
||||
name = "DeepSeek-R1-0528"
|
||||
description = "DeepSeek reasoning model for multi-step analysis, math, coding, and tools"
|
||||
family = "deepseek-thinking"
|
||||
release_date = "2025-05-28"
|
||||
last_updated = "2025-05-28"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
reasoning_options = []
|
||||
temperature = true
|
||||
knowledge = "2024-07"
|
||||
tool_call = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 1.35
|
||||
output = 5.4
|
||||
|
||||
[limit]
|
||||
context = 163_840
|
||||
output = 163_840
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -10,6 +10,7 @@ temperature = true
|
||||
knowledge = "2024-07"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
status = "deprecated"
|
||||
|
||||
[cost]
|
||||
input = 1.35
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "DeepSeek-V3-0324"
|
||||
description = "DeepSeek chat model for instruction following, coding, and analysis"
|
||||
family = "deepseek"
|
||||
release_date = "2025-03-24"
|
||||
last_updated = "2025-03-24"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2024-07"
|
||||
tool_call = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 1.14
|
||||
output = 4.56
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
output = 131_072
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,24 +0,0 @@
|
||||
name = "DeepSeek-V3.1"
|
||||
description = "DeepSeek chat model for instruction following, coding, and analysis"
|
||||
family = "deepseek"
|
||||
release_date = "2025-08-21"
|
||||
last_updated = "2025-08-21"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
reasoning_options = []
|
||||
temperature = true
|
||||
knowledge = "2024-07"
|
||||
tool_call = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.56
|
||||
output = 1.68
|
||||
|
||||
[limit]
|
||||
context = 131_072
|
||||
output = 131_072
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -9,6 +9,7 @@ temperature = true
|
||||
knowledge = "2021-08"
|
||||
tool_call = false
|
||||
open_weights = false
|
||||
status = "deprecated"
|
||||
|
||||
[cost]
|
||||
input = 0.50
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "GPT-3.5 Turbo 0301"
|
||||
description = "Compact GPT model for low-latency assistance and high-volume workloads"
|
||||
family = "gpt"
|
||||
release_date = "2023-03-01"
|
||||
last_updated = "2023-03-01"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2021-08"
|
||||
tool_call = false
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 1.50
|
||||
output = 2.00
|
||||
|
||||
[limit]
|
||||
context = 4096
|
||||
output = 4096
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "GPT-3.5 Turbo 0613"
|
||||
description = "Compact GPT model for low-latency assistance and high-volume workloads"
|
||||
family = "gpt"
|
||||
release_date = "2023-06-13"
|
||||
last_updated = "2023-06-13"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2021-08"
|
||||
tool_call = false
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 3.00
|
||||
output = 4.00
|
||||
|
||||
[limit]
|
||||
context = 16384
|
||||
output = 16384
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -9,6 +9,7 @@ temperature = true
|
||||
knowledge = "2021-08"
|
||||
tool_call = false
|
||||
open_weights = false
|
||||
status = "deprecated"
|
||||
|
||||
[cost]
|
||||
input = 1.00
|
||||
|
||||
@@ -9,6 +9,7 @@ temperature = true
|
||||
knowledge = "2021-08"
|
||||
tool_call = false
|
||||
open_weights = false
|
||||
status = "deprecated"
|
||||
|
||||
[cost]
|
||||
input = 1.50
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "GPT-4 32K"
|
||||
description = "GPT model for general reasoning, writing, coding, and tool-assisted tasks"
|
||||
family = "gpt"
|
||||
release_date = "2023-03-14"
|
||||
last_updated = "2023-03-14"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-11"
|
||||
tool_call = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 60.00
|
||||
output = 120.00
|
||||
|
||||
[limit]
|
||||
context = 32768
|
||||
output = 32768
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -9,6 +9,7 @@ temperature = true
|
||||
knowledge = "2023-11"
|
||||
tool_call = true
|
||||
open_weights = false
|
||||
status = "deprecated"
|
||||
|
||||
[cost]
|
||||
input = 10.00
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
base_model = "openai/gpt-4-turbo"
|
||||
status = "deprecated"
|
||||
base_model_omit = ["structured_output"]
|
||||
|
||||
[cost]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
base_model = "openai/gpt-4.1-mini"
|
||||
status = "deprecated"
|
||||
base_model_omit = ["structured_output"]
|
||||
|
||||
[cost]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
base_model = "openai/gpt-4.1-nano"
|
||||
status = "deprecated"
|
||||
base_model_omit = ["structured_output"]
|
||||
|
||||
[cost]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
base_model = "openai/gpt-4.1"
|
||||
status = "deprecated"
|
||||
base_model_omit = ["structured_output"]
|
||||
|
||||
[cost]
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "GPT-4"
|
||||
description = "GPT model for general reasoning, writing, coding, and tool-assisted tasks"
|
||||
family = "gpt"
|
||||
release_date = "2023-03-14"
|
||||
last_updated = "2023-03-14"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-11"
|
||||
tool_call = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 60.00
|
||||
output = 120.00
|
||||
|
||||
[limit]
|
||||
context = 8192
|
||||
output = 8192
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,4 +1,5 @@
|
||||
base_model = "openai/gpt-4o-mini"
|
||||
status = "deprecated"
|
||||
base_model_omit = ["structured_output"]
|
||||
|
||||
[cost]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
base_model = "openai/gpt-4o"
|
||||
status = "deprecated"
|
||||
base_model_omit = ["structured_output"]
|
||||
|
||||
[cost]
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
name = "GPT-5 Chat"
|
||||
description = "Chat-tuned GPT model for conversational assistance, writing, and tool workflows"
|
||||
family = "gpt-codex"
|
||||
release_date = "2025-08-07"
|
||||
last_updated = "2025-08-07"
|
||||
attachment = true
|
||||
reasoning = true
|
||||
reasoning_options = []
|
||||
temperature = false
|
||||
knowledge = "2024-10-24"
|
||||
tool_call = false
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 10.00
|
||||
cache_read = 0.13
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 16_384
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -1,26 +0,0 @@
|
||||
name = "GPT-5.1 Chat"
|
||||
description = "Speech generation model for controllable voice, narration, and audio delivery"
|
||||
family = "gpt-codex"
|
||||
release_date = "2025-11-14"
|
||||
last_updated = "2025-11-14"
|
||||
attachment = true
|
||||
reasoning = true
|
||||
reasoning_options = [{ type = "effort", values = ["medium"] }]
|
||||
temperature = false
|
||||
knowledge = "2024-09-30"
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 1.25
|
||||
output = 10.00
|
||||
cache_read = 0.125
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 16_384
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image", "audio"]
|
||||
output = ["text", "image", "audio"]
|
||||
@@ -1,26 +0,0 @@
|
||||
name = "GPT-5.2 Chat"
|
||||
description = "Chat-tuned GPT model for conversational assistance, writing, and tool workflows"
|
||||
family = "gpt-codex"
|
||||
release_date = "2025-12-11"
|
||||
last_updated = "2025-12-11"
|
||||
attachment = true
|
||||
reasoning = true
|
||||
reasoning_options = [{ type = "effort", values = ["medium"] }]
|
||||
temperature = false
|
||||
knowledge = "2025-08-31"
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 1.75
|
||||
output = 14.00
|
||||
cache_read = 0.175
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 16_384
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -1,26 +0,0 @@
|
||||
name = "GPT-5.3 Chat"
|
||||
description = "Chat-tuned GPT model for conversational assistance, writing, and tool workflows"
|
||||
family = "gpt-codex"
|
||||
release_date = "2026-03-03"
|
||||
last_updated = "2026-03-03"
|
||||
attachment = true
|
||||
reasoning = true
|
||||
reasoning_options = [{ type = "effort", values = ["medium"] }]
|
||||
temperature = false
|
||||
knowledge = "2025-08-31"
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 1.75
|
||||
output = 14.00
|
||||
cache_read = 0.175
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 16_384
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -1,25 +0,0 @@
|
||||
name = "Grok 4 Fast (Reasoning)"
|
||||
description = "Fast Grok model for responsive chat, reasoning, and tool-assisted work"
|
||||
family = "grok"
|
||||
release_date = "2025-09-19"
|
||||
last_updated = "2025-09-19"
|
||||
attachment = true
|
||||
reasoning = true
|
||||
reasoning_options = []
|
||||
temperature = true
|
||||
knowledge = "2025-07"
|
||||
tool_call = 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"]
|
||||
@@ -1,26 +0,0 @@
|
||||
name = "Kimi K2 Thinking"
|
||||
description = "Kimi reasoning model for long-horizon research, planning, and tool use"
|
||||
family = "kimi-thinking"
|
||||
release_date = "2025-11-06"
|
||||
last_updated = "2025-12-02"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
reasoning_options = []
|
||||
temperature = true
|
||||
knowledge = "2024-08"
|
||||
tool_call = true
|
||||
interleaved = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.60
|
||||
output = 2.50
|
||||
cache_read = 0.15
|
||||
|
||||
[limit]
|
||||
context = 262_144
|
||||
output = 262_144
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Llama-3.2-11B-Vision-Instruct"
|
||||
description = "Open Llama multimodal model for image understanding and text reasoning"
|
||||
family = "llama"
|
||||
release_date = "2024-09-25"
|
||||
last_updated = "2024-09-25"
|
||||
attachment = true
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-12"
|
||||
tool_call = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.37
|
||||
output = 0.37
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Llama-3.2-90B-Vision-Instruct"
|
||||
description = "Open Llama multimodal model for image understanding and text reasoning"
|
||||
family = "llama"
|
||||
release_date = "2024-09-25"
|
||||
last_updated = "2024-09-25"
|
||||
attachment = true
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-12"
|
||||
tool_call = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 2.04
|
||||
output = 2.04
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Meta-Llama-3-70B-Instruct"
|
||||
description = "Open Llama instruction model for multilingual chat, reasoning, and coding"
|
||||
family = "llama"
|
||||
release_date = "2024-04-18"
|
||||
last_updated = "2024-04-18"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-12"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 2.68
|
||||
output = 3.54
|
||||
|
||||
[limit]
|
||||
context = 8_192
|
||||
output = 2_048
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Meta-Llama-3-8B-Instruct"
|
||||
description = "Open Llama instruction model for multilingual chat, reasoning, and coding"
|
||||
family = "llama"
|
||||
release_date = "2024-04-18"
|
||||
last_updated = "2024-04-18"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-12"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.30
|
||||
output = 0.61
|
||||
|
||||
[limit]
|
||||
context = 8_192
|
||||
output = 2_048
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Meta-Llama-3.1-405B-Instruct"
|
||||
description = "Open Llama instruction model for multilingual chat, reasoning, and coding"
|
||||
family = "llama"
|
||||
release_date = "2024-07-23"
|
||||
last_updated = "2024-07-23"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-12"
|
||||
tool_call = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 5.33
|
||||
output = 16.00
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 32_768
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Meta-Llama-3.1-70B-Instruct"
|
||||
description = "Open Llama instruction model for multilingual chat, reasoning, and coding"
|
||||
family = "llama"
|
||||
release_date = "2024-07-23"
|
||||
last_updated = "2024-07-23"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-12"
|
||||
tool_call = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 2.68
|
||||
output = 3.54
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 32_768
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Meta-Llama-3.1-8B-Instruct"
|
||||
description = "Open Llama instruction model for multilingual chat, reasoning, and coding"
|
||||
family = "llama"
|
||||
release_date = "2024-07-23"
|
||||
last_updated = "2024-07-23"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-12"
|
||||
tool_call = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.30
|
||||
output = 0.61
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 32_768
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Mistral Large 24.11"
|
||||
description = "Flagship Mistral model for advanced reasoning, coding, and multilingual work"
|
||||
family = "mistral-large"
|
||||
release_date = "2024-11-01"
|
||||
last_updated = "2024-11-01"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2024-09"
|
||||
tool_call = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 2.00
|
||||
output = 6.00
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 32_768
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Mistral Nemo"
|
||||
description = "Mistral model for multilingual chat, reasoning, and tool-assisted workflows"
|
||||
family = "mistral-nemo"
|
||||
release_date = "2024-07-18"
|
||||
last_updated = "2024-07-18"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2024-07"
|
||||
tool_call = true
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.15
|
||||
output = 0.15
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 128_000
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,25 +0,0 @@
|
||||
name = "o1-mini"
|
||||
description = "O-series reasoning model for hard analysis, math, coding, and planning"
|
||||
family = "o-mini"
|
||||
release_date = "2024-09-12"
|
||||
last_updated = "2024-09-12"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
reasoning_options = []
|
||||
temperature = false
|
||||
knowledge = "2023-09"
|
||||
tool_call = true
|
||||
open_weights = false
|
||||
|
||||
[cost]
|
||||
input = 1.10
|
||||
output = 4.40
|
||||
cache_read = 0.55
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 65_536
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -10,6 +10,7 @@ temperature = false
|
||||
knowledge = "2023-09"
|
||||
tool_call = true
|
||||
open_weights = false
|
||||
status = "deprecated"
|
||||
|
||||
[cost]
|
||||
input = 15.00
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
base_model = "openai/o3-mini"
|
||||
status = "deprecated"
|
||||
reasoning_options = [{ type = "effort", values = ["low", "medium", "high"] }]
|
||||
base_model_omit = ["structured_output"]
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
base_model = "openai/o4-mini"
|
||||
status = "deprecated"
|
||||
reasoning_options = [{ type = "effort", values = ["low", "medium", "high"] }]
|
||||
base_model_omit = ["structured_output"]
|
||||
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Phi-3-medium-instruct (128k)"
|
||||
description = "Open-weight instruction model for adaptable chat and self-hosted production workloads"
|
||||
family = "phi"
|
||||
release_date = "2024-04-23"
|
||||
last_updated = "2024-04-23"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-10"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.17
|
||||
output = 0.68
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 4_096
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Phi-3-medium-instruct (4k)"
|
||||
description = "Open-weight instruction model for adaptable chat and self-hosted production workloads"
|
||||
family = "phi"
|
||||
release_date = "2024-04-23"
|
||||
last_updated = "2024-04-23"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-10"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.17
|
||||
output = 0.68
|
||||
|
||||
[limit]
|
||||
context = 4_096
|
||||
output = 1_024
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Phi-3-mini-instruct (128k)"
|
||||
description = "Efficient model for low-latency assistance, extraction, and routine automation"
|
||||
family = "phi"
|
||||
release_date = "2024-04-23"
|
||||
last_updated = "2024-04-23"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-10"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.13
|
||||
output = 0.52
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 4_096
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Phi-3-mini-instruct (4k)"
|
||||
description = "Efficient model for low-latency assistance, extraction, and routine automation"
|
||||
family = "phi"
|
||||
release_date = "2024-04-23"
|
||||
last_updated = "2024-04-23"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-10"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.13
|
||||
output = 0.52
|
||||
|
||||
[limit]
|
||||
context = 4_096
|
||||
output = 1_024
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Phi-3-small-instruct (128k)"
|
||||
description = "Efficient model for low-latency assistance, extraction, and routine automation"
|
||||
family = "phi"
|
||||
release_date = "2024-04-23"
|
||||
last_updated = "2024-04-23"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-10"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.15
|
||||
output = 0.60
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 4_096
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Phi-3-small-instruct (8k)"
|
||||
description = "Efficient model for low-latency assistance, extraction, and routine automation"
|
||||
family = "phi"
|
||||
release_date = "2024-04-23"
|
||||
last_updated = "2024-04-23"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-10"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.15
|
||||
output = 0.60
|
||||
|
||||
[limit]
|
||||
context = 8_192
|
||||
output = 2_048
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Phi-3.5-mini-instruct"
|
||||
description = "Efficient model for low-latency assistance, extraction, and routine automation"
|
||||
family = "phi"
|
||||
release_date = "2024-08-20"
|
||||
last_updated = "2024-08-20"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-10"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.13
|
||||
output = 0.52
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 4_096
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -1,23 +0,0 @@
|
||||
name = "Phi-3.5-MoE-instruct"
|
||||
description = "Open-weight instruction model for adaptable chat and self-hosted production workloads"
|
||||
family = "phi"
|
||||
release_date = "2024-08-20"
|
||||
last_updated = "2024-08-20"
|
||||
attachment = false
|
||||
reasoning = false
|
||||
temperature = true
|
||||
knowledge = "2023-10"
|
||||
tool_call = false
|
||||
open_weights = true
|
||||
|
||||
[cost]
|
||||
input = 0.16
|
||||
output = 0.64
|
||||
|
||||
[limit]
|
||||
context = 128_000
|
||||
output = 4_096
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
output = ["text"]
|
||||
@@ -0,0 +1,14 @@
|
||||
base_model = "moonshotai/kimi-k3"
|
||||
description = "Kimi multimodal agent model for visual understanding, coding, and planning"
|
||||
temperature = true
|
||||
reasoning_options = []
|
||||
|
||||
[cost]
|
||||
input = 3
|
||||
output = 15
|
||||
|
||||
[limit]
|
||||
output = 262_144
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
@@ -19,4 +19,4 @@ cache_read = 0.21
|
||||
|
||||
[limit]
|
||||
context = 524_288
|
||||
output = 524_288
|
||||
output = 262_144
|
||||
|
||||
@@ -17,4 +17,4 @@ cache_read = 0.3
|
||||
|
||||
[limit]
|
||||
context = 524_288
|
||||
output = 524_288
|
||||
output = 262_144
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
base_model = "anthropic/claude-opus-5"
|
||||
reasoning_options = [{ type = "effort", values = ["low", "medium", "high", "xhigh", "max"] }]
|
||||
|
||||
[cost]
|
||||
input = 5
|
||||
output = 25
|
||||
cache_read = 0.5
|
||||
cache_write = 6.25
|
||||
@@ -0,0 +1,17 @@
|
||||
base_model = "moonshotai/kimi-k3"
|
||||
reasoning_options = [{ type = "effort", values = ["none", "low", "high", "max"] }]
|
||||
|
||||
[interleaved]
|
||||
field = "reasoning_content"
|
||||
|
||||
[cost]
|
||||
input = 2
|
||||
output = 8
|
||||
cache_read = 0.25
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
output = 262_144
|
||||
|
||||
[provider]
|
||||
npm = "@ai-sdk/openai-compatible"
|
||||
@@ -0,0 +1,14 @@
|
||||
base_model = "anthropic/claude-opus-5"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high", "xhigh", "max"]
|
||||
|
||||
[cost]
|
||||
input = 5
|
||||
output = 25
|
||||
cache_read = 0.5
|
||||
cache_write = 6.25
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
@@ -0,0 +1,20 @@
|
||||
# DeepInfra OpenAI chat (POST https://api.deepinfra.com/v1/openai/chat/completions)
|
||||
# model = "moonshotai/Kimi-K3".
|
||||
# Always-on reasoning; effort via top-level reasoning_effort = "low"|"high"|"max" (default max).
|
||||
# No thinking toggle — K3 always returns reasoning_content.
|
||||
# DeepInfra OpenAPI accepts max among effort values; model-native values are low/high/max.
|
||||
# https://docs.deepinfra.com/api-reference/chat-completions/openai-chat-completions
|
||||
# https://platform.kimi.ai/docs/guide/use-reasoning-effort
|
||||
base_model = "moonshotai/kimi-k3"
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "high", "max"]
|
||||
|
||||
[cost]
|
||||
input = 2.7
|
||||
output = 13.5
|
||||
cache_read = 0.27
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image"]
|
||||
@@ -1,23 +1,26 @@
|
||||
name = "Qwen3-32B"
|
||||
name = "Qwen3 32B"
|
||||
description = "Qwen instruction model for multilingual chat, reasoning, and tool use"
|
||||
family = "qwen"
|
||||
release_date = "2025-04-30"
|
||||
last_updated = "2026-04-16"
|
||||
attachment = false
|
||||
reasoning = true
|
||||
reasoning_options = [{ type = "effort", values = ["none", "low", "medium", "high", "max"] }]
|
||||
temperature = true
|
||||
tool_call = true
|
||||
structured_output = true
|
||||
open_weights = true
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["none", "low", "medium", "high", "max"]
|
||||
|
||||
[cost]
|
||||
input = 0.25
|
||||
output = 0.55
|
||||
|
||||
[limit]
|
||||
context = 131_000
|
||||
output = 40_960
|
||||
context = 32_768
|
||||
output = 6_554
|
||||
|
||||
[modalities]
|
||||
input = ["text"]
|
||||
|
||||
@@ -1,26 +1,29 @@
|
||||
name = "Claude Opus 4.1"
|
||||
name = "Anthropic Claude 4.1 Opus"
|
||||
description = "Flagship Claude model for deep reasoning, coding, and long-horizon agents"
|
||||
family = "claude-opus"
|
||||
release_date = "2025-08-05"
|
||||
last_updated = "2025-08-05"
|
||||
attachment = true
|
||||
reasoning = true
|
||||
reasoning_options = [{ type = "effort", values = ["low", "medium", "high"] }]
|
||||
temperature = true
|
||||
tool_call = true
|
||||
knowledge = "2025-03-31"
|
||||
open_weights = false
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
|
||||
[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
|
||||
output = 32_000
|
||||
output = 8_192
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image", "pdf"]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
|
||||
@@ -1,33 +1,36 @@
|
||||
name = "Claude Sonnet 4.5"
|
||||
name = "Anthropic Claude 4.5 Sonnet"
|
||||
description = "Balanced Claude model for coding, analysis, agent workflows, and cost control"
|
||||
family = "claude-sonnet"
|
||||
release_date = "2025-09-29"
|
||||
last_updated = "2025-09-29"
|
||||
attachment = true
|
||||
reasoning = true
|
||||
reasoning_options = [{ type = "effort", values = ["low", "medium", "high"] }]
|
||||
temperature = true
|
||||
tool_call = true
|
||||
knowledge = "2025-07-31"
|
||||
open_weights = false
|
||||
|
||||
[[reasoning_options]]
|
||||
type = "effort"
|
||||
values = ["low", "medium", "high"]
|
||||
|
||||
[cost]
|
||||
input = 3.00
|
||||
output = 15.00
|
||||
cache_read = 0.30
|
||||
input = 3
|
||||
output = 15
|
||||
cache_read = 0.3
|
||||
cache_write = 3.75
|
||||
|
||||
[[cost.tiers]]
|
||||
tier = { size = 200_000 }
|
||||
input = 6.00
|
||||
output = 22.50
|
||||
cache_read = 0.30
|
||||
cache_write = 3.75
|
||||
tier = { type = "context", size = 200_000 }
|
||||
input = 6
|
||||
output = 22.5
|
||||
cache_read = 0.6
|
||||
cache_write = 7.5
|
||||
|
||||
[limit]
|
||||
context = 1_000_000
|
||||
context = 200_000
|
||||
output = 64_000
|
||||
|
||||
[modalities]
|
||||
input = ["text", "image", "pdf"]
|
||||
input = ["text", "image"]
|
||||
output = ["text"]
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user