@tyvm/knowhow 0.0.104 → 0.0.106
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONFIG.md +8 -5
- package/package.json +3 -2
- package/scripts/check-model-pricing.ts +509 -0
- package/scripts/compare-openrouter-coverage.ts +576 -0
- package/src/agents/base/base.ts +127 -2
- package/src/agents/tools/execCommand.ts +4 -0
- package/src/agents/tools/executeScript/definition.ts +1 -1
- package/src/agents/tools/index.ts +0 -1
- package/src/agents/tools/list.ts +3 -43
- package/src/agents/tools/writeFile.ts +1 -1
- package/src/auth/browserLogin.ts +9 -4
- package/src/chat/modules/RemoteSyncModule.ts +3 -0
- package/src/cli.ts +31 -1
- package/src/clients/cerebras.ts +10 -0
- package/src/clients/contextLimits.ts +7 -2
- package/src/clients/copilot.ts +23 -0
- package/src/clients/deepseek.ts +16 -0
- package/src/clients/fireworks.ts +15 -0
- package/src/clients/gemini.ts +45 -2
- package/src/clients/github.ts +16 -0
- package/src/clients/groq.ts +15 -0
- package/src/clients/http.ts +190 -6
- package/src/clients/index.ts +215 -9
- package/src/clients/llama.ts +16 -0
- package/src/clients/mistral.ts +16 -0
- package/src/clients/nvidia.ts +16 -0
- package/src/clients/openai.ts +41 -11
- package/src/clients/openrouter.ts +17 -0
- package/src/clients/pricing/anthropic.ts +105 -78
- package/src/clients/pricing/cerebras.ts +11 -0
- package/src/clients/pricing/copilot.ts +60 -0
- package/src/clients/pricing/deepseek.ts +15 -0
- package/src/clients/pricing/fireworks.ts +32 -0
- package/src/clients/pricing/github.ts +69 -0
- package/src/clients/pricing/google.ts +245 -206
- package/src/clients/pricing/groq.ts +56 -0
- package/src/clients/pricing/index.ts +43 -6
- package/src/clients/pricing/llama.ts +18 -0
- package/src/clients/pricing/mistral.ts +34 -0
- package/src/clients/pricing/models.ts +23 -0
- package/src/clients/pricing/nvidia.ts +102 -0
- package/src/clients/pricing/openai.ts +347 -171
- package/src/clients/pricing/openrouter.ts +36 -0
- package/src/clients/pricing/types.ts +110 -0
- package/src/clients/pricing/xai.ts +123 -66
- package/src/clients/types.ts +4 -0
- package/src/clients/xai.ts +152 -2
- package/src/fileSync.ts +8 -2
- package/src/login.ts +11 -3
- package/src/services/AgentSyncFs.ts +36 -12
- package/src/services/KnowhowClient.ts +11 -0
- package/src/services/LazyToolsService.ts +6 -0
- package/src/services/S3.ts +0 -7
- package/src/services/SyncedAgentWatcher.ts +13 -298
- package/src/services/index.ts +1 -0
- package/src/services/modules/index.ts +11 -2
- package/src/services/watchers/FsSyncer.ts +155 -0
- package/src/services/watchers/RemoteSyncer.ts +153 -0
- package/src/services/watchers/index.ts +2 -0
- package/src/types.ts +56 -279
- package/src/worker.ts +174 -0
- package/tests/clients/pricing.test.ts +37 -0
- package/tests/manual/clients/completions.json +838 -226
- package/tests/manual/clients/completions.test.ts +46 -31
- package/ts_build/package.json +3 -2
- package/ts_build/src/agents/base/base.d.ts +17 -1
- package/ts_build/src/agents/base/base.js +82 -1
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/tools/execCommand.js +3 -0
- package/ts_build/src/agents/tools/execCommand.js.map +1 -1
- package/ts_build/src/agents/tools/executeScript/definition.js +1 -1
- package/ts_build/src/agents/tools/executeScript/definition.js.map +1 -1
- package/ts_build/src/agents/tools/index.d.ts +0 -1
- package/ts_build/src/agents/tools/index.js +0 -1
- package/ts_build/src/agents/tools/index.js.map +1 -1
- package/ts_build/src/agents/tools/list.js +3 -38
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/agents/tools/visionTool.d.ts +1 -1
- package/ts_build/src/agents/tools/writeFile.js +1 -1
- package/ts_build/src/agents/tools/writeFile.js.map +1 -1
- package/ts_build/src/ai.d.ts +1 -1
- package/ts_build/src/auth/browserLogin.d.ts +2 -1
- package/ts_build/src/auth/browserLogin.js +10 -3
- package/ts_build/src/auth/browserLogin.js.map +1 -1
- package/ts_build/src/chat/modules/RemoteSyncModule.js +1 -0
- package/ts_build/src/chat/modules/RemoteSyncModule.js.map +1 -1
- package/ts_build/src/cli.js +19 -0
- package/ts_build/src/cli.js.map +1 -1
- package/ts_build/src/clients/anthropic.d.ts +1 -82
- package/ts_build/src/clients/cerebras.d.ts +4 -0
- package/ts_build/src/clients/cerebras.js +14 -0
- package/ts_build/src/clients/cerebras.js.map +1 -0
- package/ts_build/src/clients/contextLimits.js +7 -2
- package/ts_build/src/clients/contextLimits.js.map +1 -1
- package/ts_build/src/clients/copilot.d.ts +4 -0
- package/ts_build/src/clients/copilot.js +15 -0
- package/ts_build/src/clients/copilot.js.map +1 -0
- package/ts_build/src/clients/deepseek.d.ts +4 -0
- package/ts_build/src/clients/deepseek.js +15 -0
- package/ts_build/src/clients/deepseek.js.map +1 -0
- package/ts_build/src/clients/fireworks.d.ts +4 -0
- package/ts_build/src/clients/fireworks.js +15 -0
- package/ts_build/src/clients/fireworks.js.map +1 -0
- package/ts_build/src/clients/gemini.d.ts +1 -0
- package/ts_build/src/clients/gemini.js +28 -1
- package/ts_build/src/clients/gemini.js.map +1 -1
- package/ts_build/src/clients/github.d.ts +4 -0
- package/ts_build/src/clients/github.js +15 -0
- package/ts_build/src/clients/github.js.map +1 -0
- package/ts_build/src/clients/groq.d.ts +4 -0
- package/ts_build/src/clients/groq.js +15 -0
- package/ts_build/src/clients/groq.js.map +1 -0
- package/ts_build/src/clients/http.d.ts +22 -1
- package/ts_build/src/clients/http.js +132 -7
- package/ts_build/src/clients/http.js.map +1 -1
- package/ts_build/src/clients/index.d.ts +22 -0
- package/ts_build/src/clients/index.js +150 -5
- package/ts_build/src/clients/index.js.map +1 -1
- package/ts_build/src/clients/llama.d.ts +4 -0
- package/ts_build/src/clients/llama.js +15 -0
- package/ts_build/src/clients/llama.js.map +1 -0
- package/ts_build/src/clients/mistral.d.ts +4 -0
- package/ts_build/src/clients/mistral.js +15 -0
- package/ts_build/src/clients/mistral.js.map +1 -0
- package/ts_build/src/clients/nvidia.d.ts +4 -0
- package/ts_build/src/clients/nvidia.js +15 -0
- package/ts_build/src/clients/nvidia.js.map +1 -0
- package/ts_build/src/clients/openai.d.ts +4 -206
- package/ts_build/src/clients/openai.js +27 -9
- package/ts_build/src/clients/openai.js.map +1 -1
- package/ts_build/src/clients/openrouter.d.ts +4 -0
- package/ts_build/src/clients/openrouter.js +15 -0
- package/ts_build/src/clients/openrouter.js.map +1 -0
- package/ts_build/src/clients/pricing/anthropic.d.ts +26 -78
- package/ts_build/src/clients/pricing/anthropic.js +75 -78
- package/ts_build/src/clients/pricing/anthropic.js.map +1 -1
- package/ts_build/src/clients/pricing/cerebras.d.ts +4 -0
- package/ts_build/src/clients/pricing/cerebras.js +11 -0
- package/ts_build/src/clients/pricing/cerebras.js.map +1 -0
- package/ts_build/src/clients/pricing/copilot.d.ts +5 -0
- package/ts_build/src/clients/pricing/copilot.js +35 -0
- package/ts_build/src/clients/pricing/copilot.js.map +1 -0
- package/ts_build/src/clients/pricing/deepseek.d.ts +5 -0
- package/ts_build/src/clients/pricing/deepseek.js +10 -0
- package/ts_build/src/clients/pricing/deepseek.js.map +1 -0
- package/ts_build/src/clients/pricing/fireworks.d.ts +5 -0
- package/ts_build/src/clients/pricing/fireworks.js +21 -0
- package/ts_build/src/clients/pricing/fireworks.js.map +1 -0
- package/ts_build/src/clients/pricing/github.d.ts +4 -0
- package/ts_build/src/clients/pricing/github.js +58 -0
- package/ts_build/src/clients/pricing/github.js.map +1 -0
- package/ts_build/src/clients/pricing/google.d.ts +59 -6
- package/ts_build/src/clients/pricing/google.js +214 -167
- package/ts_build/src/clients/pricing/google.js.map +1 -1
- package/ts_build/src/clients/pricing/groq.d.ts +5 -0
- package/ts_build/src/clients/pricing/groq.js +41 -0
- package/ts_build/src/clients/pricing/groq.js.map +1 -0
- package/ts_build/src/clients/pricing/index.d.ts +17 -6
- package/ts_build/src/clients/pricing/index.js +65 -10
- package/ts_build/src/clients/pricing/index.js.map +1 -1
- package/ts_build/src/clients/pricing/llama.d.ts +4 -0
- package/ts_build/src/clients/pricing/llama.js +14 -0
- package/ts_build/src/clients/pricing/llama.js.map +1 -0
- package/ts_build/src/clients/pricing/mistral.d.ts +5 -0
- package/ts_build/src/clients/pricing/mistral.js +23 -0
- package/ts_build/src/clients/pricing/mistral.js.map +1 -0
- package/ts_build/src/clients/pricing/models.d.ts +9 -0
- package/ts_build/src/clients/pricing/models.js +19 -0
- package/ts_build/src/clients/pricing/models.js.map +1 -0
- package/ts_build/src/clients/pricing/nvidia.d.ts +8 -0
- package/ts_build/src/clients/pricing/nvidia.js +96 -0
- package/ts_build/src/clients/pricing/nvidia.js.map +1 -0
- package/ts_build/src/clients/pricing/openai.d.ts +86 -197
- package/ts_build/src/clients/pricing/openai.js +294 -168
- package/ts_build/src/clients/pricing/openai.js.map +1 -1
- package/ts_build/src/clients/pricing/openrouter.d.ts +4 -0
- package/ts_build/src/clients/pricing/openrouter.js +29 -0
- package/ts_build/src/clients/pricing/openrouter.js.map +1 -0
- package/ts_build/src/clients/pricing/types.d.ts +46 -0
- package/ts_build/src/clients/pricing/types.js +49 -0
- package/ts_build/src/clients/pricing/types.js.map +1 -0
- package/ts_build/src/clients/pricing/xai.d.ts +39 -64
- package/ts_build/src/clients/pricing/xai.js +93 -60
- package/ts_build/src/clients/pricing/xai.js.map +1 -1
- package/ts_build/src/clients/types.d.ts +1 -0
- package/ts_build/src/clients/xai.d.ts +2 -58
- package/ts_build/src/clients/xai.js +123 -2
- package/ts_build/src/clients/xai.js.map +1 -1
- package/ts_build/src/fileSync.js +7 -2
- package/ts_build/src/fileSync.js.map +1 -1
- package/ts_build/src/login.js +8 -2
- package/ts_build/src/login.js.map +1 -1
- package/ts_build/src/services/AgentSyncFs.js +1 -0
- package/ts_build/src/services/AgentSyncFs.js.map +1 -1
- package/ts_build/src/services/KnowhowClient.d.ts +1 -0
- package/ts_build/src/services/KnowhowClient.js +7 -0
- package/ts_build/src/services/KnowhowClient.js.map +1 -1
- package/ts_build/src/services/LazyToolsService.d.ts +1 -0
- package/ts_build/src/services/LazyToolsService.js +3 -0
- package/ts_build/src/services/LazyToolsService.js.map +1 -1
- package/ts_build/src/services/S3.js +0 -7
- package/ts_build/src/services/S3.js.map +1 -1
- package/ts_build/src/services/SyncedAgentWatcher.d.ts +0 -51
- package/ts_build/src/services/SyncedAgentWatcher.js +1 -282
- package/ts_build/src/services/SyncedAgentWatcher.js.map +1 -1
- package/ts_build/src/services/index.d.ts +1 -0
- package/ts_build/src/services/index.js +1 -0
- package/ts_build/src/services/index.js.map +1 -1
- package/ts_build/src/services/modules/index.js +41 -1
- package/ts_build/src/services/modules/index.js.map +1 -1
- package/ts_build/src/services/watchers/FsSyncer.d.ts +27 -0
- package/ts_build/src/services/watchers/FsSyncer.js +135 -0
- package/ts_build/src/services/watchers/FsSyncer.js.map +1 -0
- package/ts_build/src/services/watchers/RemoteSyncer.d.ts +28 -0
- package/ts_build/src/services/watchers/RemoteSyncer.js +126 -0
- package/ts_build/src/services/watchers/RemoteSyncer.js.map +1 -0
- package/ts_build/src/services/watchers/index.d.ts +2 -0
- package/ts_build/src/services/watchers/index.js +19 -0
- package/ts_build/src/services/watchers/index.js.map +1 -0
- package/ts_build/src/types.d.ts +163 -124
- package/ts_build/src/types.js +33 -213
- package/ts_build/src/types.js.map +1 -1
- package/ts_build/src/worker.d.ts +4 -0
- package/ts_build/src/worker.js +140 -0
- package/ts_build/src/worker.js.map +1 -1
- package/ts_build/tests/clients/pricing.test.js +21 -0
- package/ts_build/tests/clients/pricing.test.js.map +1 -1
- package/ts_build/tests/manual/clients/completions.test.js +27 -24
- package/ts_build/tests/manual/clients/completions.test.js.map +1 -1
- package/src/clients/pricing/catalog.ts +0 -287
- package/ts_build/src/clients/pricing/catalog.d.ts +0 -28
- package/ts_build/src/clients/pricing/catalog.js +0 -179
- package/ts_build/src/clients/pricing/catalog.js.map +0 -1
package/src/clients/openai.ts
CHANGED
|
@@ -34,12 +34,14 @@ import {
|
|
|
34
34
|
EmbeddingModels,
|
|
35
35
|
Models,
|
|
36
36
|
OpenAiReasoningModels,
|
|
37
|
+
OpenAiChatModels,
|
|
37
38
|
OpenAiResponsesOnlyModels,
|
|
38
39
|
OpenAiImageModels,
|
|
39
40
|
OpenAiVideoModels,
|
|
40
41
|
OpenAiTTSModels,
|
|
41
42
|
OpenAiTranscriptionModels,
|
|
42
|
-
|
|
43
|
+
OpenAiEmbeddingModelsList,
|
|
44
|
+
OpenAiRealtimeModels,
|
|
43
45
|
} from "../types";
|
|
44
46
|
import { ModelModality } from "./types";
|
|
45
47
|
|
|
@@ -64,7 +66,11 @@ export class GenericOpenAiClient implements GenericClient {
|
|
|
64
66
|
reasoningEffort(
|
|
65
67
|
messages: CompletionOptions["messages"]
|
|
66
68
|
): "low" | "medium" | "high" {
|
|
67
|
-
|
|
69
|
+
return this.detectReasoningEffort(messages);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
detectReasoningEffort(messages: CompletionOptions["messages"]): "low" | "medium" | "high" {
|
|
73
|
+
const effortMap: Record<string, "low" | "medium" | "high"> = {
|
|
68
74
|
ultrathink: "high",
|
|
69
75
|
"think hard": "high",
|
|
70
76
|
"reason hard": "high",
|
|
@@ -96,6 +102,30 @@ export class GenericOpenAiClient implements GenericClient {
|
|
|
96
102
|
return "medium"; // Default to medium if no specific effort is mentioned
|
|
97
103
|
}
|
|
98
104
|
|
|
105
|
+
resolveReasoningEffort(options: CompletionOptions): "low" | "medium" | "high" {
|
|
106
|
+
return options.reasoning_effort ?? this.detectReasoningEffort(options.messages);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Resolves the reasoning effort for a specific model, clamping to the model's
|
|
111
|
+
* supported levels if `reasoningLevels` is set in its pricing entry.
|
|
112
|
+
* If the requested level is not supported, picks the lowest supported level.
|
|
113
|
+
*/
|
|
114
|
+
resolveReasoningEffortForModel(options: CompletionOptions): string {
|
|
115
|
+
const requested = options.reasoning_effort ?? this.detectReasoningEffort(options.messages);
|
|
116
|
+
const pricing = OpenAiTextPricing[options.model];
|
|
117
|
+
const supportedLevels = pricing?.reasoningLevels;
|
|
118
|
+
if (!supportedLevels || supportedLevels.length === 0) {
|
|
119
|
+
return requested;
|
|
120
|
+
}
|
|
121
|
+
// If the requested level is supported, use it
|
|
122
|
+
if (supportedLevels.includes(requested)) {
|
|
123
|
+
return requested;
|
|
124
|
+
}
|
|
125
|
+
// Otherwise use the first (lowest) supported level
|
|
126
|
+
return supportedLevels[0];
|
|
127
|
+
}
|
|
128
|
+
|
|
99
129
|
async createChatCompletion(
|
|
100
130
|
options: CompletionOptions
|
|
101
131
|
): Promise<CompletionResponse> {
|
|
@@ -122,8 +152,8 @@ export class GenericOpenAiClient implements GenericClient {
|
|
|
122
152
|
max_tokens: options.max_tokens,
|
|
123
153
|
...(OpenAiReasoningModels.includes(options.model) && {
|
|
124
154
|
max_tokens: undefined,
|
|
125
|
-
max_completion_tokens: Math.max(options.max_tokens,
|
|
126
|
-
reasoning_effort: this.
|
|
155
|
+
max_completion_tokens: Math.max(options.max_tokens ?? 0, 16_000),
|
|
156
|
+
reasoning_effort: this.resolveReasoningEffort(options),
|
|
127
157
|
}),
|
|
128
158
|
|
|
129
159
|
...(options.tools && {
|
|
@@ -254,7 +284,7 @@ export class GenericOpenAiClient implements GenericClient {
|
|
|
254
284
|
// Don't limit max_output_tokens for Responses API - codex truncates tool call arguments when limited
|
|
255
285
|
...(OpenAiReasoningModels.includes(options.model) && {
|
|
256
286
|
max_output_tokens: Math.max(options.max_tokens || 0, 16000),
|
|
257
|
-
reasoning: { effort: this.
|
|
287
|
+
reasoning: { effort: this.resolveReasoningEffortForModel(options) },
|
|
258
288
|
}),
|
|
259
289
|
...(tools?.length && {
|
|
260
290
|
tools,
|
|
@@ -349,14 +379,14 @@ export class GenericOpenAiClient implements GenericClient {
|
|
|
349
379
|
("prompt_tokens_details" in usage &&
|
|
350
380
|
usage.prompt_tokens_details?.cached_tokens) ||
|
|
351
381
|
0;
|
|
352
|
-
const cachedInputCost = (cachedInputTokens * pricing.cached_input) / 1e6;
|
|
382
|
+
const cachedInputCost = (cachedInputTokens * (pricing.cached_input ?? 0)) / 1e6;
|
|
353
383
|
|
|
354
384
|
const inputTokens = usage.prompt_tokens;
|
|
355
|
-
const inputCost = ((inputTokens -
|
|
385
|
+
const inputCost = ((inputTokens - cachedInputTokens) * (pricing.input ?? 0)) / 1e6;
|
|
356
386
|
|
|
357
387
|
const outputTokens =
|
|
358
388
|
("completion_tokens" in usage && usage?.completion_tokens) || 0;
|
|
359
|
-
const outputCost = (outputTokens * pricing.output) / 1e6;
|
|
389
|
+
const outputCost = (outputTokens * (pricing.output ?? 0)) / 1e6;
|
|
360
390
|
|
|
361
391
|
const total = cachedInputCost + inputCost + outputCost;
|
|
362
392
|
return total;
|
|
@@ -365,8 +395,8 @@ export class GenericOpenAiClient implements GenericClient {
|
|
|
365
395
|
async getModels(modality?: ModelModality): Promise<{ id: string }[]> {
|
|
366
396
|
if (modality) {
|
|
367
397
|
const map: Partial<Record<ModelModality, string[]>> = {
|
|
368
|
-
completion:
|
|
369
|
-
embedding:
|
|
398
|
+
completion: [...new Set([...OpenAiChatModels, ...OpenAiResponsesOnlyModels])],
|
|
399
|
+
embedding: OpenAiEmbeddingModelsList,
|
|
370
400
|
image: OpenAiImageModels,
|
|
371
401
|
audio: [...OpenAiTTSModels, ...OpenAiTranscriptionModels],
|
|
372
402
|
transcription: OpenAiTranscriptionModels,
|
|
@@ -406,7 +436,7 @@ export class GenericOpenAiClient implements GenericClient {
|
|
|
406
436
|
}
|
|
407
437
|
|
|
408
438
|
const response = await this.client.audio.transcriptions.create({
|
|
409
|
-
file
|
|
439
|
+
file,
|
|
410
440
|
model: options.model || "whisper-1",
|
|
411
441
|
language: options.language,
|
|
412
442
|
prompt: options.prompt,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HttpClient } from "./http";
|
|
2
|
+
import { OpenRouterTextPricing } from "./pricing/openrouter";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* OpenRouter client — OpenAI-compatible API aggregator
|
|
6
|
+
* https://openrouter.ai/docs
|
|
7
|
+
* 39+ free models; append `:free` suffix to a model id for the free variant.
|
|
8
|
+
* One API key gives access to models from many providers.
|
|
9
|
+
* Set env var OPENROUTER_API_KEY to enable.
|
|
10
|
+
*/
|
|
11
|
+
export class GenericOpenRouterClient extends HttpClient {
|
|
12
|
+
constructor(apiKey = process.env.OPENROUTER_API_KEY) {
|
|
13
|
+
super("https://openrouter.ai/api");
|
|
14
|
+
if (apiKey) this.setJwt(apiKey);
|
|
15
|
+
this.setPrices(OpenRouterTextPricing);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -1,80 +1,107 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic model IDs, pricing, and catalog.
|
|
3
|
+
* Single source of truth for all Anthropic/Claude models.
|
|
4
|
+
* Deprecation dates from: https://docs.anthropic.com/en/docs/about-claude/model-deprecations
|
|
5
|
+
*/
|
|
6
|
+
import { completions, ModelCatalogEntry, ModelPricing } from "./types";
|
|
2
7
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
},
|
|
74
|
-
[
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
},
|
|
8
|
+
// ─── Model IDs ────────────────────────────────────────────────────────────────
|
|
9
|
+
|
|
10
|
+
export const AnthropicModels = {
|
|
11
|
+
// Active models
|
|
12
|
+
Opus4_7: "claude-opus-4-7",
|
|
13
|
+
Opus4_6: "claude-opus-4-6",
|
|
14
|
+
Opus4_6Fast: "claude-opus-4-6-fast",
|
|
15
|
+
Sonnet4_6: "claude-sonnet-4-6",
|
|
16
|
+
Opus4_5: "claude-opus-4-5-20251101",
|
|
17
|
+
Opus4_1: "claude-opus-4-1-20250805",
|
|
18
|
+
Sonnet4_5: "claude-sonnet-4-5-20250929",
|
|
19
|
+
Haiku4_5: "claude-haiku-4-5-20251001",
|
|
20
|
+
// Deprecated models (per Anthropic deprecation page)
|
|
21
|
+
Opus4: "claude-opus-4-20250514", // deprecated 2026-04-14, retirement 2026-06-15
|
|
22
|
+
Sonnet4: "claude-sonnet-4-20250514", // deprecated 2026-04-14, retirement 2026-06-15
|
|
23
|
+
Sonnet3_7: "claude-3-7-sonnet-20250219", // retired 2026-02-19
|
|
24
|
+
Sonnet3_5: "claude-3-5-sonnet-20241022", // retired 2025-10-28
|
|
25
|
+
Sonnet3_5_20240620: "claude-3-5-sonnet-20240620", // earlier version, retired
|
|
26
|
+
Haiku3_5_Latest: "claude-3-5-haiku-latest", // alias → claude-3-5-haiku-20241022, retired
|
|
27
|
+
Sonnet3: "claude-3-sonnet-20240229", // retired
|
|
28
|
+
// models.dev alias IDs (versioned as -0 suffix instead of date)
|
|
29
|
+
Opus4_0: "claude-opus-4-0", // alias for claude-opus-4-20250514, deprecated
|
|
30
|
+
Sonnet4_0: "claude-sonnet-4-0", // alias for claude-sonnet-4-20250514, deprecated
|
|
31
|
+
Haiku3_5: "claude-3-5-haiku-20241022", // retired 2026-02-19
|
|
32
|
+
Opus3: "claude-3-opus-20240229", // retired 2026-01-05
|
|
33
|
+
Haiku3: "claude-3-haiku-20240307", // retired 2026-04-20
|
|
34
|
+
} as const;
|
|
35
|
+
|
|
36
|
+
// ─── Active (non-deprecated) text models ──────────────────────────────────────
|
|
37
|
+
|
|
38
|
+
export const AnthropicTextModels: string[] = [
|
|
39
|
+
AnthropicModels.Opus4_7,
|
|
40
|
+
AnthropicModels.Opus4_6,
|
|
41
|
+
AnthropicModels.Sonnet4_6,
|
|
42
|
+
AnthropicModels.Opus4_5,
|
|
43
|
+
AnthropicModels.Opus4_1,
|
|
44
|
+
AnthropicModels.Sonnet4_5,
|
|
45
|
+
AnthropicModels.Haiku4_5,
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
// Models in our catalog but not yet publicly available
|
|
49
|
+
export const AnthropicLimitedAvailabilityModels: string[] = [
|
|
50
|
+
AnthropicModels.Opus4_6Fast, // 404 – not publicly available yet
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
// ─── All models for catalog (active + limited + deprecated/retired) ───────────
|
|
54
|
+
// Deprecation/replacement metadata is embedded in AnthropicTextPricing entries.
|
|
55
|
+
const AnthropicAllModels: string[] = [
|
|
56
|
+
...AnthropicTextModels,
|
|
57
|
+
...AnthropicLimitedAvailabilityModels,
|
|
58
|
+
// Deprecated (retirement 2026-06-15)
|
|
59
|
+
AnthropicModels.Opus4,
|
|
60
|
+
AnthropicModels.Sonnet4,
|
|
61
|
+
// Retired — kept for historical cost tracking
|
|
62
|
+
AnthropicModels.Sonnet3_7,
|
|
63
|
+
AnthropicModels.Sonnet3_5,
|
|
64
|
+
AnthropicModels.Sonnet3_5_20240620,
|
|
65
|
+
AnthropicModels.Haiku3_5_Latest,
|
|
66
|
+
AnthropicModels.Sonnet3,
|
|
67
|
+
AnthropicModels.Opus4_0,
|
|
68
|
+
AnthropicModels.Sonnet4_0,
|
|
69
|
+
AnthropicModels.Haiku3_5,
|
|
70
|
+
AnthropicModels.Opus3,
|
|
71
|
+
AnthropicModels.Haiku3,
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
// ─── Pricing (USD per 1M tokens) ──────────────────────────────────────────────
|
|
75
|
+
|
|
76
|
+
export const AnthropicTextPricing: Record<string, ModelPricing> = {
|
|
77
|
+
[AnthropicModels.Opus4_7]: { input: 5.0, cache_write: 6.25, cache_hit: 0.5, output: 25.0 },
|
|
78
|
+
[AnthropicModels.Opus4_6]: { input: 5.0, cache_write: 6.25, cache_hit: 0.5, output: 25.0 },
|
|
79
|
+
[AnthropicModels.Opus4_6Fast]: { input: 30.0, cache_write: 37.5, cache_hit: 3.0, output: 150.0, limitedAvailability: true },
|
|
80
|
+
[AnthropicModels.Sonnet4_6]: { input: 3.0, cache_write: 3.75, cache_hit: 0.3, output: 15.0 },
|
|
81
|
+
[AnthropicModels.Opus4_5]: { input: 5.0, cache_write: 6.25, cache_hit: 0.5, output: 25.0 },
|
|
82
|
+
[AnthropicModels.Opus4_1]: { input: 15.0, cache_write: 18.75, cache_hit: 1.5, output: 75.0 },
|
|
83
|
+
[AnthropicModels.Sonnet4_5]: { input: 3.0, input_gt_200k: 6.0, cache_write: 3.75, cache_hit: 0.3, output: 15.0, output_gt_200k: 22.5 },
|
|
84
|
+
[AnthropicModels.Haiku4_5]: { input: 1.0, cache_write: 1.25, cache_hit: 0.1, output: 5.0 },
|
|
85
|
+
// Deprecated — pricing retained for cost tracking
|
|
86
|
+
[AnthropicModels.Opus4]: { input: 15.0, cache_write: 18.75, cache_hit: 1.5, output: 75.0, deprecated: true, deprecationDate: "2026-06-15" },
|
|
87
|
+
[AnthropicModels.Sonnet4]: { input: 3.0, input_gt_200k: 6.0, cache_write: 3.75, cache_hit: 0.3, output: 15.0, output_gt_200k: 22.5, deprecated: true, deprecationDate: "2026-06-15" },
|
|
88
|
+
// Retired — pricing retained for cost tracking of historical usage
|
|
89
|
+
[AnthropicModels.Sonnet3_7]: { input: 3.0, cache_write: 3.75, cache_hit: 0.3, output: 15.0, deprecated: true, deprecationDate: "2026-02-19" },
|
|
90
|
+
[AnthropicModels.Sonnet3_5]: { input: 3.0, cache_write: 3.75, cache_hit: 0.3, output: 15.0, deprecated: true, deprecationDate: "2025-10-28" },
|
|
91
|
+
[AnthropicModels.Sonnet3_5_20240620]: { input: 3.0, cache_write: 3.75, cache_hit: 0.3, output: 15.0, deprecated: true, deprecationDate: "2025-10-28" },
|
|
92
|
+
[AnthropicModels.Haiku3_5_Latest]: { input: 0.8, cache_write: 1.0, cache_hit: 0.08, output: 4.0, deprecated: true, deprecationDate: "2026-02-19" },
|
|
93
|
+
[AnthropicModels.Sonnet3]: { input: 3.0, cache_write: 3.75, cache_hit: 0.3, output: 15.0, deprecated: true },
|
|
94
|
+
[AnthropicModels.Opus4_0]: { input: 15.0, cache_write: 18.75, cache_hit: 1.5, output: 75.0, deprecated: true, deprecationDate: "2026-06-15" },
|
|
95
|
+
[AnthropicModels.Sonnet4_0]: { input: 3.0, cache_write: 3.75, cache_hit: 0.3, output: 15.0, deprecated: true, deprecationDate: "2026-06-15" },
|
|
96
|
+
[AnthropicModels.Haiku3_5]: { input: 0.8, cache_write: 1.0, cache_hit: 0.08, output: 4.0, deprecated: true, deprecationDate: "2026-02-19" },
|
|
97
|
+
[AnthropicModels.Opus3]: { input: 15.0, cache_write: 18.75, cache_hit: 1.5, output: 75.0, deprecated: true, deprecationDate: "2026-01-05" },
|
|
98
|
+
[AnthropicModels.Haiku3]: { input: 0.25, cache_write: 0.3125, cache_hit: 0.025, output: 1.25, deprecated: true, deprecationDate: "2026-04-20" },
|
|
80
99
|
};
|
|
100
|
+
|
|
101
|
+
// ─── Catalog ──────────────────────────────────────────────────────────────────
|
|
102
|
+
// Metadata (deprecated, deprecationDate, limitedAvailability) is read directly
|
|
103
|
+
// from the AnthropicTextPricing entries — no need for separate groups.
|
|
104
|
+
|
|
105
|
+
export const ANTHROPIC_MODEL_CATALOG: ModelCatalogEntry[] = [
|
|
106
|
+
...completions(AnthropicAllModels, "anthropic", AnthropicTextPricing),
|
|
107
|
+
];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cerebras pricing (USD per 1M tokens)
|
|
3
|
+
* Source: https://cerebras.ai/pricing
|
|
4
|
+
*/
|
|
5
|
+
export const CerebrasTextPricing: Record<string, { input: number; output: number }> = {
|
|
6
|
+
"llama3.1-8b": { input: 0.10, output: 0.10 },
|
|
7
|
+
"llama3.3-70b": { input: 0.85, output: 1.20 },
|
|
8
|
+
"qwen-3-235b-a22b-instruct-2507": { input: 0.60, output: 1.20 },
|
|
9
|
+
"gpt-oss-120b": { input: 0.25, output: 0.69 },
|
|
10
|
+
"zai-glm-4.7": { input: 2.25, output: 2.75 },
|
|
11
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Copilot pricing — "premium request" multiplier system.
|
|
3
|
+
*
|
|
4
|
+
* GitHub Copilot does NOT charge per token. Instead each model call costs a
|
|
5
|
+
* certain number of "premium requests" from the subscriber's monthly allowance.
|
|
6
|
+
* All models are effectively $0/token from the perspective of knowhow pricing,
|
|
7
|
+
* but we store the multiplier as metadata for informational purposes.
|
|
8
|
+
*
|
|
9
|
+
* Copilot Individual: 300 premium requests/month
|
|
10
|
+
* Copilot Pro: 300 premium requests/month
|
|
11
|
+
* Copilot Business: 300 premium requests/month (per seat)
|
|
12
|
+
* Copilot Enterprise: 300 premium requests/month (per seat)
|
|
13
|
+
*
|
|
14
|
+
* Model IDs are as returned by https://api.githubcopilot.com/models
|
|
15
|
+
* Source: https://docs.github.com/en/copilot/reference/ai-models/supported-models
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/** Copilot premium request multipliers (informational only) */
|
|
19
|
+
export const CopilotModelMultipliers: Record<string, number> = {
|
|
20
|
+
// OpenAI models
|
|
21
|
+
"gpt-4o": 0, // free (base request)
|
|
22
|
+
"gpt-4.1": 0, // free (base request)
|
|
23
|
+
"gpt-5-mini": 0, // free (base request)
|
|
24
|
+
"gpt-5.2": 1,
|
|
25
|
+
"gpt-5.2-codex": 1,
|
|
26
|
+
"gpt-5.3-codex": 1,
|
|
27
|
+
"gpt-5.4": 1,
|
|
28
|
+
"gpt-5.4-mini": 0.33,
|
|
29
|
+
"gpt-5.4-nano": 0.25,
|
|
30
|
+
"gpt-5.5": 7.5, // promotional until further notice
|
|
31
|
+
"gpt-5": 1,
|
|
32
|
+
"gpt-5.1": 1,
|
|
33
|
+
"gpt-5.1-codex": 1,
|
|
34
|
+
"gpt-5.1-codex-max": 1,
|
|
35
|
+
"gpt-5.1-codex-mini": 1,
|
|
36
|
+
// Anthropic models
|
|
37
|
+
"claude-haiku-4.5": 0.33,
|
|
38
|
+
"claude-sonnet-4": 1,
|
|
39
|
+
"claude-sonnet-4.5": 1,
|
|
40
|
+
"claude-sonnet-4.6": 1,
|
|
41
|
+
"claude-opus-4.5": 3,
|
|
42
|
+
"claude-opus-4.6": 3,
|
|
43
|
+
"claude-opus-41": 3,
|
|
44
|
+
"claude-opus-4.7": 7.5, // promotional until April 30, 2026
|
|
45
|
+
// Google models
|
|
46
|
+
"gemini-2.5-pro": 1,
|
|
47
|
+
"gemini-3-flash-preview": 0.33,
|
|
48
|
+
"gemini-3.1-pro-preview": 1,
|
|
49
|
+
"gemini-3-pro-preview": 1,
|
|
50
|
+
// xAI models
|
|
51
|
+
"grok-code-fast-1": 0.25,
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Copilot pricing is all $0/token — consumption is via premium request allowance.
|
|
56
|
+
* This map is used by the check-model-pricing script to recognise registered models.
|
|
57
|
+
*/
|
|
58
|
+
export const CopilotTextPricing: Record<string, { input: number; output: number }> = Object.fromEntries(
|
|
59
|
+
Object.keys(CopilotModelMultipliers).map((id) => [id, { input: 0.0, output: 0.0 }])
|
|
60
|
+
);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeepSeek pricing (USD per 1M tokens)
|
|
3
|
+
* Source: https://platform.deepseek.com/pricing
|
|
4
|
+
*/
|
|
5
|
+
export const DeepSeekTextPricing: Record<string, { input: number; output: number; cached_input?: number }> = {
|
|
6
|
+
// DeepSeek V3 / deepseek-chat — updated 2026-04 (now routes to DeepSeek V3-0324)
|
|
7
|
+
// Source: api-docs.deepseek.com/quick_start/pricing
|
|
8
|
+
"deepseek-chat": { input: 0.28, output: 0.42, cached_input: 0.028 },
|
|
9
|
+
// DeepSeek R1 / deepseek-reasoner — same unified pricing as V3
|
|
10
|
+
// Source: api-docs.deepseek.com/quick_start/pricing (costgoat.com verification)
|
|
11
|
+
"deepseek-reasoner": { input: 0.28, output: 0.42, cached_input: 0.028 },
|
|
12
|
+
// DeepSeek V4 Flash & Pro
|
|
13
|
+
"deepseek-v4-flash": { input: 0.14, output: 0.28 },
|
|
14
|
+
"deepseek-v4-pro": { input: 1.74, output: 3.48 },
|
|
15
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fireworks AI pricing (USD per 1M tokens)
|
|
3
|
+
* Source: https://fireworks.ai/pricing
|
|
4
|
+
*/
|
|
5
|
+
export const FireworksTextPricing: Record<string, { input: number; output: number; cache_hit?: number }> = {
|
|
6
|
+
// Moonshot AI
|
|
7
|
+
"accounts/fireworks/models/kimi-k2-6": { input: 0.95, cache_hit: 0.16, output: 4.0 },
|
|
8
|
+
"accounts/fireworks/models/kimi-k2-5": { input: 0.60, cache_hit: 0.10, output: 3.0 },
|
|
9
|
+
|
|
10
|
+
// MiniMax
|
|
11
|
+
"accounts/fireworks/models/minimax-m2-7": { input: 0.30, cache_hit: 0.06, output: 1.20 },
|
|
12
|
+
"accounts/fireworks/models/minimax-m2-5": { input: 0.30, cache_hit: 0.03, output: 1.20 },
|
|
13
|
+
|
|
14
|
+
// Qwen
|
|
15
|
+
"accounts/fireworks/models/qwen3-6-plus": { input: 0.50, cache_hit: 0.10, output: 3.0 },
|
|
16
|
+
"accounts/fireworks/models/qwen3p6-plus": { input: 0.50, cache_hit: 0.10, output: 3.0 },
|
|
17
|
+
"accounts/fireworks/models/qwen3-vl-30b-a3b-thinking": { input: 0.15, cache_hit: 0.08, output: 0.60 },
|
|
18
|
+
"accounts/fireworks/models/qwen3-vl-30b-a3b-instruct": { input: 0.15, cache_hit: 0.08, output: 0.60 },
|
|
19
|
+
"accounts/fireworks/models/qwen3-8b": { input: 0.20, cache_hit: 0.10, output: 0.20 },
|
|
20
|
+
|
|
21
|
+
// Z.ai
|
|
22
|
+
"accounts/fireworks/models/glm-5-1": { input: 1.40, cache_hit: 0.26, output: 4.40 },
|
|
23
|
+
"accounts/fireworks/models/glm-5": { input: 1.00, cache_hit: 0.20, output: 3.20 },
|
|
24
|
+
"accounts/fireworks/models/glm-4-7": { input: 0.60, cache_hit: 0.30, output: 2.20 },
|
|
25
|
+
|
|
26
|
+
// DeepSeek AI
|
|
27
|
+
"accounts/fireworks/models/deepseek-v3-2": { input: 0.56, cache_hit: 0.28, output: 1.68 },
|
|
28
|
+
"accounts/fireworks/models/deepseek-v3-1": { input: 0.56, cache_hit: 0.28, output: 1.68 },
|
|
29
|
+
|
|
30
|
+
// OpenAI OSS
|
|
31
|
+
"accounts/fireworks/models/gpt-oss-120b": { input: 0.15, cache_hit: 0.01, output: 0.60 },
|
|
32
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Models pricing (USD per 1M tokens)
|
|
3
|
+
* Source: https://github.com/marketplace/models
|
|
4
|
+
* All models are free within rate limits for GitHub users.
|
|
5
|
+
* Low-tier (higher rate limits) and high-tier (lower rate limits) exist.
|
|
6
|
+
*/
|
|
7
|
+
export const GitHubModelsTextPricing: Record<string, { input: number; output: number }> = {
|
|
8
|
+
// OpenAI via GitHub (free)
|
|
9
|
+
"openai/gpt-4o": { input: 0.0, output: 0.0 },
|
|
10
|
+
"openai/gpt-4o-mini": { input: 0.0, output: 0.0 },
|
|
11
|
+
"openai/o1": { input: 0.0, output: 0.0 },
|
|
12
|
+
"openai/o1-mini": { input: 0.0, output: 0.0 },
|
|
13
|
+
"openai/o3-mini": { input: 0.0, output: 0.0 },
|
|
14
|
+
"openai/o4-mini": { input: 0.0, output: 0.0 },
|
|
15
|
+
"openai/gpt-4.1": { input: 0.0, output: 0.0 },
|
|
16
|
+
"openai/gpt-4.1-mini": { input: 0.0, output: 0.0 },
|
|
17
|
+
"openai/gpt-4.1-nano": { input: 0.0, output: 0.0 },
|
|
18
|
+
"openai/o3": { input: 0.0, output: 0.0 },
|
|
19
|
+
// DeepSeek via GitHub (free)
|
|
20
|
+
"deepseek/deepseek-r1": { input: 0.0, output: 0.0 },
|
|
21
|
+
"deepseek/deepseek-v3-0324": { input: 0.0, output: 0.0 },
|
|
22
|
+
// Microsoft Phi via GitHub (free)
|
|
23
|
+
"microsoft/phi-4": { input: 0.0, output: 0.0 },
|
|
24
|
+
"microsoft/phi-4-mini-instruct": { input: 0.0, output: 0.0 },
|
|
25
|
+
"microsoft/phi-4-multimodal-instruct": { input: 0.0, output: 0.0 },
|
|
26
|
+
"microsoft/phi-4-mini-reasoning": { input: 0.0, output: 0.0 },
|
|
27
|
+
"microsoft/phi-4-reasoning": { input: 0.0, output: 0.0 },
|
|
28
|
+
"microsoft/phi-3-medium-128k-instruct": { input: 0.0, output: 0.0 },
|
|
29
|
+
"microsoft/phi-3-medium-4k-instruct": { input: 0.0, output: 0.0 },
|
|
30
|
+
"microsoft/phi-3-mini-128k-instruct": { input: 0.0, output: 0.0 },
|
|
31
|
+
"microsoft/phi-3-mini-4k-instruct": { input: 0.0, output: 0.0 },
|
|
32
|
+
"microsoft/phi-3-small-128k-instruct": { input: 0.0, output: 0.0 },
|
|
33
|
+
"microsoft/phi-3-small-8k-instruct": { input: 0.0, output: 0.0 },
|
|
34
|
+
"microsoft/phi-3.5-mini-instruct": { input: 0.0, output: 0.0 },
|
|
35
|
+
"microsoft/phi-3.5-moe-instruct": { input: 0.0, output: 0.0 },
|
|
36
|
+
"microsoft/phi-3.5-vision-instruct": { input: 0.0, output: 0.0 },
|
|
37
|
+
"microsoft/mai-ds-r1": { input: 0.0, output: 0.0 },
|
|
38
|
+
// Meta Llama via GitHub (free)
|
|
39
|
+
"meta/llama-3.3-70b-instruct": { input: 0.0, output: 0.0 },
|
|
40
|
+
"meta/llama-3.2-11b-vision-instruct": { input: 0.0, output: 0.0 },
|
|
41
|
+
"meta/llama-3.1-405b-instruct": { input: 0.0, output: 0.0 },
|
|
42
|
+
"meta/llama-3.2-90b-vision-instruct": { input: 0.0, output: 0.0 },
|
|
43
|
+
"meta/llama-4-maverick-17b-128e-instruct-fp8": { input: 0.0, output: 0.0 },
|
|
44
|
+
"meta/llama-4-scout-17b-16e-instruct": { input: 0.0, output: 0.0 },
|
|
45
|
+
"meta/meta-llama-3-70b-instruct": { input: 0.0, output: 0.0 },
|
|
46
|
+
"meta/meta-llama-3-8b-instruct": { input: 0.0, output: 0.0 },
|
|
47
|
+
"meta/meta-llama-3.1-405b-instruct": { input: 0.0, output: 0.0 },
|
|
48
|
+
"meta/meta-llama-3.1-70b-instruct": { input: 0.0, output: 0.0 },
|
|
49
|
+
"meta/meta-llama-3.1-8b-instruct": { input: 0.0, output: 0.0 },
|
|
50
|
+
// Mistral via GitHub (free)
|
|
51
|
+
"mistral-ai/mistral-large-2411": { input: 0.0, output: 0.0 },
|
|
52
|
+
"mistral-ai/mistral-small-2503": { input: 0.0, output: 0.0 },
|
|
53
|
+
"mistral-ai/codestral-2501": { input: 0.0, output: 0.0 },
|
|
54
|
+
"mistral-ai/ministral-3b": { input: 0.0, output: 0.0 },
|
|
55
|
+
"mistral-ai/mistral-medium-2505": { input: 0.0, output: 0.0 },
|
|
56
|
+
"mistral-ai/mistral-nemo": { input: 0.0, output: 0.0 },
|
|
57
|
+
// Cohere via GitHub (free)
|
|
58
|
+
"cohere/cohere-command-r-plus-08-2024": { input: 0.0, output: 0.0 },
|
|
59
|
+
"cohere/cohere-command-r-08-2024": { input: 0.0, output: 0.0 },
|
|
60
|
+
"cohere/cohere-command-a": { input: 0.0, output: 0.0 },
|
|
61
|
+
// AI21 via GitHub (free)
|
|
62
|
+
"ai21-labs/ai21-jamba-1.5-mini": { input: 0.0, output: 0.0 },
|
|
63
|
+
"ai21-labs/ai21-jamba-1.5-large": { input: 0.0, output: 0.0 },
|
|
64
|
+
// Core42
|
|
65
|
+
"core42/jais-30b-chat": { input: 0.0, output: 0.0 },
|
|
66
|
+
// xAI via GitHub (free)
|
|
67
|
+
"xai/grok-3": { input: 0.0, output: 0.0 },
|
|
68
|
+
"xai/grok-3-mini": { input: 0.0, output: 0.0 },
|
|
69
|
+
};
|