Compare commits

...

41 Commits

Author SHA1 Message Date
github-actions[bot] 18cd726008 chore(sync): update DigitalOcean model catalog 2026-07-28 10:09:45 +00:00
Billy Cao 52d5045ee7 feat(synthetic): Add Kimi K3 model (#3794)
Deploy / deploy (push) Has been cancelled
* Add Synthetic's Kimi K3 offering

* Update cache read price

* fix(synthetic): declare effort-only reasoning for Kimi K3 per Synthetic API docs

Synthetic's OpenAI-compatible chat completions API documents reasoning_effort
with values low | medium | high and no reasoning on/off toggle, so drop the
toggle option and align effort values with the documented surface (matching
the existing Synthetic Kimi K2.6 / K2.7-Code entries).

https://dev.synthetic.new/docs/openai/chat-completions

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Remove unnecessary comment

* Retrigger transient actions failure

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 23:36:15 -05:00
github-actions[bot] 4faf76317a chore(sync): update Venice model catalog (#3791)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 23:36:01 -05:00
github-actions[bot] efb5d8ea0d chore(sync): update Baseten model catalog (#3798)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 23:35:53 -05:00
Fenil Modi 0273194a65 feat(aiand): add Kimi K3 (#3799)
* feat(aiand): add Kimi K3

* fix(aiand): remove pdf from kimi-k3 modalities, text+image only

* fix(aiand): restore pdf modality for kimi-k3 based on /v1/models evidence

PDF was removed to match fireworks/ollama-cloud, but that is not valid
evidence for aiand. Sibling aiand entries (kimi-k2.6, kimi-k2.7-code)
keep pdf after catalog/probe evidence. Restoring pdf per original
GET /v1/models data which showed document support.
2026-07-27 23:35:42 -05:00
Abliteration AI a034112075 Add abliterated-model-large (#3793)
* Add abliterated-model-large

* Fix reasoning abliterated-model-large.toml

* fix provider

* Update abliterated-model-large.toml

* removed interleaved reasoning

* fixed docs and effort

* Address review: verified reasoning controls, citations, provider docs

- abliterated-model: reasoning = true with effort ladder and toggle,
  per docs.abliteration.ai/capabilities/thinking
- abliterated-model-large: replace unverified effort values with the
  documented ladder (none..max via reasoning_effort) plus thinking
  toggle; add API-syntax comments; move all source citations into the
  leading header block; align max output with docs (999,990)
- provider.toml: restore reasoning notes with the current verified
  per-endpoint request fields

* Narrow abliterated-model-large effort values to distinct modes

The API maps minimal-high -> high and xhigh-max -> max, so only none,
high, and max are distinct outcomes. Alias mapping kept as a comment.
2026-07-27 23:27:01 -05:00
Oskar b91080aa0e feat(hyper): add Charm Hyper provider and sync module (#3352)
* feat(hyper): add Charm Hyper provider and sync module

* feat: resync models

* fix: remove references to /provider endpoint

* feat: simplify model resolution

* fix logo

* feat: add base model resolution

* update models

* feat: add reasoning_options with base model fallback

* fix: undo env relaxation

* feat: round prices

* fix(hyper): sync modalities from vision

* .

* fix(hyper): remove base model reasoning fallback
2026-07-27 23:23:43 -05:00
Aiden Cline 6fda2e07c2 fix(nvidia): add missing NIM chat models and correct API ids (#3744)
* fix(nvidia): add missing NIM chat models and correct API ids

Add high-demand NVIDIA NIM models used by OpenCode (Nemotron Super/Ultra/Nano,
Inkling, Laguna XS, Mistral Medium 3.5, Ministral 14B, Gemma 3, Cosmos Reason2)
and rename catalog ids that used underscores so they match integrate.api.nvidia.com.

Fixes anomalyco/opencode#38865

* fix(nvidia): audit NIM reasoning_options against infer docs

Keep only verified controls (mistral-medium-3.5-128b reasoning_effort
none|high). Set reasoning_options=[] and drop interleaved where NIM OpenAPI
does not document a control. Narrow inkling modalities to text+image and cite
max_tokens bounds for Super/Laguna output limits.

* fix(nvidia): restore verified Nemotron prompt toggles and Inkling audio

First-party NIM model cards document reasoning ON/OFF via system prompts for
Super v1/v1.5, Ultra 253B, and Nano 8B. NVIDIA's Inkling card lists text/image/audio
inputs. Keep empty reasoning_options only where no control is documented (Laguna,
VL models). Align max_tokens with infer OpenAPI bounds.
2026-07-27 20:45:13 -05:00
github-actions[bot] 24b7a2aa4c chore(sync): update OpenRouter model catalog (#3758)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 20:44:47 -05:00
Vladimir Glafirov d1d08289ac feat: add gitlab duo-chat-opus-5 model (#3765) 2026-07-27 20:44:27 -05:00
rakshith1928 9875219078 feat(kimi-k3): add Kimi K3 model configuration with pricing and modalities (#3789) 2026-07-27 20:43:33 -05:00
amrrs ec23529c0c fix(nebius): fix Kimi K3 reasoning_options for Nebius Token Factory (#3792)
* fix(nebius): curate Kimi K3 reasoning_options from verified API behavior

PR #3780 merged Kimi K3 for Nebius with reasoning_options = [] (no
verified control surface). Live testing against
api.tokenfactory.nebius.com/v1/chat/completions shows reasoning_effort
is a real, validated parameter: invalid values 422, and valid values
visibly change reasoning_content length. Curate the accepted literal
list instead of leaving it empty.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(nebius): narrow Kimi K3 reasoning_options to backend-verified values

Live testing invoking each literal (not just triggering the generic
gateway validator) shows the sglang model backend itself rejects
"minimal" and "xhigh" with a 400: "Input should be 'none', 'low',
'medium', 'high' or 'max'". Those two were only accepted by the
gateway's shared schema, not by this model. Narrow the list to the
5 values that actually work end-to-end.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 20:43:18 -05:00
KiKaraage 62ef55a446 feat(crof): add Kimi K3 (#3795)
* feat(crof): add Kimi K3

* fix(crof): change reasoning levels to low-high-max

* fix(crof): add "none" reasoning back for Kimi K3
2026-07-27 20:42:40 -05:00
github-actions[bot] 6eaf975918 chore(sync): update Venice model catalog (#3786)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 16:06:11 -05:00
rakshith1928 f8ac4b4fb1 feat(ollama-cloud): add kimi k3 model (#3787)
* feat(ollama-cloud): add kimi k3 model

* update ollama reasoning

* Revise Kimi K3 model documentation and sources
2026-07-27 16:06:00 -05:00
github-actions[bot] 03e2178662 chore(sync): update Baseten model catalog (#3770)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 14:50:15 -05:00
github-actions[bot] 03e495d946 chore(sync): update Ambient model catalog (#3771)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 14:46:40 -05:00
github-actions[bot] 1f5a03df40 chore(sync): update Vercel AI Gateway model catalog (#3772)
* chore(sync): update Vercel AI Gateway model catalog

* fix(vercel): set Kimi K3 Fast reasoning effort options

K3 always reasons; expose verified low/high/max via reasoning_effort.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-07-27 14:46:30 -05:00
github-actions[bot] 0968fea09f chore(sync): update LLM Gateway model catalog (#3779)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 14:43:34 -05:00
github-actions[bot] 1fb770040a chore(sync): update Deep Infra model catalog (#3782)
* chore(sync): update Deep Infra model catalog

* fix(deepinfra): set Kimi-K3 reasoning effort options

K3 always reasons; expose verified low/high/max via reasoning_effort.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-07-27 14:43:20 -05:00
Kevin 1efc768ae5 Add Kimi K3 to Nebius Token Factory (#3780)
Register moonshotai/Kimi-K3 with Nebius pricing and limits from
https://tokenfactory.nebius.com/api/public/models_info.
2026-07-27 14:42:37 -05:00
github-actions[bot] c3aab14477 chore(sync): update Hugging Face model catalog (#3784)
* chore(sync): update Hugging Face model catalog

* fix(huggingface): set Kimi-K3 reasoning effort options

K3 always reasons; expose verified low/high/max via reasoning_effort.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
2026-07-27 14:42:20 -05:00
Zain Hasan 236d2dd99a add kimi k3 (#3783) 2026-07-27 14:37:56 -05:00
github-actions[bot] ad211c8f8f chore(sync): update Venice model catalog (#3781)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 14:37:42 -05:00
Jack 38ccccc20d add kimi k3 to Zen 2026-07-28 01:08:00 +08:00
github-actions[bot] cce20188e5 chore(sync): update Venice model catalog (#3775)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 11:33:49 -05:00
Ahmad Shahzad 2acddd4818 feat(fireworks-ai): add Kimi K3 and Kimi K3 Fast (#3777) 2026-07-27 11:33:33 -05:00
Ahmad Shahzad c67dbc2e02 fix(fireworks-ai): remove deprecated GLM 5.1 and GLM 5.1 Fast (#3730)
Deploy / deploy (push) Has been cancelled
Fireworks AI will decommission GLM 5.1 and GLM 5.1 Fast serverless
endpoints on 2026-07-26, with GLM 5.2 and GLM 5.2 Fast serving as
their recommended replacements:

  GLM 5.1      -> GLM 5.2      (accounts/fireworks/models/glm-5p2)
  GLM 5.1 Fast -> GLM 5.2 Fast (accounts/fireworks/routers/glm-5p2-fast)

Remove the two model files ahead of the decommission date. Dedicated
deployments are unaffected.
2026-07-26 22:48:41 -05:00
github-actions[bot] 790e5cb842 chore(sync): update Ambient model catalog (#3747)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-26 22:48:00 -05:00
github-actions[bot] 73160c42bd chore(sync): update OpenRouter model catalog (#3748)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-26 22:47:50 -05:00
Carlo Francisco ff9bc91921 fix(thinkingmachines): name 256K variant "Inkling (256K)" (#3755)
Both Tinker Inkling tiers rendered with the same display name "Inkling"
because the :peft:262144 variant inherits it via base_model. Downstream
consumers (e.g. opencode) show two indistinguishable entries despite
different context windows and pricing. Override the name to match
the "Inkling (256K)" label used on Tinker's pricing page.
2026-07-26 22:47:35 -05:00
Nathan Nguyen 9c249c78cb feat(cloudflare-ai-gateway): add Claude Opus 5 (#3736) 2026-07-26 15:33:34 -05:00
github-actions[bot] c40d2ae925 chore(sync): update OpenRouter model catalog (#3733)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 22:57:04 -05:00
github-actions[bot] 71b3ca345d chore(sync): update Vercel AI Gateway model catalog (#3732)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 22:56:55 -05:00
github-actions[bot] 0b0414d78e chore(sync): update Weights & Biases model catalog (#3731)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 22:56:49 -05:00
github-actions[bot] f5edd52931 chore(sync): update Ambient model catalog (#3745)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 22:34:31 -05:00
opencode-agent[bot] d53651e3d9 fix(reviewer): compare reasoning options by API surface (#3746)
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
2026-07-25 22:34:20 -05:00
Aiden Cline 2e25bad01c chore(azure): remove retired models, mark deprecated still-serving (#3729)
* chore(azure): remove retired models, mark deprecated still-serving

Delete Foundry models past retirement (chat snapshots, Phi-3, old GPT-4,
retired Meta/Cohere/DeepSeek/Mistral/xAI/Moonshot entries). Clean broken
azure-cognitive-services symlinks that pointed at deleted azure models.

Mark still-serving Deprecated/Legacy models with status = "deprecated"
(gpt-4.1*, gpt-4o*, o1/o3-mini/o4-mini, codex-mini, gpt-image-1,
deepseek-r1, claude-opus-4-1).

Sources:
- https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule
- https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/retired-models

* fix(azure): address review — Preview status + Nov-2025 cohort

- Remove status=deprecated from gpt-image-1 and claude-opus-4-1
  (official lifecycle is Preview, not Deprecated)
- Delete remaining Nov-2025 OpenAI cohort for consistency with o1-mini:
  gpt-3.5-turbo-0125/1106/instruct, gpt-4-turbo, gpt-4-turbo-vision
- Drop broken azure-cognitive-services symlinks

* fix(azure): restore Nov-2025 OpenAI cohort as deprecated

Azure schedule/retired-models pages do not list gpt-4-turbo or
gpt-3.5-turbo-0125/1106/instruct as Retired. OpenAI still serves the
turbo family (catalog marks deprecated). Restore these IDs with
status=deprecated instead of deleting, matching OpenAI catalog policy.

Keep o1-mini deleted (long shut down on OpenAI API).
2026-07-25 15:04:01 -05:00
github-actions[bot] fcf16dcf64 chore(sync): update Ambient model catalog (#3727)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 13:52:39 -05:00
github-actions[bot] 8a61715de2 chore(sync): update CrossModel model catalog (#3743)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 13:14:58 -05:00
github-actions[bot] 5d913d45eb chore(sync): update OpenRouter model catalog (#3723)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-24 20:26:19 -05:00
259 changed files with 1940 additions and 1459 deletions
+2
View File
@@ -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.
+6 -3
View File
@@ -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;
+156
View File
@@ -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);
}
+78
View File
@@ -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
+11 -7
View File
@@ -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"]
+26
View File
@@ -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
+1
View File
@@ -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"]
+1
View File
@@ -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"]
-24
View File
@@ -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
-23
View File
@@ -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
View File
@@ -1,4 +1,5 @@
base_model = "openai/gpt-4-turbo"
status = "deprecated"
base_model_omit = ["structured_output"]
[cost]
+1
View File
@@ -1,4 +1,5 @@
base_model = "openai/gpt-4.1-mini"
status = "deprecated"
base_model_omit = ["structured_output"]
[cost]
+1
View File
@@ -1,4 +1,5 @@
base_model = "openai/gpt-4.1-nano"
status = "deprecated"
base_model_omit = ["structured_output"]
[cost]
+1
View File
@@ -1,4 +1,5 @@
base_model = "openai/gpt-4.1"
status = "deprecated"
base_model_omit = ["structured_output"]
[cost]
-23
View File
@@ -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
View File
@@ -1,4 +1,5 @@
base_model = "openai/gpt-4o-mini"
status = "deprecated"
base_model_omit = ["structured_output"]
[cost]
+1
View File
@@ -1,4 +1,5 @@
base_model = "openai/gpt-4o"
status = "deprecated"
base_model_omit = ["structured_output"]
[cost]
-25
View File
@@ -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"]
-26
View File
@@ -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"]
-26
View File
@@ -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"]
-26
View File
@@ -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"]
-23
View File
@@ -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"]
-25
View File
@@ -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"]
+1
View File
@@ -10,6 +10,7 @@ temperature = false
knowledge = "2023-09"
tool_call = true
open_weights = false
status = "deprecated"
[cost]
input = 15.00
+1
View File
@@ -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
View File
@@ -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
+17
View File
@@ -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