TL;DR: Mistral prompt templates only work if they target the current family. Mistral Large 3, Small 4 and Ministral 3 are Apache 2.0; Medium 3.5 is Modified MIT; Magistral and Devstral are gone. Mistral publishes a real prompting guide, a reasoning_effort switch and a documented chat template.
What are Mistral prompt templates, and what changed in 2026?
A Mistral prompt template is a reusable instruction with slots, aimed at a family that behaves differently from the American labs in three ways that matter: most of the weights are downloadable, the reasoning switch is a request parameter rather than a separate model, and the instruction format is published as a file you can read.
What changed this year is almost everything else. If you search for Mistral prompts today, most of what you find is written against Mistral 7B, Mixtral and Mistral Large 2. Those are retired. So are Magistral, Devstral, Pixtral and Mistral Small 3.x, all of which appear on Mistral's own deprecation table with retirement dates already in the past (Models Overview, accessed 29 August 2026).
Which Mistral models exist right now, and which are open weights?
Six generalist models, plus specialists. Here is what Mistral's own model cards publish, checked 29 August 2026. Read the licence column carefully, because Apache 2.0 is not universal.
| Feature | Licence | Context | Notes from the model card |
|---|---|---|---|
| Mistral Medium 3.5 (v26.04) | Modified MIT | 256k | Frontier-class multimodal, configurable reasoning effort |
| Mistral Small 4 (v26.03) | Apache 2.0 | 256k | Hybrid: instruct, reasoning and coding in one model |
| Mistral Large 3 (v25.12) | Apache 2.0 | 256k | Open-weight granular MoE, multimodal |
| Ministral 3 14B / 8B / 3B (v25.12) | Apache 2.0 | 256k | Edge and local deployment, text and vision |
| Codestral (v25.08) | Premier | 128k | Code completion and fill-in-the-middle |
| Voxtral TTS (v26.03) | CC BY-NC 4.0 | Not published | Text to speech, zero-shot voice cloning |
| Shieldstral 1.0 | Apache 2.0 | 32k | Multimodal moderation, yes/no policy answers |
| Z.ai GLM 5.2 | Open (third party) | 1M | Hosted by Mistral, served without Mistral modifications |
Mistral's help centre states the licensing position plainly: most open-source models are Apache 2.0, while certain models sit under a modified MIT licence offering the "same permissions as Apache 2.0" with one exception, for companies with "monthly revenue exceeding $20M USD", who must obtain a commercial licence or use Mistral Studio (Under which license are Mistral's open models available?, accessed 29 August 2026).
On hardware, the only figure worth repeating is the one Mistral publishes itself: Ministral 3 8B "can even be deployed locally, capable of fitting in 12GB of VRAM in FP8, and less if further quantized" (Ministral 3 8B Instruct model card, accessed 29 August 2026). For anything larger, read the card rather than a forum post.
Does Mistral publish a prompting guide?
Yes, and it is more opinionated than most. It lives at docs.mistral.ai/inference/prompting (accessed 29 August 2026), and it is worth reading before you write a single template, because the templates below are shaped by it.
Four things it actually says:
- Start with a role and a task. The guide's suggested opener is literally
"You are a <role>, your task is to <task>." - Structure hierarchically. Organise instructions into sections and subsections; its rule of thumb is to "imagine you’re writing for someone with no prior context".
- Format explicitly. Markdown or XML-style tags, on the grounds that they are readable, parsable and familiar from training. If you already use system-prompt tagging for Claude, the habit transfers directly, and our post on XML tags in Claude prompts covers the mechanics.
- Avoid the things that quietly break long prompts. No blurry quantitative words. No contradictions. And this, verbatim: "Models are faster at ingesting tokens than generating them. If using structured outputs, only ask the model to generate what is strictly necessary."
The guide also has a rule most vendors will not print: "As your system prompt gets long, slight contradictions may appear." Its fix is a decision tree written as ordered if / otherwise branches, not prose. That single reformatting trick fixes more misbehaving Mistral system prompts than any amount of politeness.
One more, and it is the most underrated line on the page: "If you need a model to rate something, use a worded scale for better performance." Numeric 1-to-5 scales are worse than Very Low / Low / Neutral / Good / Very Good. Convert to numbers afterwards if you need them.
Mistral prompt templates by job
Thirty templates. Square brackets are slots. Everything here is plain text that works pasted into a chat window or sent as the content of a system or user message, except where a template depends on an API parameter, which is labelled.
General chat and assistant work
1. Role and task opener, Mistral's own shape
You are a [ROLE], your task is to [TASK].
# Context
[BACKGROUND THE MODEL CANNOT INFER]
# Constraints
- [CONSTRAINT 1]
- [CONSTRAINT 2]
# Response format
[EXACT SHAPE OF THE OUTPUT]
2. Concatenated system prompt, for surfaces with no system role
[SYSTEM INSTRUCTIONS]
User: [ACTUAL QUERY]
3. Decision tree instead of a rule list
# How to handle [ENTITY]
Follow these steps in order:
- If [CONDITION A]: [ACTION A].
- Otherwise, if [CONDITION B]: [ACTION B].
- Otherwise, if [CONDITION C]: [ACTION C].
- Otherwise: [DEFAULT ACTION].
Never apply two branches. Stop at the first branch that matches.
4. Worded scale rating
Rate each option below using this scale:
- Very Low: [DEFINITION]
- Low: [DEFINITION]
- Neutral: [DEFINITION]
- Good: [DEFINITION]
- Very Good: [DEFINITION]
Return one line per option: <option name> — <scale word> — <one clause of justification>.
Options:
[LIST]
Structured output and JSON
5. JSON mode, with the word Mistral requires
Return your answer as a single JSON object and nothing else.
The JSON object must have exactly these keys:
- "[KEY_1]": [TYPE, DESCRIPTION]
- "[KEY_2]": [TYPE, DESCRIPTION]
If a value cannot be determined from the input, use the string "NOT_DETERMINABLE".
Input:
[CONTENT]
6. Schema-shaped extraction
Extract structured data from the text below.
# Schema
{
"[FIELD]": "string",
"[FIELD]": "number",
"[LIST_FIELD]": ["string"]
}
# Rules
- Every value must be copied or derived from the text, never invented.
- Include a "source_span" key on each object with the quoted text it came from.
- Emit valid JSON only. No prose, no code fence, no trailing commentary.
# Text
[CONTENT]
7. Enum-locked classification
You are a [DOMAIN] classification model. Assign exactly one category.
# Categories
- [CATEGORY_1]: [WHEN IT APPLIES]
- [CATEGORY_2]: [WHEN IT APPLIES]
- other: anything that does not fit the categories above.
# Answer format
Respond with the category name only, as a single self-contained compound term, with no explanation.
# Examples
Input: [EXAMPLE 1]
Answer: [CATEGORY_1]
Input: [EXAMPLE 2]
Answer: [CATEGORY_2]
8. Minimal-generation update
You will receive a record and a change request. Return only the fields that change.
Output shape:
{"op": "UPDATE" | "NO_OP", "changed": {"<field>": "<new value>"}}
Do not restate unchanged fields. Do not return the full record.
Record:
[RECORD]
Change request:
[REQUEST]
Function calling and agents
9. Tool-use system prompt
You are [ROLE] with access to tools.
Use a tool when:
- the request needs data you do not hold, or
- the request needs an action you cannot perform in text.
Do not use a tool when the answer is already in the conversation.
If a required argument is missing, ask one clarifying question instead of guessing.
After a tool returns, answer the user's original question directly.
10. Argument-completeness gate
Before calling [TOOL_NAME], confirm every required argument is present:
[ARG_1], [ARG_2], [ARG_3].
If any is missing or ambiguous, do not call the tool. Instead reply with:
MISSING: <comma-separated argument names>
and one short question that would obtain them.
11. Single-tool discipline
Call exactly one tool per turn. Wait for its result before deciding the next step.
If two tools look applicable, choose the one whose output the other would depend on.
Explain the choice in one sentence before the call.
12. Handoff brief for a sub-agent
You are handing this task to [SUB_AGENT_NAME].
Write a handoff brief with these sections and nothing else:
GOAL: one sentence.
CONTEXT: only facts the sub-agent cannot look up.
CONSTRAINTS: hard limits.
DONE WHEN: the observable condition that ends the task.
Code
13. Repository-aware change request
You are a senior [LANGUAGE] engineer working in an existing codebase.
# Task
[CHANGE TO MAKE]
# Rules
- Match the conventions already in the file. Do not introduce a new style.
- Touch only files required by the task. List them before you edit.
- Add or update tests for every behaviour you change.
- If the change requires a decision the task does not specify, stop and ask.
14. Fill-in-the-middle, for Codestral
Complete the missing implementation between the prefix and the suffix.
Return only the missing code. No explanation, no restatement of surrounding lines.
Prefix:
[CODE BEFORE THE GAP]
Suffix:
[CODE AFTER THE GAP]
15. Root-cause first, patch second
Here is an error and the code that produced it.
Step 1. State the root cause in one sentence.
Step 2. State the smallest change that fixes it.
Step 3. Only then output the patch as a unified diff.
Do not refactor anything outside the fix.
Error:
[STACK TRACE]
Code:
[SNIPPET]
16. Test generation with an explicit contract
Write [FRAMEWORK] tests for the function below.
Cover: the happy path, each documented error, one boundary value per numeric
argument, and one case per branch in the control flow.
For each test, add a one-line comment naming the behaviour it protects.
Do not modify the function.
[FUNCTION]
Long documents and retrieval
17. Grounded answer with mandatory citation
Answer the question using only the document below.
For every factual claim, append the quoted source span in square brackets.
If the document does not contain the answer, reply exactly: NOT IN DOCUMENT.
Do not use outside knowledge.
Question: [QUESTION]
Document:
[TEXT]
18. Section-by-section summary at fixed length
Summarise the document below.
For each top-level section, produce:
- The section heading, verbatim.
- A summary of exactly [N] sentences.
- One "Open question" line if the section leaves something unresolved.
Do not merge sections. Do not add a preamble or a conclusion.
Document:
[TEXT]
19. Contradiction sweep across sources
You are comparing [N] sources on the same topic.
Return a table with columns: Claim | Source A | Source B | Agree?
List only claims where at least two sources speak to the same point.
Quote each source's wording rather than paraphrasing.
End with a list of claims made by exactly one source.
Sources:
[SOURCE A]
---
[SOURCE B]
20. Query-at-the-end long-context pattern
[FULL DOCUMENT OR CORPUS]
---
Using only the material above, answer this question: [QUESTION]
Rules:
- Cite the section heading you drew each fact from.
- If two parts of the material conflict, show both and say they conflict.
- Do not summarise the whole document. Answer the question.
Multilingual and European work
21. Language lock
Respond only in [LANGUAGE], including headings, labels and any JSON string values.
Keys, code identifiers and product names stay in their original form.
If the input is in another language, translate silently and do not comment on it.
22. Tone-preserving translation
Translate the text below from [SOURCE] into [TARGET].
Preserve: register, sentence length, idiom density, and any deliberate repetition.
Do not smooth, do not shorten, do not add connectives that are not in the source.
Leave [DO NOT TRANSLATE LIST] untouched.
Return the translation only.
Text:
[TEXT]
23. Regulatory-context brief
You are advising a team operating in [JURISDICTION].
When a rule depends on local regulation, name the instrument and say what it requires.
When you are not certain a rule applies in [JURISDICTION], say so explicitly rather
than generalising from another jurisdiction.
Never present a US default as if it were universal.
Question: [QUESTION]
24. Localisation review
Review the [TARGET LANGUAGE] copy below against the [SOURCE LANGUAGE] original.
Return a table: Line | Issue type | What is wrong | Suggested fix
Issue types: mistranslation, register drift, untranslated string, cultural mismatch,
length overflow.
Flag nothing that is merely a valid stylistic alternative.
Original:
[SOURCE]
Translation:
[TARGET]
Reasoning
25. Explicit reasoning brief (pair with reasoning_effort="high")
Work this through before answering.
Constraints on the reasoning:
- Enumerate the unknowns before solving.
- Check the arithmetic twice, showing the second check.
- If two readings of the problem are possible, solve both and say which you chose.
Then give the final answer on its own line, prefixed with ANSWER:.
Problem:
[PROBLEM]
26. Fast path (pair with reasoning_effort="none")
Answer in at most [N] sentences. No preamble, no restatement of the question,
no closing summary. If the answer is a number or a name, give it alone.
[QUESTION]
27. Self-critique pass
Here is a draft answer to [TASK].
List every claim in it that you cannot support from the material provided.
For each, say what evidence would be needed.
Then rewrite the answer with the unsupportable claims removed.
Draft:
[DRAFT]
Classification and evaluation
28. LLM-as-judge with a worded rubric
You are evaluating a [ARTEFACT] against a rubric.
# Rubric
- Very Good: [CRITERIA]
- Good: [CRITERIA]
- Neutral: [CRITERIA]
- Low: [CRITERIA]
- Very Low: [CRITERIA]
# Output
{"grade": "<scale word>", "evidence": "<quoted span from the artefact>"}
Judge only what is present. Do not reward or penalise anything the rubric omits.
Artefact:
[CONTENT]
29. Intent triage with a fallback
Route this message to one queue.
Queues:
- [QUEUE_1]: [WHEN]
- [QUEUE_2]: [WHEN]
- human_review: anything ambiguous, hostile, or covering more than one queue.
Prefer human_review over a low-confidence guess.
Return: {"queue": "<name>", "confidence": "high" | "medium" | "low"}
Message:
[MESSAGE]
30. Moderation-style policy question, Shieldstral shape
Policy question: [PLAIN-LANGUAGE POLICY QUESTION]
Content:
[CONTENT]
Answer with yes or no only.
How do you turn reasoning on in Mistral?
With a request parameter, not a different model. Mistral's reasoning page documents reasoning_effort on mistral-small-latest and mistral-medium-3-5, and describes exactly two values (Reasoning, accessed 29 August 2026):
"high": "The response includes a full thinking chunk before the final answer, at the cost of increased token usage.""none": "The model thinks minimally and the thinking chunk is omitted from the response."
Two practical consequences for your templates. First, when effort is high the message content stops being a string and becomes a list of chunks, so a template that assumes plain text will break on parse. Second, and this is the one people get wrong: do not strip the thinking chunk out of conversation history. Mistral's own warning is that "The model relies on the reasoning trace to maintain coherence across turns."
Mistral Medium 3.5's card frames the same switch as a product feature, describing it as a "Toggle between fast instant reply mode and reasoning mode, boosting performance with test-time compute when requested" (Mistral Medium 3.5 model card, accessed 29 August 2026). That is why templates 25 and 26 above are a pair. Same model, two prompt shapes, one parameter.
What sampling settings does Mistral actually publish?
Less than you would hope, and the sources disagree. Everything below is quoted from a Mistral surface, with the surface named, because the numbers differ by source.
| Source | What it says |
|---|---|
API schema, ChatCompletionRequest.temperature | Range 0 to 1.5. Description: "What sampling temperature to use, we recommend between 0.0 and 0.7." |
API schema, CompletionArgs.temperature | Range 0 to 1.0, in the same file |
| Mistral Large 3 model card | "Use a temperature below 0.1 for daily-driver and production environments" |
| Ministral 3 8B model card | Same wording, temperature below 0.1 |
| Mistral Medium 3.5 model card | 0.7 with top_p 0.95 at high reasoning effort; 0.0 to 0.7 with top_p left at default when effort is none |
| Sampling guide | No task table. "There's no one-size-fits-all Temperature for all use cases" |
The sampling guide's one concrete example is that a classification agent should use a temperature of 0 to always pick the best token. It also advises fixing one of temperature and top-p and adjusting the other rather than both. If you want the cross-vendor picture, our temperature, top-p and top-k explainer covers how these interact.
Note also that mistral-large-2512 does not support the n parameter for multiple completions, per the sampling guide, which quietly breaks the common self-consistency pattern of sampling N answers and voting.
What is the instruction format for Mistral open weights?
If you self-host, the authoritative source is the chat_template.jinja file on the model repository, not any blog post. For Ministral 3 8B Instruct 2512, that template produces this shape (read from the file itself, Ministral-3-8B-Instruct-2512, accessed 29 August 2026):
<s>[SYSTEM_PROMPT]system content[/SYSTEM_PROMPT][AVAILABLE_TOOLS][{...tool schemas...}][/AVAILABLE_TOOLS][INST]user message[/INST]assistant reply</s>[TOOL_CALLS]tool_name[ARGS]{"arg":"value"}[TOOL_RESULTS]tool output[/TOOL_RESULTS]
So [INST] survived, but it is no longer the whole story. The system prompt has its own pair of control tokens rather than being folded into the first instruction block, tool schemas and tool results have theirs, tool calls use a [TOOL_CALLS]name[ARGS]json form, and images become a single [IMG] token. The reasoning-capable variants add [THINK] and [/THINK], and Mistral Medium 3.5's template injects [MODEL_SETTINGS]{"reasoning_effort": "..."}[/MODEL_SETTINGS] and raises an exception if the value is anything other than none or high.
That distinction is worth keeping in mind whenever you read older Mistral tutorials. Wrapping text in the literal characters [INST] ... [/INST] was correct advice for Mistral 7B in 2023 and is a prompt-injection hazard now.
What happened to Le Chat prompts?
Le Chat was renamed. Mistral's product FAQ answers the question directly: "Le Chat is now Vibe. All your conversations, settings, and plans carry over." The old URL mistral.ai/products/le-chat now redirects to the Vibe page (Mistral Vibe, accessed 29 August 2026). Vibe splits into Vibe for work, which is the former chat assistant, and Vibe for code, a coding agent.
For prompt reuse, the surface you want is Custom instructions, reached from Context then Instructions in the left sidebar. Mistral's guidance is that "A good custom instruction is short, specific, and tells Work something it can't infer from your prompts alone", and that they are "meant for persistent preferences, not task descriptions" (Set custom instructions, accessed 29 August 2026). Persistent role, output format and language preferences belong there. Task detail belongs in the prompt. If you have ever wondered why an instruction that works once stops working later, our post on why a prompt stops working after a model update covers the same failure from the other direction.
On the API side, Mistral now runs a Prompt Registry that stores, versions and manages prompts centrally in Studio, and its stored prompts support {{variable}} placeholders that you substitute before sending. That is a genuine template grammar, and it is the only one Mistral publishes. There is no special prompt syntax beyond it: no weighting operators, no parameter flags, no vendor-specific markup. If you see any of those attributed to Mistral, it has been carried over from an image model by someone who did not check.
Stop rewriting prompts. Start shipping.
Works with ChatGPT, Claude, Gemini, Grok, Midjourney, Ideogram, Veo3 & Kling. 5.0★ on the Chrome Web Store.
Create An AccountWhere do Mistral's own docs contradict themselves?
Four places, all found while checking this post on 29 August 2026. None is fatal; all will waste your afternoon if you trust the wrong page.
reasoning_efforthas two values or six. The reasoning guide documentsnoneandhigh. The OpenAPI schema'sReasoningEffortenum listsnone,minimal,low,medium,highandxhigh. Mistral Medium 3.5's chat template rejects everything exceptnoneandhigh. Use the two documented values.- Temperature caps at 1.5 or 1.0 depending on which schema in the same OpenAPI file you read, as noted in the table above.
- The function calling page lists retired models. Its "Available Models" section names Magistral Medium 1.2, Devstral 2.0 and Mistral Small 3.2, all of which the models page marks deprecated with retirement dates that have passed.
- EU by default, or no commitment. The known limitations page says "The Mistral API is served from EU data centers by default." The regional inference page says that without an explicit region you hit the global endpoint, and that "Mistral does not commit to a specific inference location for requests sent to this endpoint." If data location matters to you, use
api.eu.mistral.aiexplicitly and read the feature limitations, because tool use is restricted there.
There is a fifth, smaller one worth knowing if you quote Mistral in writing: the identical prompting guide is published at two URLs, and the two copies use different apostrophe characters in the same sentence. Copy from the page you actually cite.
Keeping a Mistral prompt library that survives the next deprecation
The lesson of this year's turnover is not that Mistral moves fast. It is that a prompt library pinned to model names rots, and one pinned to jobs does not. Every template above names a job, not a model. The model-specific parts, the reasoning switch, the sampling numbers, the chat template, live in one place each so that when Mistral Small 5 lands you change one line rather than thirty.
Two habits make that cheap. Parameterise: keep the variable slots as slots, the way Mistral's own Prompt Registry does with {{variable}}, so the same skeleton serves ten cases. And version: when a template changes because a model changed, keep the old one long enough to compare outputs. Our guides to system versus user prompts and to getting schema-valid JSON out of any model both apply to Mistral unchanged, because both are about structure rather than branding.
One honest note on our own product. Prompt Architects lists Mistral among the models you can generate a prompt for, under the heading "Prompt Generation Optimized For Those Models" on our integrations page. We do not publish a dedicated Mistral integration page, and Vibe is not among the sites our browser extension names as supported. What you get is prompt generation and a place to keep the templates, tagged and searchable, with variables you fill in at use time. The structured output enforcement, the reasoning switch and the tool schemas stay where they belong, in your API call.