Mistral: Mistral Small 4 (batch)
Mistral Small 4 ist ein hybrides Text- und Bildmodell mit Anweisungs-, Reasoning- und Programmierfähigkeiten. Seine Mixture-of-Experts-Veröffentlichung mit 119 Milliarden Parametern aktiviert 6,5 Milliarden Parameter pro Token und unterstützt einen vom Hersteller angegebenen Kontext von 256k, wählbaren Reasoning-Aufwand, JSON und Funktionsaufrufe.
Über das Modell
Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.
Mistral Small 4 verbindet allgemeine Anweisungsbefolgung, Schlussfolgern und Programmierung in einem einzigen multimodalen Modell. Der Hersteller beschreibt es als Vereinigung der Familien Instruct, Magistral für Reasoning und Devstral für Programmierung. Es verarbeitet Text und Bilder und gibt Text zurück; Funktionsaufrufe und JSON-Ausgabe stehen für werkzeuggestützte Anwendungen bereit.
Architektur und zentrale Funktionen
Die Veröffentlichung hat insgesamt 119 Milliarden Parameter und aktiviert pro Token 6,5 Milliarden. Ihre Mixture-of-Experts-Architektur enthält 128 Experten, davon 4 aktive, und der Hersteller dokumentiert ein Kontextfenster von 256k. Die Zahl aktiver Parameter und Experten beschreibt die Organisation des Modells; sie ist von der Menge des Text- oder Bildinhalts in einer Aufgabe getrennt.
Das Modell bietet Anweisungs- und Reasoning-Funktionen im selben Checkpoint. Der Hersteller nennt außerdem visuelle Fähigkeiten, Systemprompt-Befolgung und mehrsprachige Unterstützung für Dutzende Sprachen, darunter Englisch, Französisch, Spanisch, Deutsch, Italienisch, Portugiesisch, Niederländisch, Chinesisch, Japanisch, Koreanisch und Arabisch. Eine Textanweisung kann daher nach einem Bild fragen oder eine schriftliche Anforderung mit sichtbaren Belegen verbinden; die Antwort wird als Text zurückgegeben.
Eine visuelle Aufgabe kann eine Dokumentseite bereitstellen und die für eine benannte Bedingung relevanten Werte anfordern. Halte Bezeichnungen und Einheiten lesbar und lege fest, ob das Ergebnis den Originalwortlaut bewahren, zusammenfassen oder mit einer anderen Quelle vergleichen soll. Eine Oberflächenaufgabe kann einen Screenshot mit dem Nutzerziel verbinden und das relevante sichtbare Bedienelement sowie die Belege für einen vorgeschlagenen nächsten Schritt anfordern.
Anweisungs- oder Reasoning-Modus wählen
Die veröffentlichte Modellkarte dokumentiert den Reasoning-Aufwand none für eine unmittelbare anweisungsbasierte Antwort und high für Schlussfolgern; high wird für komplexe Prompts empfohlen. Die Wahl erfolgt pro Anfrage innerhalb desselben Modells Small 4. Eine gewöhnliche Klassifikation oder kurze Neufassung kann einen anderen Antwortvertrag haben als ein mathematisches, visuelles oder Programmierproblem, das eine ausführliche Erklärung benötigt.
Der Hersteller empfiehlt temperature 0.7 für hohen Reasoning-Aufwand. Für none gibt er aufgabenabhängige Temperaturen zwischen 0.0 und 0.7 an. Diese Einstellungen beschreiben die dokumentierten Modi und machen aus dem Reasoning-Aufwand keine Garantie für ein korrektes Ergebnis. Definiere Annahmen, Ausgabeform und relevantes Quellenmaterial, bevor du wählst, wie viel Schlussfolgern die Aufgabe benötigt.
Stelle für eine ausgearbeitete Problemlösung die vollständige Bedingung bereit und fordere die wichtigen begründeten Schritte mit anschließendem endgültigem Ausdruck an. Gib für eine Codeaufgabe die Anforderung, die betroffene Funktion und eine konkrete Eingabe vor; fordere die vorgeschlagene Implementierung getrennt von Erklärung und Beispielen an. Die Nutzungsdemonstrationen des Herstellers umfassen Anweisungsbefolgung, ein auf ein Bild angewendetes Berechnungswerkzeug und visuelles Schlussfolgern und zeigen, wie Text und visuelle Belege in diese unterschiedlichen Aufgaben einfließen können.
Programmierung, Dokumente und Werkzeuge
Das Modell ist für Codebasis-Erkundung und Softwareentwicklungsagenten, allgemeine Assistenten, Dokumentverständnis und Recherche positioniert. Ein Auftrag an einen Programmieragenten kann das zu ändernde Modul, die zu bewahrende Schnittstelle und das gewünschte Verhalten benennen. Stelle den relevanten Quellcode und Fehlerbelege bereit. Das Modell kann die nächste Operation oder eine Codeänderung vorschlagen, während die Anwendung Repository-Zugriff, Ausführung und Rückmeldung bereitstellt.
Benenne für Dokumentextraktion die erforderlichen Felder und die Darstellung fehlender Informationen. Ein nützlicher Datensatz kann Dokumentkennung, Quellaussage, interpretierte Anforderung und offene Frage trennen. Die Dienstkarte des Herstellers nennt benutzerdefinierte strukturierte Ausgaben und Fragen zu Dokumenten; Letztere verwenden Dokumentverarbeitung und OCR zur Vorbereitung von Text und Struktur vor der Sprachmodellanalyse. Eine direkte Bildfrage und ein OCR-gestützter Dokumentablauf sollten ihre eigene Eingabevorbereitung bewahren.
Funktionsaufrufe benötigen klar beschriebene Werkzeuge. Das Modell wählt eine Funktion und erzeugt Argumente; die Anwendung führt die Operation aus und gibt ihr Ergebnis für die anschließende Antwort zurück. Dieselbe Logik gilt für Abfragen, Berechnungen und Programmieroperationen. JSON-Formatierung ordnet eine Antwort, während ein Werkzeugaufruf eine externe Handlung anfordert; beide sollten nicht als austauschbare Ergebnisse behandelt werden.
Die Dienstkarte nennt außerdem vorhergesagte Ausgaben, Antwortpräfixe, Stapelverarbeitung und Agentendialoge. Vorhergesagte Ausgaben sind nützlich, wenn ein Dokument oder eine Codedatei mit nur einer begrenzten Änderung neu erzeugt werden muss und der übrige Inhalt bekannt ist. Gib die Änderung und das zu bewahrende Material vor. Präfixfortsetzung verwendet einen bekannten Antwortanfang, während Stapelverarbeitung die Einreichung von Arbeit und keinen zusätzlichen Reasoning-Modus betrifft.
Grenzen von Kontext und Ausgabe
Plane die schriftliche Aufgabe, visuelles Material, Dialog und gewünschte Antwort um den dokumentierten Kontext von 256k herum. Das veröffentlichte Nutzungsbeispiel konfiguriert einen Kontext von 262.144 Tokens, während sein Generierungsbeispiel mit 1.024 Tokens keine separate maximale Ausgabekapazität ist. Die gelesenen Quellen geben keine unabhängige harte Antwortlängengrenze an, die anstelle der gewählten Aufgabenlänge eingesetzt werden könnte.
Small 4 besitzt seine eigene Mixture-of-Experts-Architektur mit 119 Milliarden Parametern und hybride Modi. Es sollte weder die dichte Architektur mit 128 Milliarden Parametern von Medium 3.5 noch die eigenständigen Ausgaben Instruct und Reasoning von Ministral 3 übernehmen. Der Hersteller veröffentlicht außerdem eigenständige quantisierte Artefakte und Artefakte für spekulatives Decoding; dies sind separate Bereitstellungsartefakte und keine unterschiedlichen Inhaltsmodalitäten. Bewahre die benannte Veröffentlichung Small 4 und den für die tatsächliche Erklärung, den strukturierten Datensatz oder das Codeergebnis angeforderten Modus.
Ailoot Ultra · Stapelverarbeitung POST /v1/batches mistralai/mistral-small-2603:batch
mistralai/mistral-small-2603:batch
mistralai/mistral-small-2603:batchStart
Mistral Small 4 ist ein hybrides Text- und Bildmodell mit Anweisungs-, Reasoning- und Programmierfähigkeiten. Seine Mixture-of-Experts-Veröffentlichung mit 119 Milliarden Parametern aktiviert 6,5 Milliarden Parameter pro Token und unterstützt einen vom Hersteller angegebenen Kontext von 256k, wählbaren Reasoning-Aufwand, JSON und Funktionsaufrufe.
- Zulässige Eingaben
- Text
- Ergebnisse
- Text
In Ailoot verfügbar · Eingaben und Methoden
Ailoot Ultra · Stapelverarbeitung POST /v1/batches
- Eingabetypen
text- Ausgabetypen
text- Ausgabeformat
- eingebettetes JSON unter results[].response.body
| Feld | Typ | Anforderung | Werte und Limits | Standard |
|---|---|---|---|---|
Feldendpoint | Typstring | AnforderungErforderlich | Werte und Limits /v1/chat/completions | Standard— |
Feldmodel | Typstring | AnforderungErforderlich | Werte und Limits mistralai/mistral-small-2603:batch | Standard— |
Feldrequests | Typbatch_item[] | AnforderungErforderlich | Werte und Limits Mindestanzahl Elemente: 1 | Standard— |
Feldrequests[].custom_id | Typstring | AnforderungErforderlich | Werte und Limits | Standard— |
Feldrequests[].body.messages | Typmessage[] | AnforderungErforderlich | Werte und Limits | Standard— |
Feldcompletion_window | Typstring | AnforderungOptional | Werte und Limits 24h | Standard— |
Feldprovider | Typobject|null | AnforderungOptional | Werte und Limits | Standard— |
Feldrequests[].body.model | Typstring | AnforderungOptional | Werte und Limits mistralai/mistral-small-2603:batch, mistralai/mistral-small-2603 | Standard— |
Feldprovider.only | Typstring[] | AnforderungOptional | Werte und Limits mistral | Standard— |
Feldprovider.allow_fallbacks | Typboolean|null | AnforderungOptional | Werte und Limits false, null | Standard— |
Methodenparameter und Lebenszyklus
| Parameter | Vertrag |
|---|---|
Parametercontent_type | Vertragapplication/json |
Parameterrequired | Vertragendpoint, model, requests |
Parametermaterial_types | Vertragtext |
Parameterrepresentation | Vertrageingebettete requests[]; jedes Element enthält custom_id und body |
Parameterrequest_endpoint_profile | Vertrag/v1/chat/completions |
Parameterfile_material | VertragDer Aufrufer kann tatsächliches UTF-8-JSONL lokal in requests[] einlesen. Es werden weder ein Upload-Zweck noch input_file_id oder eine Dateireferenz verwendet. Fehlendes oder leeres Kundenmaterial stoppt die Vorbereitung vor POST. |
Parameterserialization_order | Vertragendpoint, model, provider (falls angegeben), completion_window (falls angegeben), requests als letztes Feld |
Parameteroptional_controls | Vertragprovider.only, provider.allow_fallbacks, completion_window |
Parameterschema_scope | VertragAnfragekörper für Text Chat Completions in der dokumentierten Inline-Batch-Struktur. |
Lebenszyklus: asynchronous
GET /v1/batches/{operation_id} · die tatsächliche response.id der ursprünglichen Erstellungsantwort; derselbe Nutzer/Schlüssel/dieselbe Gruppe
Tarife
Tarifangaben erweitern die Anfrageoptionen nicht. Unterstützte Parameter stehen bei der ausgewählten Methode.
- Schnellmodus
- Nicht angegeben Wenn der Schnellmodus ausgewählt ist
- Flex-Modus
- Nicht angegeben Wenn der Modus flex ausgewählt ist
- Maximaler Denkaufwand
- Nicht angegeben Wenn beim maximalen Denkaufwand die Standardanpassung (default) verwendet wird
- Preise für explizites Caching
- Nicht aktiviert Wenn explizites Caching angefordert wird
Ailoot-Tarife
Preise nach Konfiguration
Ordnen Sie jede Gebühr den angezeigten Bedingungen zu. Verwenden Sie für jede Gruppe alternativer Konfigurationen einen Tarif.
| Konfiguration | Tarifstaffel | Kontexttoken, mehr als | Kontexttoken, bis einschließlich | Gebühr |
|---|---|---|---|---|
| KonfigurationBasistarife für Token | TarifstaffelGrundtarif | Kontexttoken, mehr als— | Kontexttoken, bis einschließlichKeine Obergrenze | Gebühr Eingabe · Eingabetoken $0.00015 / 1K Token Ausgabe · Ausgabetoken $0.0006 / 1K Token Eingabe · Cache-Lesen $0.000015 / 1K Token Eingabe · Cache-Schreiben — / 1K Token Eingabe · Cache-Schreiben, 1 Stunde — / 1K Token |
| KonfigurationAnfragelängenstufe 1 | Tarifstaffel— | Kontexttoken, mehr als0 | Kontexttoken, bis einschließlichKeine Obergrenze | Gebühr Eingabe · Eingabetoken $0.00015 / 1K Token Ausgabe · Ausgabetoken $0.0006 / 1K Token Eingabe · Cache-Lesen $0.000015 / 1K Token Eingabe · Cache-Schreiben — / 1K Token Eingabe · Cache-Schreiben, 1 Stunde — / 1K Token |
Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. So funktionieren Reservierung und Abrechnung →
Beispielanfragen
Ailoot Ultra · Stapelverarbeitung
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json
from pathlib import Path
body=json.loads('{"endpoint":"/v1/chat/completions","model":"mistralai/mistral-small-2603:batch","requests":[{"custom_id":"req-0001","body":{"messages":[{"role":"user","content":"Hello!"}],"max_tokens":16}}]}')
Path("batch-request.json").write_text(json.dumps(body,ensure_ascii=False),encoding="utf-8")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json
import json, os
from pathlib import Path
from urllib.request import Request, urlopen
def prepare_requests(customer_path):
path = Path(customer_path)
if not path.is_file(): raise ValueError("Customer JSONL file is missing")
items = [json.loads(line) for line in path.read_text(encoding="utf-8").splitlines() if line.strip()]
if not items: raise ValueError("Customer JSONL contains no requests")
ids = set()
for item in items:
if set(item) != {"custom_id", "body"}: raise ValueError("Each item needs custom_id and body")
cid = item["custom_id"]
if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError("custom_id must be nonempty and unique")
ids.add(cid)
if not isinstance(item["body"], dict) or not item["body"].get("messages"): raise ValueError("Supply actual text messages")
supplied_model = item["body"].get("model")
if supplied_model is not None and supplied_model not in ['mistralai/mistral-small-2603:batch', 'mistralai/mistral-small-2603']: raise ValueError("body.model must be an exact documented caller or wire ID")
return {"endpoint":"/v1/chat/completions", "model":"mistralai/mistral-small-2603:batch", "requests":items}
if __name__ == "__main__":
material = os.environ.get("AILOOT_BATCH_REQUESTS_JSONL", "")
if not material: raise SystemExit("Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file")
body = prepare_requests(material)
key = os.environ.get("AILOOT_API_KEY", "")
if not key: raise SystemExit("Set AILOOT_API_KEY")
request = Request("https://api.ailoot.ai/v1/batches", data=json.dumps(body, ensure_ascii=False).encode("utf-8"), headers={"Authorization":"Bearer " + key, "Content-Type":"application/json"}, method="POST")
with urlopen(request) as response:
raw = response.read()
Path("batch-create-response.json").write_bytes(raw)
print(raw.decode("utf-8"))
import json
from pathlib import Path
raw = Path("batch-status-response.json").read_bytes()
response = json.loads(raw)
if response.get("status") != "completed":
raise SystemExit("Keep the original operation; read its status without resubmitting")
results = response.get("results")
if not isinstance(results, list) or not results:
raise SystemExit("Preserve the original response; completed results are missing")
Path("batch-results.jsonl").write_text("".join(json.dumps(item, ensure_ascii=False) + "\n" for item in results), encoding="utf-8")
# Preserve batch-status-response.json with aggregate usage and every result/error.
Ergebnisse abrufen und speichern
Ailoot Ultra · Stapelverarbeitung
eingebettetes JSON unter results[].response.body
GET /v1/batches/{operation_id}
Auftragsstatus prüfen
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
BATCH_OPERATION_ID="$(python3 - <<'PY_ID'
import json
from pathlib import Path
from urllib.parse import quote
response = json.loads(Path("batch-create-response.json").read_text(encoding="utf-8"))
operation = response.get("id")
if not isinstance(operation, str) or not operation: raise SystemExit("No actual original operation ID; preserve the response and do not resubmit")
print(quote(operation, safe=""))
PY_ID
)"
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o batch-status-response.json
Alle fertiggestellten Ergebnisse aufbewahren
Bewahren Sie jede vollständig zurückgegebene Antwort, Datei und jeden Inhaltsteil auf.
Das vollständige ursprüngliche Status-JSON, jedes Ergebnis/jede custom_id und den vollständigen Antwort- oder Fehlerkörper aufbewahren. Abgeschlossene results[] ohne Filterung als JSONL speichern.
Wenn die ursprüngliche Antwort geprüft werden muss
Die ursprüngliche Vorgangs-ID beibehalten. Bei 503 result_pending_check gilt X-Should-Retry:false; einen ursprünglichen Batch mit unbekanntem Ausgang niemals erneut einreichen.
Antwortfelder
| Feld | Typ |
|---|---|
Feldresults[].custom_id | Typstring |
Feldresults[].response.body.choices[].message.content | Typstring|null |
Feldresults[].error | Typobject|null |
Feldusage | Typobject|null |
Feldid | Typstring |
Feldmodel | Typstring |
Feldendpoint | Typstring |
Feldstatus | Typstring |
Feldrequest_counts | Typobject |
Feldresults[].id | Typstring |
Feldresults[].response.status_code | Typinteger |
Feldresults[].response.request_id | Typstring |
Fehler und nächste Schritte
| Antwort | Bedingung | Nächster Schritt |
|---|---|---|
Antwort400 · invalid_request_error | BedingungUngültige Struktur der dokumentierten Inline-Einbettung, doppelte Schlüssel, ungültige Identitätsangaben zu einem Element oder ein Konflikt mit den konfigurierten Modellfähigkeiten. | Nächster SchrittDie angegebenen Felder vor jeder neuen Einreichung korrigieren. |
Antwort401 · authentication_error | BedingungUngültiger API-Schlüssel. | Nächster SchrittDen autorisierten Ailoot-Schlüssel verwenden. |
Antwort403 · permission_error | BedingungGruppe für Stapelverarbeitung nicht verfügbar. | Nächster SchrittDie Berechtigung des Schlüssels bzw. der Gruppe prüfen. |
Antwort422 · invalid_request_error | BedingungStapelverarbeitung wird über das Guthaben abgerechnet; die Erstellung über ein Abonnement wird abgelehnt. | Nächster SchrittDie autorisierte Gruppe mit Guthabenabrechnung verwenden. |
Antwort422 · price_unavailable | BedingungFür die Batch-Eingabe kann kein Preisangebot erstellt werden. | Nächster SchrittAntwort aufbewahren; die dokumentierte Eingabe der API-Familie verwenden. |
Antwort402 · billing_error | BedingungReservierung für Stapelverarbeitung nicht verfügbar. | Nächster SchrittDie Zulassung klären, bevor eine neue Anfrage gestellt wird. |
Antwort503 · price_unavailable | BedingungMethodenpreis bzw. native Tarife für Stapelverarbeitung nicht verfügbar. | Nächster SchrittAntwort aufbewahren; keine anderen Preise einsetzen. |
Antwort503 · api_error | BedingungDie genaue Anbieterroute ist nicht verfügbar. | Nächster SchrittAntwort zur Reparatur der Route aufbewahren. |
Antwort503 · result_pending_check | BedingungDas ursprüngliche Ergebnis muss geprüft werden; X-Should-Retry:false. | Nächster SchrittDie ursprüngliche operation_id/id beibehalten und ihren Status lesen; den ursprünglichen POST niemals wiederholen. |
Antwort404 · not_found | BedingungDer Batch-Vorgang, dessen Status abgefragt wird, ist nicht vorhanden oder gehört einer anderen Identität. | Nächster SchrittDie genaue ursprüngliche id und denselben Nutzer/Schlüssel/dieselbe Gruppe verwenden. |
Aliasnamen
Modellaliasnamen
Ailoot Ultra mistralai/mistral-small-2603:batch
Aliasnamen für Methodenpfade
Verwenden Sie die oben angezeigten Methodenpfade.
Zugehörige Aufrufer-IDs
FAQ · Mistral: Mistral Small 4 (batch)
- Welche Eingaben und Ergebnisse sind verfügbar?
POST /v1/batches·mistralai/mistral-small-2603:batch:text→text- Welche Felder verwendet die Anfrage?
POST /v1/batches·mistralai/mistral-small-2603:batch:endpoint,model,requests,completion_window,provider- Welche Grenzen gelten?
POST /v1/batches·mistralai/mistral-small-2603:batch:requests.min_items:1