190 lines
5.3 KiB
TypeScript
190 lines
5.3 KiB
TypeScript
import type { ModelDefinitionConfig } from "../config/types.js";
|
|
|
|
export const DEFAULT_MINIMAX_BASE_URL = "https://api.minimax.io/v1";
|
|
export const MINIMAX_API_BASE_URL = "https://api.minimax.io/anthropic";
|
|
export const MINIMAX_HOSTED_MODEL_ID = "MiniMax-M2.1";
|
|
export const MINIMAX_HOSTED_MODEL_REF = `minimax/${MINIMAX_HOSTED_MODEL_ID}`;
|
|
export const DEFAULT_MINIMAX_CONTEXT_WINDOW = 200000;
|
|
export const DEFAULT_MINIMAX_MAX_TOKENS = 8192;
|
|
|
|
export const MOONSHOT_BASE_URL = "https://api.moonshot.ai/v1";
|
|
export const MOONSHOT_DEFAULT_MODEL_ID = "kimi-k2-0905-preview";
|
|
export const MOONSHOT_DEFAULT_MODEL_REF = `moonshot/${MOONSHOT_DEFAULT_MODEL_ID}`;
|
|
export const MOONSHOT_DEFAULT_CONTEXT_WINDOW = 256000;
|
|
export const MOONSHOT_DEFAULT_MAX_TOKENS = 8192;
|
|
|
|
export const CHUTES_BASE_URL = "https://llm.chutes.ai/v1";
|
|
export const CHUTES_DEFAULT_MODEL_ID = "zai-org/GLM-4.7-Flash";
|
|
export const CHUTES_DEFAULT_MODEL_REF = `chutes/${CHUTES_DEFAULT_MODEL_ID}`;
|
|
export const CHUTES_DEFAULT_CONTEXT_WINDOW = 128000;
|
|
export const CHUTES_DEFAULT_MAX_TOKENS = 4096;
|
|
|
|
export const KIMI_CODE_BASE_URL = "https://api.kimi.com/coding/v1";
|
|
export const KIMI_CODE_MODEL_ID = "kimi-for-coding";
|
|
export const KIMI_CODE_MODEL_REF = `kimi-code/${KIMI_CODE_MODEL_ID}`;
|
|
export const KIMI_CODE_CONTEXT_WINDOW = 262144;
|
|
export const KIMI_CODE_MAX_TOKENS = 32768;
|
|
export const KIMI_CODE_HEADERS = { "User-Agent": "KimiCLI/0.77" } as const;
|
|
export const KIMI_CODE_COMPAT = { supportsDeveloperRole: false } as const;
|
|
|
|
// Pricing: MiniMax doesn't publish public rates. Override in models.json for accurate costs.
|
|
export const MINIMAX_API_COST = {
|
|
input: 15,
|
|
output: 60,
|
|
cacheRead: 2,
|
|
cacheWrite: 10,
|
|
};
|
|
export const MINIMAX_HOSTED_COST = {
|
|
input: 0,
|
|
output: 0,
|
|
cacheRead: 0,
|
|
cacheWrite: 0,
|
|
};
|
|
export const MINIMAX_LM_STUDIO_COST = {
|
|
input: 0,
|
|
output: 0,
|
|
cacheRead: 0,
|
|
cacheWrite: 0,
|
|
};
|
|
export const MOONSHOT_DEFAULT_COST = {
|
|
input: 0,
|
|
output: 0,
|
|
cacheRead: 0,
|
|
cacheWrite: 0,
|
|
};
|
|
export const CHUTES_DEFAULT_COST = {
|
|
input: 0,
|
|
output: 0,
|
|
cacheRead: 0,
|
|
cacheWrite: 0,
|
|
};
|
|
export const KIMI_CODE_DEFAULT_COST = {
|
|
input: 0,
|
|
output: 0,
|
|
cacheRead: 0,
|
|
cacheWrite: 0,
|
|
};
|
|
|
|
const MINIMAX_MODEL_CATALOG = {
|
|
"MiniMax-M2.1": { name: "MiniMax M2.1", reasoning: false },
|
|
"MiniMax-M2.1-lightning": {
|
|
name: "MiniMax M2.1 Lightning",
|
|
reasoning: false,
|
|
},
|
|
} as const;
|
|
|
|
type MinimaxCatalogId = keyof typeof MINIMAX_MODEL_CATALOG;
|
|
|
|
export function buildMinimaxModelDefinition(params: {
|
|
id: string;
|
|
name?: string;
|
|
reasoning?: boolean;
|
|
cost: ModelDefinitionConfig["cost"];
|
|
contextWindow: number;
|
|
maxTokens: number;
|
|
}): ModelDefinitionConfig {
|
|
const catalog = MINIMAX_MODEL_CATALOG[params.id as MinimaxCatalogId];
|
|
return {
|
|
id: params.id,
|
|
name: params.name ?? catalog?.name ?? `MiniMax ${params.id}`,
|
|
reasoning: params.reasoning ?? catalog?.reasoning ?? false,
|
|
input: ["text"],
|
|
cost: params.cost,
|
|
contextWindow: params.contextWindow,
|
|
maxTokens: params.maxTokens,
|
|
};
|
|
}
|
|
|
|
export function buildMinimaxApiModelDefinition(modelId: string): ModelDefinitionConfig {
|
|
return buildMinimaxModelDefinition({
|
|
id: modelId,
|
|
cost: MINIMAX_API_COST,
|
|
contextWindow: DEFAULT_MINIMAX_CONTEXT_WINDOW,
|
|
maxTokens: DEFAULT_MINIMAX_MAX_TOKENS,
|
|
});
|
|
}
|
|
|
|
export function buildMoonshotModelDefinition(): ModelDefinitionConfig {
|
|
return {
|
|
id: MOONSHOT_DEFAULT_MODEL_ID,
|
|
name: "Kimi K2 0905 Preview",
|
|
reasoning: false,
|
|
input: ["text"],
|
|
cost: MOONSHOT_DEFAULT_COST,
|
|
contextWindow: MOONSHOT_DEFAULT_CONTEXT_WINDOW,
|
|
maxTokens: MOONSHOT_DEFAULT_MAX_TOKENS,
|
|
};
|
|
}
|
|
|
|
export function buildChutesModelDefinition(
|
|
modelId: string = CHUTES_DEFAULT_MODEL_ID,
|
|
): ModelDefinitionConfig {
|
|
if (modelId === "Qwen/Qwen3-235B-A22B-Instruct-2507-TEE") {
|
|
return {
|
|
id: modelId,
|
|
name: "Qwen 3 235B (Tools)",
|
|
reasoning: false,
|
|
input: ["text"],
|
|
cost: CHUTES_DEFAULT_COST,
|
|
contextWindow: 262144,
|
|
maxTokens: 4096,
|
|
};
|
|
}
|
|
if (modelId === "deepseek-ai/DeepSeek-V3.2-TEE") {
|
|
return {
|
|
id: modelId,
|
|
name: "DeepSeek V3.2 (Tools)",
|
|
reasoning: false,
|
|
input: ["text"],
|
|
cost: CHUTES_DEFAULT_COST,
|
|
contextWindow: 202752,
|
|
maxTokens: 4096,
|
|
};
|
|
}
|
|
if (modelId === "chutesai/Mistral-Small-3.1-24B-Instruct-2503") {
|
|
return {
|
|
id: modelId,
|
|
name: "Mistral Small 3.1 (Tools)",
|
|
reasoning: false,
|
|
input: ["text"],
|
|
cost: CHUTES_DEFAULT_COST,
|
|
contextWindow: 131072,
|
|
maxTokens: 4096,
|
|
};
|
|
}
|
|
if (modelId === "NousResearch/Hermes-4-14B") {
|
|
return {
|
|
id: modelId,
|
|
name: "Hermes 4 14B (Tools)",
|
|
reasoning: false,
|
|
input: ["text"],
|
|
cost: CHUTES_DEFAULT_COST,
|
|
contextWindow: 40960,
|
|
maxTokens: 4096,
|
|
};
|
|
}
|
|
return {
|
|
id: CHUTES_DEFAULT_MODEL_ID,
|
|
name: "GLM 4.7 Flash",
|
|
reasoning: false,
|
|
input: ["text"],
|
|
cost: CHUTES_DEFAULT_COST,
|
|
contextWindow: CHUTES_DEFAULT_CONTEXT_WINDOW,
|
|
maxTokens: CHUTES_DEFAULT_MAX_TOKENS,
|
|
};
|
|
}
|
|
|
|
export function buildKimiCodeModelDefinition(): ModelDefinitionConfig {
|
|
return {
|
|
id: KIMI_CODE_MODEL_ID,
|
|
name: "Kimi For Coding",
|
|
reasoning: true,
|
|
input: ["text"],
|
|
cost: KIMI_CODE_DEFAULT_COST,
|
|
contextWindow: KIMI_CODE_CONTEXT_WINDOW,
|
|
maxTokens: KIMI_CODE_MAX_TOKENS,
|
|
headers: KIMI_CODE_HEADERS,
|
|
compat: KIMI_CODE_COMPAT,
|
|
};
|
|
}
|