

























@@ -8,14 +8,21 @@ import {
88MISTRAL_DEFAULT_MODEL_ID,
99} from "./model-definitions.js";
101011+function catalogModelById(models: ReturnType<typeof buildMistralCatalogModels>, id: string) {
12+const model = models.find((candidate) => candidate.id === id);
13+if (!model) {
14+throw new Error(`expected Mistral catalog model ${id}`);
15+}
16+return model;
17+}
18+1119describe("mistral model definitions", () => {
1220it("uses current Pi pricing for the bundled default model", () => {
13-expect(buildMistralModelDefinition()).toMatchObject({
14-id: MISTRAL_DEFAULT_MODEL_ID,
15-contextWindow: MISTRAL_DEFAULT_CONTEXT_WINDOW,
16-maxTokens: MISTRAL_DEFAULT_MAX_TOKENS,
17-cost: MISTRAL_DEFAULT_COST,
18-});
21+const model = buildMistralModelDefinition();
22+expect(model.id).toBe(MISTRAL_DEFAULT_MODEL_ID);
23+expect(model.contextWindow).toBe(MISTRAL_DEFAULT_CONTEXT_WINDOW);
24+expect(model.maxTokens).toBe(MISTRAL_DEFAULT_MAX_TOKENS);
25+expect(model.cost).toEqual(MISTRAL_DEFAULT_COST);
19262027expect(MISTRAL_DEFAULT_COST).toEqual({
2128input: 0.5,
@@ -26,42 +33,33 @@ describe("mistral model definitions", () => {
2633});
27342835it("publishes a curated set of current Mistral catalog models", () => {
29-expect(buildMistralCatalogModels()).toEqual(
30-expect.arrayContaining([
31-expect.objectContaining({
32-id: "codestral-latest",
33-input: ["text"],
34-contextWindow: 256000,
35-maxTokens: 4096,
36-}),
37-expect.objectContaining({
38-id: "magistral-small",
39-reasoning: true,
40-input: ["text"],
41-contextWindow: 128000,
42-maxTokens: 40000,
43-}),
44-expect.objectContaining({
45-id: "mistral-medium-3-5",
46-reasoning: true,
47-input: ["text", "image"],
48-contextWindow: 262144,
49-maxTokens: 8192,
50-}),
51-expect.objectContaining({
52-id: "mistral-small-latest",
53-reasoning: true,
54-input: ["text", "image"],
55-contextWindow: 128000,
56-maxTokens: 16384,
57-}),
58-expect.objectContaining({
59-id: "pixtral-large-latest",
60-input: ["text", "image"],
61-contextWindow: 128000,
62-maxTokens: 32768,
63-}),
64-]),
65-);
36+const models = buildMistralCatalogModels();
37+const codestral = catalogModelById(models, "codestral-latest");
38+expect(codestral.input).toEqual(["text"]);
39+expect(codestral.contextWindow).toBe(256000);
40+expect(codestral.maxTokens).toBe(4096);
41+42+const magistralSmall = catalogModelById(models, "magistral-small");
43+expect(magistralSmall.reasoning).toBe(true);
44+expect(magistralSmall.input).toEqual(["text"]);
45+expect(magistralSmall.contextWindow).toBe(128000);
46+expect(magistralSmall.maxTokens).toBe(40000);
47+48+const medium = catalogModelById(models, "mistral-medium-3-5");
49+expect(medium.reasoning).toBe(true);
50+expect(medium.input).toEqual(["text", "image"]);
51+expect(medium.contextWindow).toBe(262144);
52+expect(medium.maxTokens).toBe(8192);
53+54+const smallLatest = catalogModelById(models, "mistral-small-latest");
55+expect(smallLatest.reasoning).toBe(true);
56+expect(smallLatest.input).toEqual(["text", "image"]);
57+expect(smallLatest.contextWindow).toBe(128000);
58+expect(smallLatest.maxTokens).toBe(16384);
59+60+const pixtralLarge = catalogModelById(models, "pixtral-large-latest");
61+expect(pixtralLarge.input).toEqual(["text", "image"]);
62+expect(pixtralLarge.contextWindow).toBe(128000);
63+expect(pixtralLarge.maxTokens).toBe(32768);
6664});
6765});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。