feat(mistral-ai): update model YAMLs [bot]#1677
Conversation
|
/test-models |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 92f57e3. Configure here.
| - assistant_prefill | ||
| - json_output | ||
| - system_messages | ||
| isDeprecated: true |
There was a problem hiding this comment.
Conflicting deprecation lifecycle fields
Medium Severity
This change sets isDeprecated: true on mistral-small while status remains active. The same PR updates mistral-moderation-latest with both isDeprecated: true and status: deprecated, and other deprecated Mistral entries follow that pairing. Downstream consumers that read only one field can misclassify the model’s lifecycle.
Reviewed by Cursor Bugbot for commit 92f57e3. Configure here.
Gateway test results
Failures (2)
ErrorCode snippetfrom 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-14b-2512",
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
ErrorCode snippetfrom 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-14b-2512",
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")OutputSuccesses (16)
Output
Output
Output
Output
Output
Output
Output
Output
Output
Output
Output
Output
Output
Output
Output
OutputSkipped (3)
Skip reason
Skip reason
Skip reason |


Auto-generated by poc-agent for provider
mistral-ai.Note
Medium Risk
OCR cost increases affect billing estimates; deprecation flags change how moderation and mistral-small are surfaced to users.
Overview
Updates five mistral-ai provider model YAMLs to match current docs and pricing.
ministral-14b-2512 gains
assistant_prefilland doc as an input modality. mistral-vibe-cli-with-tools addsjson_output, setsthinking: true, and links an extra CLI docs source.mistral-moderation-latest is marked deprecated via
isDeprecated: trueandstatus: deprecated(deprecation date unchanged). mistral-small only addsisDeprecated: truein this diff.mistral-ocr-latest per-page costs rise from $0.002 / $0.003 to $0.004 / $0.005 (page / annotated page), with mistral.ai/pricing/api added as a source.
Reviewed by Cursor Bugbot for commit 92f57e3. Bugbot is set up for automated code reviews on this repo. Configure here.