Skip to content

feat(mistral-ai): update model YAMLs [bot] - #1968

Open
models-bot[bot] wants to merge 1 commit into
mainfrom
bot/update-mistral-ai-20260731-130816
Open

feat(mistral-ai): update model YAMLs [bot]#1968
models-bot[bot] wants to merge 1 commit into
mainfrom
bot/update-mistral-ai-20260731-130816

Conversation

@models-bot

@models-bot models-bot Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Auto-generated by poc-agent for provider mistral-ai.


Note

Low Risk
Provider metadata-only changes with no application logic; cost and deprecation flags may affect routing and billing display downstream.

Overview
Auto-generated Mistral AI model catalog updates across five YAML definitions.

Capabilities: ministral-3b-latest and mistral-vibe-cli-with-tools gain doc input modality; mistral-medium-3-5 adds assistant_prefill and pdf inputs. mistral-medium-latest now advertises prompt_caching and cache_read_input_token_cost pricing alongside an extra pricing source URL.

Lifecycle / pricing: voxtral-small-latest is flagged isDeprecated: true and its per-second input cost is normalized to scientific notation (same numeric value).

Reviewed by Cursor Bugbot for commit 5ee7a26. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

Copy link
Copy Markdown
Contributor

/test-models

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 5ee7a26. Configure here.

features:
- function_calling
- structured_output
isDeprecated: true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Active model marked deprecated

Medium Severity

voxtral-small-latest is newly marked with isDeprecated: true, but Mistral still lists Voxtral Small as an active model and this file keeps status: active. That leaves lifecycle metadata contradictory and can cause consumers that honor isDeprecated to treat a live model as deprecated.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 5ee7a26. Configure here.

@harshiv-26

Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 39
  • Passed: 36
  • Failed: 0
  • Validation failed: 2
  • Errored: 0
  • Skipped: 1
  • Success rate: 94.74%
Provider Model Scenarios
mistral-ai ministral-3b-latest success: tool-call, parallel-tool-call:stream, tool-call:stream, params, params:stream, parallel-tool-call, json-output, json-output:stream

validation_failure: structured-output, structured-output:stream
mistral-ai mistral-medium-3-5 success: structured-output, tool-call, json-output, json-output:stream, params:stream, params, tool-call:stream, structured-output:stream, reasoning:stream, reasoning
mistral-ai mistral-medium-latest success: structured-output:stream, json-output:stream, params:stream, tool-call, params, structured-output, tool-call:stream, json-output
mistral-ai mistral-vibe-cli-with-tools success: params, json-output, tool-call:stream, structured-output:stream, tool-call, structured-output, params:stream, json-output:stream, reasoning, reasoning:stream
mistral-ai voxtral-small-latest skipped: skip-check
Failures (2)

mistral-ai/ministral-3b-latest — structured-output (validation_failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpyvqyuajq/snippet.py", line 43, in <module>
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")
Exception: VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)
Code snippet
from openai import OpenAI
import json

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-mistral-ai/ministral-3b-latest",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=False,
)
import json as _json

_content = response.choices[0].message.content
print(_content)

if not _content:
    raise Exception("VALIDATION FAILED: structured-output - response content is empty")

_parsed = _json.loads(_content)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output - unexpected keys present: {set(_parsed.keys())}"
    )

print("VALIDATION: structured-output SUCCESS")
Output
{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "example": "Science Fair"
    },
    "date": {
      "type": "string",
      "example": "2024-11-02" 	}
  },
  "required": ["name", "date"],
  "additionalProperties": false,
  "participants": [
    "Alice",
    "Bob"
  ]
}

mistral-ai/ministral-3b-latest — structured-output:stream (validation_failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpxq0_giup/snippet.py", line 48, in <module>
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")
Exception: VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)
Code snippet
from openai import OpenAI
import json

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response_schema = json.loads('''{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "date": { "type": "string" },
    "participants": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["name", "date", "participants"],
  "additionalProperties": false
}''')

response = client.chat.completions.create(
    model="test-v2-mistral-ai/ministral-3b-latest",
    messages=[
        {"role": "system", "content": "Extract the event information as JSON."},
        {"role": "user", "content": "Hi"},
        {"role": "assistant", "content": "Hi, how can I help you"},
        {"role": "user", "content": "Alice and Bob are going to a science fair on Friday. Extract the event details as JSON."},
    ],
    response_format={"type": "json_schema", "json_schema": {"name": "CalendarEvent", "schema": response_schema}},
    stream=True,
)
import json as _json

_accumulated = ""
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            _accumulated += delta.content
            print(delta.content, end="", flush=True)

if not _accumulated:
    raise Exception("VALIDATION FAILED: structured-output stream - no content received")

_parsed = _json.loads(_accumulated)

if "name" not in _parsed or "date" not in _parsed or "participants" not in _parsed:
    raise Exception("VALIDATION FAILED: structured-output stream - missing expected fields (name, date, participants)")

if not isinstance(_parsed.get("participants"), list):
    raise Exception("VALIDATION FAILED: structured-output stream - 'participants' is not a list, schema not enforced")

if set(_parsed.keys()) != {"name", "date", "participants"}:
    raise Exception(
        f"VALIDATION FAILED: structured-output stream - unexpected keys present: {set(_parsed.keys())}"
    )

print("\nVALIDATION: structured-output stream SUCCESS")
Output
{
  "title": "CalendarEvent",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "example": "Science Fair"
    },
    "date": {
      "type": "string",
      "example": "2024-10-12" 	}
  },
  "required": ["name", "date"],
  "additionalProperties": false,
  "participants": ["Alice", "Bob"]
}
Successes (36)

mistral-ai/mistral-vibe-cli-with-tools — params (success)

Output
The capital of France is **Paris**.

mistral-ai/mistral-vibe-cli-with-tools — json-output (success)

Output
{"colors": [{"name": "Red", "hex": "#FF0000"}, {"name": "Green", "hex": "#00FF00"}, {"name": "Blue", "hex": "#0000FF"}]}
VALIDATION: json-output SUCCE
... (truncated, 3 chars omitted)

mistral-ai/mistral-vibe-cli-with-tools — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

mistral-ai/mistral-vibe-cli-with-tools — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output stream SUCCESS

mistral-ai/mistral-vibe-cli-with-tools — tool-call (success)

Output
Function: get_weather
Arguments: {"location": "London"}
VALIDATION: tool-call SUCCESS

mistral-ai/mistral-vibe-cli-with-tools — structured-output (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output SUCCESS

mistral-ai/mistral-vibe-cli-with-tools — params:stream (success)

Output
The capital of France is **Paris**.

mistral-ai/mistral-vibe-cli-with-tools — json-output:stream (success)

Output
{"colors": [{"name": "Red", "hex": "#FF0000"}, {"name": "Green", "hex": "#00FF00"}, {"name": "Blue", "hex": "#0000FF"}]}
VALIDATION: json-output strea
... (truncated, 10 chars omitted)

mistral-ai/mistral-vibe-cli-with-tools — reasoning (success)

Output
To calculate \( 3^{3^{3^3}} \), we must follow the **right-associative** rule for exponentiation, meaning we evaluate from the **top down** (right to 
... (truncated, 1634 chars omitted)

mistral-ai/mistral-vibe-cli-with-tools — reasoning:stream (success)

Output
To calculate \( 3^{3^{3^3}} \), we must evaluate it **right-to-left** due to the **right-associative** nature of exponentiation (i.e., \( a^{b^c} = a^
... (truncated, 1131 chars omitted)

mistral-ai/mistral-medium-3-5 — structured-output (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output SUCCESS

mistral-ai/mistral-medium-3-5 — tool-call (success)

Output
Function: get_weather
Arguments: {"location": "London"}
VALIDATION: tool-call SUCCESS

mistral-ai/mistral-medium-3-5 — json-output (success)

Output
{"colors": [{"name": "Red", "hex": "#FF0000"}, {"name": "Green", "hex": "#00FF00"}, {"name": "Blue", "hex": "#0000FF"}]}
VALIDATION: json-output SUCCE
... (truncated, 3 chars omitted)

mistral-ai/mistral-medium-3-5 — json-output:stream (success)

Output
{"colors": [{"name": "Red", "hex": "#FF0000"}, {"name": "Green", "hex": "#00FF00"}, {"name": "Blue", "hex": "#0000FF"}]}
VALIDATION: json-output strea
... (truncated, 10 chars omitted)

mistral-ai/mistral-medium-3-5 — params:stream (success)

Output
The capital of France is Paris.

mistral-ai/mistral-medium-3-5 — params (success)

Output
The capital of France is **Paris**.

mistral-ai/mistral-medium-3-5 — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

mistral-ai/mistral-medium-3-5 — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output stream SUCCESS

mistral-ai/mistral-medium-3-5 — reasoning:stream (success)

Output
To calculate \( 3^{3^{3^{3}}} \), we must evaluate the exponentiation from the **top down** (right-associative rule in mathematics). Here is the step-
... (truncated, 1637 chars omitted)

mistral-ai/mistral-medium-3-5 — reasoning (success)

Output
To calculate **3^3^3^3**, we must follow the **order of operations for exponentiation**, which is **right-associative**. This means we evaluate the ex
... (truncated, 1474 chars omitted)

mistral-ai/mistral-medium-latest — structured-output:stream (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output stream SUCCESS

mistral-ai/mistral-medium-latest — json-output:stream (success)

Output
{"colors": [{"name": "Red", "hex": "#FF0000"}, {"name": "Green", "hex": "#00FF00"}, {"name": "Blue", "hex": "#0000FF"}]}
VALIDATION: json-output strea
... (truncated, 10 chars omitted)

mistral-ai/mistral-medium-latest — params:stream (success)

Output
The capital of France is **Paris**.

mistral-ai/mistral-medium-latest — tool-call (success)

Output
Function: get_weather
Arguments: {"location": "London"}
VALIDATION: tool-call SUCCESS

mistral-ai/mistral-medium-latest — params (success)

Output
The capital of France is **Paris**.

mistral-ai/mistral-medium-latest — structured-output (success)

Output
{"name": "Science Fair", "date": "Friday", "participants": ["Alice", "Bob"]}
VALIDATION: structured-output SUCCESS

mistral-ai/mistral-medium-latest — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

mistral-ai/mistral-medium-latest — json-output (success)

Output
{"colors": [{"name": "Red", "hex": "#FF0000"}, {"name": "Green", "hex": "#00FF00"}, {"name": "Blue", "hex": "#0000FF"}]}
VALIDATION: json-output SUCCE
... (truncated, 3 chars omitted)

mistral-ai/ministral-3b-latest — tool-call (success)

Output
Function: get_weather
Arguments: {"location": "London"}
VALIDATION: tool-call SUCCESS

mistral-ai/ministral-3b-latest — parallel-tool-call:stream (success)

Output
{"location": "London"}{"location": "Paris"}
Number of parallel tool calls: 2
VALIDATION: parallel-tool-call stream SUCCESS

mistral-ai/ministral-3b-latest — tool-call:stream (success)

Output
{"location": "London"}
VALIDATION: tool-call stream SUCCESS

mistral-ai/ministral-3b-latest — params (success)

Output
The capital of France is **Paris**. 😊

Would you like to know more about it?

mistral-ai/ministral-3b-latest — params:stream (success)

Output
The capital of France is **Paris**. 😊

Would you like to know anything else about France or Paris?

mistral-ai/ministral-3b-latest — parallel-tool-call (success)

Output
Number of parallel tool calls: 2
Function: get_weather
Arguments: {"location": "London"}
Function: get_weather
Arguments: {"location": "Paris"}
VALIDA
... (truncated, 33 chars omitted)

mistral-ai/ministral-3b-latest — json-output (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex_code": "#FF0000"
    },
    {
      "name": "Blue",
      "hex_code": "#0000FF"
    },
    {
   
... (truncated, 92 chars omitted)

mistral-ai/ministral-3b-latest — json-output:stream (success)

Output
{
  "colors": [
    {
      "name": "Red",
      "hex_code": "#FF0000"
    },
    {
      "name": "Blue",
      "hex_code": "#0000FF"
    },
    {
   
... (truncated, 99 chars omitted)
Skipped (1)

mistral-ai/voxtral-small-latest — skip-check (skipped)

Skip reason
deprecated or retired model

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant