Mistral: Codestral 2508 (batch)
Codestral 2508 ist das Textmodell von Mistral AI für Codegenerierung und kontextbezogene Vervollständigung. Es ist für häufige Editoraufgaben optimiert, darunter Fill-in-the-Middle und mehrzeilige Änderungen, mit einem vom Hersteller angegebenen Kontext von 128k sowie dokumentierten Chat-, Ausgabeformat- und Werkzeugfunktionen.
Ü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.
Codestral 2508 ist das Programmiermodell von Mistral AI für häufige, latenzkritische Vervollständigungs- und Generierungsaufgaben. Es erhält Quellcode und schriftliche Anforderungen und gibt Text zurück, der eine Implementierung, Vervollständigung, Korrektur oder Erklärung enthalten kann. Die benannte Ausgabe 2508 konzentriert sich auf den aktuellen Bearbeitungskontext des Entwicklers und ist weder ein Embedding-Modell noch für sich allein ein vollständiger Repository-Agent.
Codevervollständigung und die Aktualisierung 2508
Der Hersteller positioniert Codestral für Fill-in-the-Middle-Vervollständigung und mehrzeilige Bearbeitung. Die Veröffentlichung beschreibt Verbesserungen des Vervollständigungsverhaltens, darunter die Verringerung unkontrolliert fortgesetzter Generierung, sowie Verbesserungen bei der Befolgung von Anweisungen und bei Codeaufgaben im Chatmodus. Dies sind Änderungen an dieser Codestral-Ausgabe; die Retrieval- und autonomen Agentenfunktionen des umgebenden Programmierwerkzeugs gehören zu separat benannten Komponenten.
Halte für eine Vervollständigungsaufgabe die relevante Funktionssignatur, Deklarationen und den Aufrufkontext zusammen mit der Cursorposition fest. Gib an, ob nur der fehlende Code oder eine vollständig überarbeitete Funktion gewünscht ist. Eine Anfrage im Editorstil kann beispielsweise einen Schleifenkörper verlangen, der den bestehenden Rückgabetyp bewahrt, doppelte Werte erhält und die Eingabe des Aufrufers nicht verändert. Das Ergebnis hat dann eine konkrete Einfügestelle und ein definiertes Verhalten.
Vorbereitung für Fill-in-the-Middle
In der FIM-Schnittstelle des Herstellers liefert der Prompt den zu vervollständigenden Text oder Code, und ein optionales Suffix enthält das Material nach der Lücke. Sind beide vorhanden, füllt das Modell den Raum dazwischen. Ohne Suffix setzt es den Prompt fort. Dies unterscheidet sich von einer gewöhnlichen Dialoganfrage, die eine Codeänderung und eine Erklärung verlangt; jede Vorbereitungsform definiert einen anderen Ausgabevertrag.
Eine nützliche Eingabe zur Lückenvervollständigung enthält den Funktionsanfang, den Code, der nach der Einfügung folgen muss, sowie relevante Typ- oder Hilfsdefinitionen. Bewahre Einrückungen und Begrenzungszeichen, damit der zurückgegebene Text in das bestehende Fragment passt. Benötigt die Aufgabe nur den fehlenden Funktionskörper, fordere diesen statt einer Neufassung der gesamten Datei an. Eine separate Chatfrage kann erklären lassen, warum das vervollständigte Fragment die Anforderung erfüllt.
Die offizielle FIM-Dokumentation erlaubt ein Budget für Ausgabetokens und verlangt, dass Prompt und dieses Budget zusammen innerhalb des Modellkontexts bleiben. Sie dokumentiert außerdem Stoppsequenzen und Streaming der generierten Inhalte. Wähle einen Vervollständigungsablauf, wenn das Ergebnis in eine Codelücke passen muss, und einen Dialogablauf, wenn die Aufgabe Code samt Erklärung verlangt.
Kontext und unterstützende Funktionen
Die Modellseite nennt ein Kontextfenster von 128k. Nutze den Kontext, um den Quellcode und die Deklarationen zu bewahren, die die beabsichtigte Änderung bestimmen, und halte zugleich die eigentliche Bearbeitungsaufgabe ausdrücklich fest. Stelle für eine Fehlerkorrektur die betroffene Funktion, eine konkrete fehlschlagende Eingabe, das erwartete Ergebnis sowie den Fehler oder das beobachtete Verhalten bereit. Fordere die vorgeschlagene Korrektur getrennt von Erklärung und Beispielen an.
Die Seite nennt neben Chat- und FIM-Fähigkeiten auch strukturierte Ausgaben, Funktionsaufrufe, vorhergesagte Ausgaben, Fragen zu Dokumenten, Antwortpräfixe und Stapelverarbeitung. Definiere für eine strukturierte Codeprüfung Felder wie das betroffene Symbol, die beobachtete Abweichung, die vorgeschlagene Änderung und die noch zu klärende Annahme. Mistrals Anleitung zu strukturierten Ausgaben unterscheidet den JSON-Modus von einem benutzerdefinierten Schema; das gewünschte JSON-Format wird im Prompt angegeben.
Vorhergesagte Ausgaben sind für Inhalte gedacht, bei denen erhebliche Teile der Antwort bereits bekannt sind. Sie lassen sich verwenden, wenn ein Dokument oder eine Codedatei mit einer begrenzten Änderung neu erzeugt wird und der übrige Inhalt erhalten bleiben soll. Gib die genaue Änderung und das zu bewahrende Material vor. Ein Antwortpräfix liefert dagegen einen bekannten Anfang, den die Generierung fortsetzt; es unterscheidet sich sowohl von einem bekannten vollständigen Inhalt als auch von einem FIM-Suffix.
Eine Dokumentationsfrage kann den Dokumentverarbeitungsablauf des Herstellers nutzen, um Text und Struktur mittels OCR vor der Sprachmodellanalyse aufzubereiten. Stelle bei Programmiermaterial, das bereits als Text vorliegt, die relevanten Dokumentationspassagen bereit und frage, welche Bedingung die Implementierung bestimmt. Halte jede extrahierte Anforderung mit ihrem Quellabschnitt verbunden, damit der erzeugte Code oder die Erklärung auf die bereitgestellte Spezifikation bezogen bleibt.
Werkzeuge und praktische Ergebnisse
Funktionsaufrufe erlauben der Anwendung, beschriebene Operationen und ihre Parameter bereitzustellen. Das Modell bereitet einen Aufruf vor, die Anwendung führt ihn aus und das zurückgegebene Ergebnis wird zum Kontext der nächsten Antwort. Ein Programmierassistent kann über diesen Zyklus ein Abfrage- oder Berechnungsergebnis erhalten; das Kompilieren, Testen oder Anwenden einer vorgeschlagenen Änderung benötigt dennoch die umgebende Entwicklungsumgebung.
Definiere für eine praktische Korrektur die öffentliche Schnittstelle, die kompatibel bleiben muss, und fordere das überarbeitete Fragment, eine knappe Erklärung sowie Beispieleingaben mit erwarteten Ausgaben an. Nenne für eine generierte Funktion die akzeptierten Typen und Randbedingungen. Stelle für eine Erklärung die nachzuverfolgende Eingabe bereit, damit die Antwort einen konkreten Ausführungspfad mit dem zurückgegebenen Wert verbindet.
Codestral erzeugt Text. Es übernimmt weder Codesuchvektoren von Codestral Embed noch Repository-Automatisierung von Devstral oder Bilderzeugung von einem visuellen Modell. Die genaue Modellseite zu 2508 veröffentlicht weder eine Parameterzahl noch eine eigenständige maximale Antwortlänge, die aus einer anderen Veröffentlichung übernommen werden könnte. Bewahre die benannte Ausgabe, den Programmierkontext und das erforderliche Artefakt, wenn du einen wiederholbaren Editor- oder Chatablauf vorbereitest.
Ailoot Ultra · Stapelverarbeitung POST /v1/batches mistralai/codestral-2508:batch
mistralai/codestral-2508:batch
mistralai/codestral-2508:batchStart
Codestral 2508 ist das Textmodell von Mistral AI für Codegenerierung und kontextbezogene Vervollständigung. Es ist für häufige Editoraufgaben optimiert, darunter Fill-in-the-Middle und mehrzeilige Änderungen, mit einem vom Hersteller angegebenen Kontext von 128k sowie dokumentierten Chat-, Ausgabeformat- und Werkzeugfunktionen.
- 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/codestral-2508: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/codestral-2508:batch, mistralai/codestral-2508 | 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.0003 / 1K Token Ausgabe · Ausgabetoken $0.0009 / 1K Token Eingabe · Cache-Lesen $0.00003 / 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.0003 / 1K Token Ausgabe · Ausgabetoken $0.0009 / 1K Token Eingabe · Cache-Lesen $0.00003 / 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/codestral-2508: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/codestral-2508:batch', 'mistralai/codestral-2508']: raise ValueError("body.model must be an exact documented caller or wire ID")
return {"endpoint":"/v1/chat/completions", "model":"mistralai/codestral-2508: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/codestral-2508:batch
Aliasnamen für Methodenpfade
Verwenden Sie die oben angezeigten Methodenpfade.
Zugehörige Aufrufer-IDs
FAQ · Mistral: Codestral 2508 (batch)
- Welche Eingaben und Ergebnisse sind verfügbar?
POST /v1/batches·mistralai/codestral-2508:batch:text→text- Welche Felder verwendet die Anfrage?
POST /v1/batches·mistralai/codestral-2508:batch:endpoint,model,requests,completion_window,provider- Welche Grenzen gelten?
POST /v1/batches·mistralai/codestral-2508:batch:requests.min_items:1