mirror of https://github.com/openclaw/openclaw.git
98 lines
2.8 KiB
TypeScript
98 lines
2.8 KiB
TypeScript
import type { ModelDefinitionConfig } from "openclaw/plugin-sdk/provider-models";
|
|
|
|
export const MISTRAL_BASE_URL = "https://api.mistral.ai/v1";
|
|
export const MISTRAL_DEFAULT_MODEL_ID = "mistral-large-latest";
|
|
export const MISTRAL_DEFAULT_MODEL_REF = `mistral/${MISTRAL_DEFAULT_MODEL_ID}`;
|
|
export const MISTRAL_DEFAULT_CONTEXT_WINDOW = 262144;
|
|
export const MISTRAL_DEFAULT_MAX_TOKENS = 262144;
|
|
export const MISTRAL_DEFAULT_COST = {
|
|
input: 0.5,
|
|
output: 1.5,
|
|
cacheRead: 0,
|
|
cacheWrite: 0,
|
|
};
|
|
|
|
const MISTRAL_MODEL_CATALOG = [
|
|
{
|
|
id: "codestral-latest",
|
|
name: "Codestral (latest)",
|
|
reasoning: false,
|
|
input: ["text"],
|
|
cost: { input: 0.3, output: 0.9, cacheRead: 0, cacheWrite: 0 },
|
|
contextWindow: 256000,
|
|
maxTokens: 4096,
|
|
},
|
|
{
|
|
id: "devstral-medium-latest",
|
|
name: "Devstral 2 (latest)",
|
|
reasoning: false,
|
|
input: ["text"],
|
|
cost: { input: 0.4, output: 2, cacheRead: 0, cacheWrite: 0 },
|
|
contextWindow: 262144,
|
|
maxTokens: 262144,
|
|
},
|
|
{
|
|
id: "magistral-small",
|
|
name: "Magistral Small",
|
|
reasoning: true,
|
|
input: ["text"],
|
|
cost: { input: 0.5, output: 1.5, cacheRead: 0, cacheWrite: 0 },
|
|
contextWindow: 128000,
|
|
maxTokens: 128000,
|
|
},
|
|
{
|
|
id: "mistral-large-latest",
|
|
name: "Mistral Large (latest)",
|
|
reasoning: false,
|
|
input: ["text", "image"],
|
|
cost: MISTRAL_DEFAULT_COST,
|
|
contextWindow: MISTRAL_DEFAULT_CONTEXT_WINDOW,
|
|
maxTokens: MISTRAL_DEFAULT_MAX_TOKENS,
|
|
},
|
|
{
|
|
id: "mistral-medium-2508",
|
|
name: "Mistral Medium 3.1",
|
|
reasoning: false,
|
|
input: ["text", "image"],
|
|
cost: { input: 0.4, output: 2, cacheRead: 0, cacheWrite: 0 },
|
|
contextWindow: 262144,
|
|
maxTokens: 262144,
|
|
},
|
|
{
|
|
id: "mistral-small-latest",
|
|
name: "Mistral Small (latest)",
|
|
reasoning: false,
|
|
input: ["text", "image"],
|
|
cost: { input: 0.1, output: 0.3, cacheRead: 0, cacheWrite: 0 },
|
|
contextWindow: 128000,
|
|
maxTokens: 16384,
|
|
},
|
|
{
|
|
id: "pixtral-large-latest",
|
|
name: "Pixtral Large (latest)",
|
|
reasoning: false,
|
|
input: ["text", "image"],
|
|
cost: { input: 2, output: 6, cacheRead: 0, cacheWrite: 0 },
|
|
contextWindow: 128000,
|
|
maxTokens: 128000,
|
|
},
|
|
] as const satisfies readonly ModelDefinitionConfig[];
|
|
|
|
export function buildMistralModelDefinition(): ModelDefinitionConfig {
|
|
return (
|
|
MISTRAL_MODEL_CATALOG.find((model) => model.id === MISTRAL_DEFAULT_MODEL_ID) ?? {
|
|
id: MISTRAL_DEFAULT_MODEL_ID,
|
|
name: "Mistral Large",
|
|
reasoning: false,
|
|
input: ["text", "image"],
|
|
cost: MISTRAL_DEFAULT_COST,
|
|
contextWindow: MISTRAL_DEFAULT_CONTEXT_WINDOW,
|
|
maxTokens: MISTRAL_DEFAULT_MAX_TOKENS,
|
|
}
|
|
);
|
|
}
|
|
|
|
export function buildMistralCatalogModels(): ModelDefinitionConfig[] {
|
|
return MISTRAL_MODEL_CATALOG.map((model) => ({ ...model, input: [...model.input] }));
|
|
}
|