
























@@ -1,99 +1,38 @@
1+import { buildManifestModelProviderConfig } from "openclaw/plugin-sdk/provider-catalog-shared";
12import type { ModelDefinitionConfig } from "openclaw/plugin-sdk/provider-model-shared";
3+import manifest from "./openclaw.plugin.json" with { type: "json" };
243-export const MISTRAL_BASE_URL = "https://api.mistral.ai/v1";
5+const MISTRAL_MANIFEST_CATALOG = manifest.modelCatalog.providers.mistral;
6+7+export const MISTRAL_BASE_URL = MISTRAL_MANIFEST_CATALOG.baseUrl;
48export const MISTRAL_DEFAULT_MODEL_ID = "mistral-large-latest";
59export const MISTRAL_DEFAULT_MODEL_REF = `mistral/${MISTRAL_DEFAULT_MODEL_ID}`;
6-export const MISTRAL_DEFAULT_CONTEXT_WINDOW = 262144;
7-export const MISTRAL_DEFAULT_MAX_TOKENS = 16384;
8-export const MISTRAL_DEFAULT_COST = {
9-input: 0.5,
10-output: 1.5,
11-cacheRead: 0,
12-cacheWrite: 0,
13-};
141015-const MISTRAL_MODEL_CATALOG = [
16-{
17-id: "codestral-latest",
18-name: "Codestral (latest)",
19-reasoning: false,
20-input: ["text"],
21-cost: { input: 0.3, output: 0.9, cacheRead: 0, cacheWrite: 0 },
22-contextWindow: 256000,
23-maxTokens: 4096,
24-},
25-{
26-id: "devstral-medium-latest",
27-name: "Devstral 2 (latest)",
28-reasoning: false,
29-input: ["text"],
30-cost: { input: 0.4, output: 2, cacheRead: 0, cacheWrite: 0 },
31-contextWindow: 262144,
32-maxTokens: 32768,
33-},
34-{
35-id: "magistral-small",
36-name: "Magistral Small",
37-reasoning: true,
38-input: ["text"],
39-cost: { input: 0.5, output: 1.5, cacheRead: 0, cacheWrite: 0 },
40-contextWindow: 128000,
41-maxTokens: 40000,
42-},
43-{
44-id: "mistral-large-latest",
45-name: "Mistral Large (latest)",
46-reasoning: false,
47-input: ["text", "image"],
48-cost: MISTRAL_DEFAULT_COST,
49-contextWindow: MISTRAL_DEFAULT_CONTEXT_WINDOW,
50-maxTokens: MISTRAL_DEFAULT_MAX_TOKENS,
51-},
52-{
53-id: "mistral-medium-2508",
54-name: "Mistral Medium 3.1",
55-reasoning: false,
56-input: ["text", "image"],
57-cost: { input: 0.4, output: 2, cacheRead: 0, cacheWrite: 0 },
58-contextWindow: 262144,
59-maxTokens: 8192,
60-},
61-{
62-id: "mistral-small-latest",
63-name: "Mistral Small (latest)",
64-reasoning: true,
65-input: ["text", "image"],
66-cost: { input: 0.1, output: 0.3, cacheRead: 0, cacheWrite: 0 },
67-contextWindow: 128000,
68-maxTokens: 16384,
69-},
70-{
71-id: "pixtral-large-latest",
72-name: "Pixtral Large (latest)",
73-reasoning: false,
74-input: ["text", "image"],
75-cost: { input: 2, output: 6, cacheRead: 0, cacheWrite: 0 },
76-contextWindow: 128000,
77-maxTokens: 32768,
78-},
79-] as const satisfies readonly ModelDefinitionConfig[];
11+function requireMistralManifestModel(id: string): (typeof MISTRAL_MANIFEST_CATALOG.models)[number] {
12+const model = MISTRAL_MANIFEST_CATALOG.models.find((entry) => entry.id === id);
13+if (!model) {
14+throw new Error(`Missing Mistral modelCatalog row ${id}`);
15+}
16+return model;
17+}
18+19+const MISTRAL_DEFAULT_MANIFEST_MODEL = requireMistralManifestModel(MISTRAL_DEFAULT_MODEL_ID);
20+21+export const MISTRAL_DEFAULT_CONTEXT_WINDOW = MISTRAL_DEFAULT_MANIFEST_MODEL.contextWindow;
22+export const MISTRAL_DEFAULT_MAX_TOKENS = MISTRAL_DEFAULT_MANIFEST_MODEL.maxTokens;
23+export const MISTRAL_DEFAULT_COST = MISTRAL_DEFAULT_MANIFEST_MODEL.cost;
80248125export function buildMistralModelDefinition(): ModelDefinitionConfig {
82-return (
83-MISTRAL_MODEL_CATALOG.find((model) => model.id === MISTRAL_DEFAULT_MODEL_ID) ?? {
84-id: MISTRAL_DEFAULT_MODEL_ID,
85-name: "Mistral Large",
86-reasoning: false,
87-input: ["text", "image"],
88-cost: MISTRAL_DEFAULT_COST,
89-contextWindow: MISTRAL_DEFAULT_CONTEXT_WINDOW,
90-maxTokens: MISTRAL_DEFAULT_MAX_TOKENS,
91-}
92-);
26+const model = buildMistralCatalogModels().find((entry) => entry.id === MISTRAL_DEFAULT_MODEL_ID);
27+if (!model) {
28+throw new Error(`Missing Mistral provider model ${MISTRAL_DEFAULT_MODEL_ID}`);
29+}
30+return model;
9331}
94329533export function buildMistralCatalogModels(): ModelDefinitionConfig[] {
96-return MISTRAL_MODEL_CATALOG.map((model) =>
97-Object.assign({}, model, { input: [...model.input] }),
98-);
34+return buildManifestModelProviderConfig({
35+providerId: "mistral",
36+catalog: MISTRAL_MANIFEST_CATALOG,
37+}).models;
9938}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。