Mistral hat Medium 3.5 am 29. April 2026 veröffentlicht. Für die gehostete API verwenden Sie die Modell-ID mistral-medium-3.5 und den Endpunkt POST https://api.mistral.ai/v1/chat/completions. Das Request-Format ist nah genug am OpenAI-Standard, dass Sie in vielen Codebasen nur base_url und model austauschen müssen. Relevant für Implementierungen sind vor allem: 256K Kontextfenster, native Bilderkennung, Funktionsaufrufe, JSON-Ausgabe, 24 Sprachen und 77,6 % auf SWE-Bench Verified.
Probieren Sie Apidog heute aus
Dieser Leitfaden zeigt den praktischen Einstieg: Authentifizierung, Parameter, Python- und Node-Beispiele, Streaming, Tool-Aufrufe, JSON-Modus, Bildereingabe, Fehlerbehandlung und ein Apidog-Setup, mit dem Sie Requests wiederholbar testen und Token-Kosten sichtbar machen. Weitere Modell-Guides: DeepSeek V4 API verwenden und GPT-5.5 API verwenden.
TL;DR
- Endpunkt:
POST https://api.mistral.ai/v1/chat/completions - Authentifizierung: Bearer-Token im
Authorization-Header - Modell-ID:
mistral-medium-3.5 - Kontextfenster: 256K Tokens
- Preise: 1,5 $ pro Million Eingabe-Tokens, 7,5 $ pro Million Ausgabe-Tokens
- Features: Reasoning, Bilderkennung, Funktionsaufrufe, strukturierte JSON-Ausgabe, 24 Sprachen
- Offene Gewichte:
mistralai/Mistral-Medium-3.5-128Bauf Hugging Face unter Modified MIT License mit Klausel für hohe Einnahmen - Benchmark: 77,6 % auf SWE-Bench Verified, 91,4 auf τ³-Telecom
- Für wiederholbare Tests: Apidog herunterladen, API-Key als Secret speichern und
usagepro Aufruf auswerten
Was sich in Medium 3.5 geändert hat
Medium 3 war ein reines Textmodell mit 128K Kontext. Medium 3.5 ist ein zusammengeführtes Flaggschiff-Modell: Instruction Following, Reasoning und Coding laufen über denselben Gewichtssatz. Sie müssen also nicht mehr zwischen Chat- und Reasoning-Checkpoint wechseln.
Neu oder relevant für die Implementierung:
- 256K Kontext statt 128K
- native Bilderkennung
- native Funktionsaufrufe
- strukturierte Ausgabe über JSON-Modus oder JSON-Schema
- bessere Eignung für agentische Workflows und Code-Patching
Die wichtigsten Leistungsdaten:
- SWE-Bench Verified: 77,6 %
- τ³-Telecom: 91,4
- Kontextfenster: 256K Tokens
Die Kosten sind deutlich höher als bei Medium 3. Medium 3 lag bei 0,40 $ pro Million Eingabe-Tokens und 2,00 $ pro Million Ausgabe-Tokens. Medium 3.5 kostet 1,5 $ pro Million Eingabe-Tokens und 7,5 $ pro Million Ausgabe-Tokens. Nutzen Sie Medium 3.5 deshalb gezielt für Aufgaben, bei denen Reasoning, Codequalität, Bilderkennung oder langer Kontext den Aufpreis rechtfertigen.
Voraussetzungen
Sie benötigen:
- Ein Mistral-Konto unter console.mistral.ai mit Zahlungsmethode oder Guthaben.
- Einen API-Key, idealerweise projektbezogen statt kontoweit.
- Ein SDK:
- Python:
mistralaioder OpenAI-kompatibles SDK - Node.js:
@mistralai/mistralaioder OpenAI-kompatibles SDK
- Python:
- Einen API-Client für wiederholbare Tests, z. B. Apidog, damit API-Keys nicht in Shell-Historien oder geteilten Requests landen.
API-Key lokal setzen:
export MISTRAL_API_KEY="..."
Endpunkt und Authentifizierung
Der Chat-Completions-Endpunkt lautet:
POST https://api.mistral.ai/v1/chat/completions
Minimaler curl-Request:
curl https://api.mistral.ai/v1/chat/completions \
-H "Authorization: Bearer $MISTRAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mistral-medium-3.5",
"messages": [
{
"role": "user",
"content": "Explain dense merged checkpoints in two sentences."
}
]
}'
Eine erfolgreiche Antwort enthält typischerweise:
idchoicesusage.prompt_tokensusage.completion_tokensusage.total_tokens
Fehler kommen in einer error-Hülle mit code und message. Die Struktur ist OpenAI-ähnlich genug, dass bestehende Error-Parser oft weiterverwendet werden können.
Wichtige Request-Parameter
| Parameter | Typ | Werte | Hinweis |
|---|---|---|---|
model |
string | mistral-medium-3.5 |
Erforderlich |
messages |
array | Rolle/Inhalt-Paare | Erforderlich |
temperature |
float |
0 bis 1.5
|
0.7 allgemein, 0.3 für Code |
top_p |
float |
0 bis 1
|
Standard: 1.0 |
max_tokens |
int | bis Kontextlimit | Begrenzt Ausgabelänge |
stream |
bool |
true, false
|
Aktiviert SSE-Streaming |
tools |
array | OpenAI-Tool-Spezifikation | Native Funktionsaufrufe |
tool_choice |
string/object |
auto, any, none, spezifisches Tool |
any erzwingt Tool-Nutzung |
response_format |
object | JSON-Modus oder JSON-Schema | Strukturierte Ausgabe |
random_seed |
int | beliebige ganze Zahl | Reproduzierbarkeit |
safe_prompt |
bool |
true, false
|
Fügt Mistrals Safety-Prompt hinzu |
presence_penalty |
float |
-2 bis 2
|
Bestraft wiederholte Themen |
frequency_penalty |
float |
-2 bis 2
|
Bestraft wiederholte Tokens |
Zwei Migrationsdetails sind wichtig:
- OpenAI
tool_choice="required"entspricht bei Mistraltool_choice="any". - OpenAI
seedheißt bei Mistralrandom_seed.
Python-Client mit offiziellem Mistral-SDK
Installation:
pip install mistralai
Beispiel:
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
response = client.chat.complete(
model="mistral-medium-3.5",
messages=[
{"role": "system", "content": "Reply in code only."},
{"role": "user", "content": "Write a Rust function that debounces events."},
],
temperature=0.3,
max_tokens=2048,
)
content = response.choices[0].message.content
usage = response.usage
estimated_cost_usd = (
usage.prompt_tokens * 1.5 / 1_000_000
+ usage.completion_tokens * 7.5 / 1_000_000
)
print(content)
print("Prompt tokens:", usage.prompt_tokens)
print("Completion tokens:", usage.completion_tokens)
print("Total tokens:", usage.total_tokens)
print("Estimated cost USD:", estimated_cost_usd)
Python mit OpenAI-kompatiblem SDK
Wenn Ihre Codebasis bereits das OpenAI-SDK verwendet, reichen meistens base_url und model.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["MISTRAL_API_KEY"],
base_url="https://api.mistral.ai/v1",
)
response = client.chat.completions.create(
model="mistral-medium-3.5",
messages=[
{"role": "user", "content": "Hello, Mistral."}
],
)
print(response.choices[0].message.content)
Nutzen Sie diesen Weg, wenn Sie anbieterunabhängigen Code behalten wollen. Nutzen Sie das native mistralai-SDK, wenn Sie Mistral-spezifische Features sauber abbilden möchten.
Node.js mit offiziellem Mistral-SDK
Installation:
npm install @mistralai/mistralai
Beispiel:
import { Mistral } from "@mistralai/mistralai";
const client = new Mistral({
apiKey: process.env.MISTRAL_API_KEY,
});
const response = await client.chat.complete({
model: "mistral-medium-3.5",
messages: [
{
role: "user",
content: "Explain dense merged checkpoints in plain English.",
},
],
temperature: 0.7,
});
console.log(response.choices[0].message.content);
console.log("Usage:", response.usage);
Node.js mit OpenAI-kompatiblem SDK
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.MISTRAL_API_KEY,
baseURL: "https://api.mistral.ai/v1",
});
const response = await client.chat.completions.create({
model: "mistral-medium-3.5",
messages: [
{
role: "user",
content: "Hello, Mistral.",
},
],
});
console.log(response.choices[0].message.content);
Streaming-Antworten
Setzen Sie stream: true bzw. nutzen Sie die Streaming-Methode des SDK. Die Chunks folgen dem OpenAI-ähnlichen SSE-Format.
Python-Beispiel:
stream = client.chat.stream(
model="mistral-medium-3.5",
messages=[
{
"role": "user",
"content": "Stream a 300-word essay on merged checkpoints.",
}
],
)
for chunk in stream:
delta = chunk.data.choices[0].delta.content or ""
print(delta, end="", flush=True)
Für CLI-Tools, Chat-UIs und längere Antworten sollten Sie Streaming standardmäßig aktivieren, damit Nutzer nicht auf die vollständige Antwort warten müssen.
Tool-Aufrufe
Medium 3.5 unterstützt native Funktionsaufrufe. Sie definieren verfügbare Funktionen im tools-Array. Das Modell entscheidet dann, ob und mit welchen Argumenten ein Tool aufgerufen wird.
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Return the current weather for a city.",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"},
"unit": {"type": "string", "enum": ["c", "f"]},
},
"required": ["city"],
},
},
}
]
response = client.chat.complete(
model="mistral-medium-3.5",
messages=[
{
"role": "user",
"content": "Weather in Lagos in Celsius?",
}
],
tools=tools,
tool_choice="auto",
)
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name)
print(tool_call.function.arguments)
Typischer Ablauf:
- Request mit
toolssenden. - Tool-Call aus
response.choices[0].message.tool_callslesen. - Funktion lokal ausführen.
- Ergebnis als
role: "tool"-Message anhängen. - API erneut aufrufen, damit das Modell mit dem Tool-Ergebnis antwortet.
Das Muster ist praktisch identisch mit OpenAI-Tool-Loops. Der Unterschied: Wenn Sie einen Tool-Aufruf erzwingen wollen, verwenden Sie bei Mistral tool_choice="any".
JSON-Modus und strukturierte Ausgabe
Für beliebiges gültiges JSON:
response = client.chat.complete(
model="mistral-medium-3.5",
messages=[
{
"role": "user",
"content": "Return a JSON object with title and summary.",
}
],
response_format={"type": "json_object"},
)
Für schema-validierte Ausgabe übergeben Sie ein JSON-Schema:
schema = {
"type": "json_schema",
"json_schema": {
"name": "release_note",
"schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"date": {"type": "string"},
"bullets": {
"type": "array",
"items": {"type": "string"},
},
},
"required": ["title", "date", "bullets"],
"additionalProperties": False,
},
"strict": True,
},
}
response = client.chat.complete(
model="mistral-medium-3.5",
messages=[
{
"role": "system",
"content": "Reply with a single JSON object matching the schema.",
},
{
"role": "user",
"content": "Summarize today's Mistral Medium 3.5 release.",
},
],
response_format=schema,
)
print(response.choices[0].message.content)
Verwenden Sie JSON-Schema, wenn downstream Code harte Struktur erwartet. Verwenden Sie json_object, wenn Sie nur gültiges JSON brauchen und selbst mit Pydantic, Zod oder ähnlichen Tools validieren.
Bildereingabe
Medium 3.5 kann Bildinhalte zusammen mit Text im messages-Array verarbeiten.
response = client.chat.complete(
model="mistral-medium-3.5",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is in this image and what is it doing wrong?",
},
{
"type": "image_url",
"image_url": "https://example.com/diagram.png",
},
],
}
],
)
print(response.choices[0].message.content)
Bildeingaben werden als Eingabe-Tokens abgerechnet. Der konkrete Token-Verbrauch hängt von der Auflösung ab und erscheint in usage.prompt_tokens.
Für produktive Bild-Workloads:
- relevante Bereiche vorher zuschneiden
- unnötig hohe Auflösungen vermeiden
- Token-Verbrauch pro Bild loggen
- bei Videos nur relevante Frames senden
Apidog-Sammlung für wiederholbare Tests erstellen
Für manuelle Iteration mit curl verlieren Sie schnell Überblick über Prompts, Header, Varianten und Kosten. Ein stabiler Workflow in Apidog:
- Apidog herunterladen und ein Projekt erstellen.
- Eine Umgebung anlegen.
-
MISTRAL_API_KEYals geheime Variable speichern. -
BASE_URLaufhttps://api.mistral.ai/v1setzen. - Eine
POST-Anfrage an{{BASE_URL}}/chat/completionserstellen. - Header setzen:
Authorization: Bearer {{MISTRAL_API_KEY}}
Content-Type: application/json
- Body als Vorlage speichern:
{
"model": "mistral-medium-3.5",
"messages": [
{
"role": "user",
"content": "Explain dense merged checkpoints in two sentences."
}
],
"temperature": 0.7,
"max_tokens": 1024
}
-
model,temperature,max_tokensundtool_choiceparametrisieren. - In jedem Response den
usage-Block prüfen. - Kosten pro Request berechnen:
prompt_tokens * 1.5 / 1_000_000
+ completion_tokens * 7.5 / 1_000_000
Wenn Sie bereits eine DeepSeek V4 API-Sammlung in Apidog verwenden, können Sie sie duplizieren, BASE_URL auf https://api.mistral.ai/v1 setzen und model auf mistral-medium-3.5 ändern. Dasselbe Muster funktioniert für den Vergleich mit GPT-5.5.
Fehlerbehandlung
Häufige Fehlercodes:
| Code | Bedeutung | Behebung |
|---|---|---|
400 |
Ungültige Anfrage | JSON, messages und tools validieren |
401 |
Ungültiger Schlüssel | Key unter console.mistral.ai neu generieren |
402 |
Zahlung erforderlich | Konto aufladen oder Zahlungsmethode hinzufügen |
403 |
Modell nicht erlaubt | Projektumfang und Modell-ID prüfen |
422 |
Parameter außerhalb des Bereichs |
max_tokens, tool_choice oder Schema prüfen |
429 |
Ratenbegrenzung | Exponentielles Backoff mit Jitter |
500 |
Serverfehler | Einmal wiederholen, dann Status prüfen |
503 |
Überlastet | Warten oder auf Mistral Medium 3 zurückfallen |
Ein einfacher Retry-Wrapper sollte nur temporäre Fehler automatisch wiederholen:
import time
import random
def retryable_status(status_code: int) -> bool:
return status_code == 429 or 500 <= status_code < 600
def backoff_sleep(attempt: int) -> None:
base = min(30, 2 ** attempt)
jitter = random.uniform(0, 1)
time.sleep(base + jitter)
Wiederholen Sie 4xx-Fehler nicht blind. Sie weisen meistens auf ungültige Parameter, fehlende Berechtigungen oder fehlerhafte Tool-Schemas hin.
Kostenkontrolle in der Praxis
Medium 3.5 ist deutlich teurer als Medium 3. Deshalb sollten Sie Routing und Token-Budgets bewusst implementieren.
1. Standardmäßig günstiger routen
Nutzen Sie Medium 3 für einfache oder hochvolumige Aufgaben. Eskalieren Sie nur zu Medium 3.5, wenn:
- ein Validator fehlschlägt
- der günstige Durchlauf unsicher ist
- Bilderkennung benötigt wird
- langer Kontext wirklich erforderlich ist
- Code- oder Agentenqualität wichtiger als Kosten ist
2. max_tokens begrenzen
Die Ausgabe ist mit 7,5 $ pro Million Tokens die teurere Seite.
{
"max_tokens": 2048
}
Das 256K-Fenster ist primär für große Eingaben gedacht, nicht für unbegrenzte Ausgaben.
3. System-Prompts kürzen
Jeder System-Prompt wird bei jedem Request erneut abgerechnet. Wenn Sie eine 2K-Token-Präambel auf 500 Tokens kürzen, sparen Sie bei hohem Volumen 75 % dieses Eingabeanteils.
4. usage loggen
Speichern Sie pro Request:
prompt_tokenscompletion_tokenstotal_tokens- geschätzte USD-Kosten
- Modell-ID
- Request-Typ oder Feature-Name
So erkennen Sie Prompts, die plötzlich sehr lange Antworten erzeugen.
5. Bilder selektiv senden
Bild-Tokens können schnell teuer werden. Schneiden Sie irrelevante Bereiche weg und senden Sie nur die niedrigste Auflösung, die für die Aufgabe noch reicht.
Vergleich mit anderen Mistral-Stufen
Mistrals Angebot Ende April 2026:
| Modell | Kontext | Eingabe $/Mio. | Ausgabe $/Mio. | Bilderkennung | Am besten für |
|---|---|---|---|---|---|
mistral-small |
32K | $0.10 | $0.30 | Nein | Klassifizierung, leichter Chat |
mistral-medium-3 |
128K | $0.40 | $2.00 | Nein | Hoher Durchsatz, längere Chats |
mistral-medium-3.5 |
256K | $1.5 | $7.5 | Ja | Reasoning, Code, Bilderkennung, Agenten |
mistral-large |
128K | $2.00 | $6.00 | Begrenzt | Frontier-Tier Text-Reasoning |
Medium 3.5 kombiniert langen Kontext, Bilderkennung und zusammengeführte Reasoning-Fähigkeiten. Wählen Sie es nach Workload, nicht nach Modellrang.
Migration von OpenAI oder DeepSeek
Die Migration ist meistens eine Änderung der Basis-URL und Modell-ID.
Von OpenAI:
- base_url="https://api.openai.com/v1"
- model="gpt-5.5"
+ base_url="https://api.mistral.ai/v1"
+ model="mistral-medium-3.5"
Von DeepSeek:
- base_url="https://api.deepseek.com/v1"
- model="deepseek-v4-pro"
+ base_url="https://api.mistral.ai/v1"
+ model="mistral-medium-3.5"
Achten Sie auf diese Unterschiede:
- tool_choice="required"
+ tool_choice="any"
- seed=123
+ random_seed=123
Vor dem Umschalten in Produktion:
- Bestehende Testsuite gegen Mistral laufen lassen.
- Kritische Prompts in Apidog speichern.
- Antworten verschiedener Anbieter nebeneinander vergleichen.
- Einen Shadow-Traffic-Test durchführen, bevor Live-Traffic umgeleitet wird.
Praktische Anwendungsfälle
Medium 3.5 lohnt sich besonders für Aufgaben, bei denen ein günstigeres Modell häufiger Nacharbeit erzeugt.
Code-Review-Assistenten
Der SWE-Bench Verified Score von 77,6 % und das 256K-Kontextfenster passen gut zu PR-Reviews, bei denen Diff, Tests und umgebende Dateien gemeinsam betrachtet werden müssen.
Dokumenten-Q&A
Das 256K-Fenster kann viele Verträge, RFPs und Richtliniendokumente ohne Chunking abdecken. Trotzdem sollten Sie lange Dokumente nur dann vollständig senden, wenn Retrieval oder Zusammenfassungen nicht reichen.
Multimodale Extraktion
Für Belege, Screenshots oder Diagramme können Sie Bildinhalt und strukturierte Ausgabe in einem Request kombinieren, statt OCR und Textmodell getrennt auszuführen.
Agenten mit Tool-Aufrufen
Native Funktionsaufrufe und der τ³-Telecom-Score helfen bei mehrstufigen Workflows, in denen das Modell entscheiden muss, ob es direkt antwortet, ein Tool nutzt oder Rückfragen stellt.
FAQ
Was ist die Modell-ID für Mistral Medium 3.5?
Für die gehostete API:
mistral-medium-3.5
Für offene Gewichte auf Hugging Face:
mistralai/Mistral-Medium-3.5-128B
Wenn Sie selbst mit vLLM oder Unsloth hosten, verwenden Sie die Hugging-Face-ID. Für die Mistral-API verwenden Sie die kurze Modell-ID.
Ist Medium 3.5 OpenAI-kompatibel?
Nahezu, aber nicht vollständig. Endpunktstruktur, Header und viele Parameter sind kompatibel genug, dass OpenAI-SDKs mit base_url="https://api.mistral.ai/v1" funktionieren.
Die wichtigsten Unterschiede:
-
tool_choice="any"statt OpenAIrequired -
random_seedstatt OpenAIseed
Kann ich Medium 3.5 lokal ausführen?
Ja. Die Gewichte sind unter einer Modified MIT License mit Klausel für hohe Einnahmen verfügbar. Wegen der 128B Parameter benötigen Sie erheblichen GPU-Speicher. Quantisierte GGUF-Builds wie unsloth/Mistral-Medium-3.5-128B-GGUF laufen auf einer einzelnen High-End-Verbraucherkarte. Die Muster aus DeepSeek V4 lokal ausführen lassen sich übertragen.
Unterstützt Medium 3.5 Streaming mit Tool-Aufrufen?
Ja. Tool-Call-Argumente werden beim Streaming inkrementell unter delta.tool_calls zurückgegeben. Die Fragmente ergeben am Ende des Streams ein vollständiges JSON-Objekt.
Wie zähle ich Eingabe-Tokens vor dem Senden?
Verwenden Sie den Tokenizer aus dem Python-Paket mistral-common. Das ist derselbe Tokenizer, den die API verwendet, sodass die Zählung mit usage.prompt_tokens übereinstimmen sollte.
Welche Kontextlänge sollte ich in Produktion einplanen?
256K ist die Obergrenze, aber Kosten skalieren linear. Ein 200K-Token-Request kostet bereits 0,30 $ nur für die Eingabe. Viele Produktions-Workloads sollten unter 32K bleiben und langen Kontext nur bei echtem Bedarf nutzen.
Gibt es eine kostenlose Stufe?
Mistral bewirbt keine permanente kostenlose Stufe. Neue Konten haben typischerweise ein kleines Testguthaben. Für kostenlose Experimente mit ähnlichen Modellstufen siehe DeepSeek V4 API kostenlos nutzen.


Top comments (0)