Mistral: Codestral 2508 (batch)
Codestral 2508 är Mistral AI:s textmodell för kodgenerering och kontextmedveten komplettering. Den är optimerad för återkommande uppgifter i kodredigeraren, inklusive fill-in-the-middle och ändringar på flera rader, med en kontext på 128k token enligt tillverkaren och dokumenterade funktioner för chatt, strukturerade utdata och verktyg.
Om modellen
Den här beskrivningen omfattar modellens förmågor. Tillgängliga indata, utdata och alternativ i Ailoot anges nedan för den valda metoden.
Codestral 2508 är Mistral AI:s kodmodell för återkommande kompletterings- och genereringsuppgifter där svarstiden är viktig. Den tar emot källkod och textbaserade krav och returnerar text som kan innehålla en implementation, komplettering, korrigering eller förklaring. Den namngivna utgåvan 2508 fokuserar på utvecklarens aktuella redigeringskontext och är varken en inbäddningsmodell eller en komplett agent för kodarkiv i sig.
Kodkomplettering och uppdateringen 2508
Tillverkaren positionerar Codestral för fill-in-the-middle-komplettering och redigering av flera rader. Utgåvan beskriver förbättringar i kompletteringsbeteendet, bland annat minskad okontrollerad generering, tillsammans med förbättringar av instruktionsföljning och koduppgifter i chattläge. Detta är ändringar i den här Codestral-utgåvan; den omgivande kodningsstackens informationshämtning och autonoma agentfunktioner hör till separat namngivna komponenter.
För en kompletteringsuppgift håller du den relevanta funktionssignaturen, deklarationerna och anropskontexten tillsammans med markörpositionen. Ange om det önskade resultatet bara är den saknade koden eller en fullständigt reviderad funktion. En begäran avsedd för en kodredigerare kan exempelvis efterfråga en loopkropp som bevarar befintlig returtyp, behåller dubbla värden och inte ändrar anroparens indata. Resultatet får då en konkret infogningspunkt och ett definierat beteende.
Förberedelse för fill-in-the-middle
I tillverkarens FIM-gränssnitt innehåller prompten text eller kod som ska kompletteras, och ett valfritt suffix innehåller materialet efter luckan. När båda anges fyller modellen utrymmet mellan dem. Utan suffix fortsätter den från prompten. Detta skiljer sig från en vanlig samtalsbegäran om en kodändring och en förklaring; varje förberedelsesätt definierar ett eget kontrakt för utdata.
Användbara indata för att fylla en lucka innehåller funktionens början, koden som ska följa efter infogningen och eventuella relevanta typ- eller hjälpfunktionsdefinitioner. Bevara indrag och avgränsare så att den returnerade texten passar det befintliga fragmentet. Om uppgiften bara behöver den saknade funktionskroppen begär du den i stället för en omskrivning av hela filen. En separat chattfråga kan förklara varför det kompletterade fragmentet uppfyller kravet.
Den officiella FIM-dokumentationen tillåter en budget för utmatningstoken och kräver att prompten tillsammans med budgeten ryms inom modellens kontext. Den dokumenterar också stoppsekvenser och strömning av genererat innehåll. Välj ett kompletteringsflöde när resultatet måste passa kodluckan, och ett samtalsflöde när uppgiften efterfrågar kod tillsammans med en förklaring.
Kontext och stödfunktioner
Modellsidan anger ett kontextfönster på 128k token. Använd kontexten för att behålla källkoden och deklarationerna som bestämmer den avsedda ändringen, samtidigt som den faktiska redigeringsuppgiften hålls tydlig. För en felrättning tillhandahåller du den berörda funktionen, konkreta felutlösande indata, det förväntade resultatet och felet eller det observerade beteendet. Begär den föreslagna korrigeringen separat från förklaringen och exemplen.
Sidan listar också strukturerade utdata, funktionsanrop, förutsagda utdata, dokumentfrågor, svarsprefix och batchbearbetning tillsammans med chatt- och FIM-funktioner. För ett strukturerat kodgranskningsresultat definierar du fält som den berörda symbolen, den observerade avvikelsen, den föreslagna ändringen och det antagande som fortfarande behöver förtydligas. Mistrals vägledning för strukturerade utdata skiljer JSON-läge från ett anpassat schema, med det önskade JSON-formatet angivet i prompten.
Förutsagda utdata är avsedda för innehåll där stora delar av svaret redan är kända. De kan användas när ett dokument eller en kodfil återskapas med en begränsad ändring medan resten av innehållet behålls. Ange den exakta ändringen och materialet som ska bevaras. Ett svarsprefix ger i stället en känd början som genereringen fortsätter från; det skiljer sig både från en känd fullständig text och från ett FIM-suffix.
En dokumentationsfråga kan använda tillverkarens dokumentbearbetningsflöde för att förbereda text och struktur med OCR före språkmodellens analys. För programmeringsmaterial som redan finns som text tillhandahåller du relevanta dokumentationsavsnitt och frågar vilket villkor som styr implementationen. Håll varje extraherat krav kopplat till sitt källavsnitt så att den genererade koden eller förklaringen förblir knuten till den tillhandahållna specifikationen.
Verktyg och praktiska resultat
Funktionsanrop låter applikationen tillhandahålla beskrivna operationer och deras parametrar. Modellen förbereder ett anrop, applikationen kör det och det returnerade resultatet blir kontext för nästa svar. En kodassistent kan få ett uppslagningsresultat eller beräkningsresultat genom denna cykel, men att kompilera, testa eller tillämpa en föreslagen ändring kräver fortfarande den omgivande utvecklingsmiljön.
För en praktisk korrigering definierar du det publika gränssnitt som måste förbli kompatibelt och begär det reviderade fragmentet, en kort förklaring och exempelindata med förväntade utdata. För en genererad funktion anger du accepterade typer och gränsfall. För en förklaring tillhandahåller du de indata som ska följas steg för steg, så att svaret kopplar en konkret exekveringsväg till det returnerade värdet.
Codestral producerar text. Den ärver inte kodsökningsvektorer från Codestral Embed, automatisering av kodarkiv från Devstral eller bildgenerering från en bildmodell. Den specifika modellsidan för 2508 publicerar inget parameterantal eller separat maximal svarslängd som kan lånas från en annan utgåva. Bevara den namngivna utgåvan, kodningskontexten och den efterfrågade leveransen när du förbereder ett repeterbart arbetsflöde för kodredigerare eller chatt.
Ailoot Ultra · Batchkörning POST /v1/batches mistralai/codestral-2508:batch
mistralai/codestral-2508:batch
mistralai/codestral-2508:batchStart
Codestral 2508 är Mistral AI:s textmodell för kodgenerering och kontextmedveten komplettering. Den är optimerad för återkommande uppgifter i kodredigeraren, inklusive fill-in-the-middle och ändringar på flera rader, med en kontext på 128k token enligt tillverkaren och dokumenterade funktioner för chatt, strukturerade utdata och verktyg.
- Godkända indata
- Text
- Resultat
- Text
Tillgängligt i Ailoot · indata & metoder
Ailoot Ultra · Batchkörning POST /v1/batches
- Indatatyper
text- Utdatatyper
text- Utdataformat
- JSON i inbäddade results[].response.body
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältendpoint | Typstring | KravObligatoriskt | Värden & gränser /v1/chat/completions | Standard— |
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser mistralai/codestral-2508:batch | Standard— |
Fältrequests | Typbatch_item[] | KravObligatoriskt | Värden & gränser Minsta antal objekt: 1 | Standard— |
Fältrequests[].custom_id | Typstring | KravObligatoriskt | Värden & gränser | Standard— |
Fältrequests[].body.messages | Typmessage[] | KravObligatoriskt | Värden & gränser | Standard— |
Fältcompletion_window | Typstring | KravValfritt | Värden & gränser 24h | Standard— |
Fältprovider | Typobject|null | KravValfritt | Värden & gränser | Standard— |
Fältrequests[].body.model | Typstring | KravValfritt | Värden & gränser mistralai/codestral-2508:batch, mistralai/codestral-2508 | Standard— |
Fältprovider.only | Typstring[] | KravValfritt | Värden & gränser mistral | Standard— |
Fältprovider.allow_fallbacks | Typboolean|null | KravValfritt | Värden & gränser false, null | Standard— |
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametercontent_type | Avtalapplication/json |
Parameterrequired | Avtalendpoint, model, requests |
Parametermaterial_types | Avtaltext |
Parameterrepresentation | AvtalInbäddade requests[]; varje objekt har custom_id och body |
Parameterrequest_endpoint_profile | Avtal/v1/chat/completions |
Parameterfile_material | AvtalDen anropande klienten kan läsa in faktiska UTF-8 JSONL-data lokalt i requests[]. Inget uppladdningssyfte, input_file_id eller någon filreferens används. Om kundmaterial saknas eller är tomt avbryts förberedelserna före POST. |
Parameterserialization_order | Avtalendpoint, model, provider (om angivet), completion_window (om angivet), requests sist |
Parameteroptional_controls | Avtalprovider.only, provider.allow_fallbacks, completion_window |
Parameterschema_scope | AvtalFörfrågningskroppar för Text Chat Completions i det dokumenterade inbäddade Batch-formatet. |
Livscykel: asynchronous
GET /v1/batches/{operation_id} · Det faktiska response.id från det ursprungliga skapandesvaret; samma användare/nyckel/grupp
Priser
Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.
- Snabbt läge
- Ej angivet När snabbt läge är valt
- Flex-läge
- Ej angivet När läget flex är valt
- Högsta resonemangsnivå
- Ej angivet När den högsta resonemangsnivån använder standardjusteringen (default)
- Prissättning för explicit cache
- Inte aktiverat När explicit cache begärs
Ailoot-priser
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Kontexttoken, fler än | Kontexttoken, upp till och med | Avgift |
|---|---|---|---|---|
| KonfigurationGrundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0003 / 1K token Utdata · Utdatatoken $0.0009 / 1K token Indata · Cacheläsning $0.00003 / 1K token Indata · Skrivning till cache — / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 1 för förfrågans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.0003 / 1K token Utdata · Utdatatoken $0.0009 / 1K token Indata · Cacheläsning $0.00003 / 1K token Indata · Skrivning till cache — / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Exempelbegäranden
Ailoot Ultra · Batchkörning
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.
Ta emot och spara resultat
Ailoot Ultra · Batchkörning
JSON i inbäddade results[].response.body
GET /v1/batches/{operation_id}
Kontrollera jobbstatus
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
Behåll alla färdiga resultat
Behåll varje fullständigt returnerat svar, fil och innehållsdel.
Spara hela det ursprungliga statusobjektet i JSON, varje resultat/custom_id och hela svars- eller felkroppen. Spara slutförda results[] som JSONL utan filtrering.
Om det ursprungliga svaret behöver kontrolleras
Behåll det ursprungliga operations-ID:t. Vid 503 result_pending_check gäller X-Should-Retry:false; skicka aldrig om en ursprunglig batch med okänt utfall.
Svarsfält
| Fält | Typ |
|---|---|
Fältresults[].custom_id | Typstring |
Fältresults[].response.body.choices[].message.content | Typstring|null |
Fältresults[].error | Typobject|null |
Fältusage | Typobject|null |
Fältid | Typstring |
Fältmodel | Typstring |
Fältendpoint | Typstring |
Fältstatus | Typstring |
Fältrequest_counts | Typobject |
Fältresults[].id | Typstring |
Fältresults[].response.status_code | Typinteger |
Fältresults[].response.request_id | Typstring |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorFörfrågan har ett ogiltigt inbäddat format enligt dokumentationen, duplicerade nycklar eller en felaktig objektidentitet, eller står i konflikt med modellens konfigurerade funktioner. | Nästa stegRätta de angivna fälten innan du skickar en ny förfrågan. |
Svar401 · authentication_error | VillkorOgiltig API-nyckel. | Nästa stegAnvänd den behöriga Ailoot-nyckeln. |
Svar403 · permission_error | VillkorGrupp för batchkörning är inte tillgänglig. | Nästa stegKontrollera nyckelns/gruppens behörighet. |
Svar422 · invalid_request_error | VillkorBatchkörning debiteras från saldot; skapande via abonnemang avvisas. | Nästa stegAnvänd den behöriga gruppen med saldodebitering. |
Svar422 · price_unavailable | VillkorKostnaden för batchindata kan inte beräknas i förväg. | Nästa stegSpara svaret; använd det dokumenterade indataformatet för API-familjen. |
Svar402 · billing_error | VillkorReservation för batchkörning är inte tillgänglig. | Nästa stegSe till att villkoren för att godta förfrågan är uppfyllda innan du skickar en ny. |
Svar503 · price_unavailable | VillkorPriset för batchmetoden eller de inbyggda priserna är inte tillgängliga. | Nästa stegSpara svaret; ersätt inte priserna med andra. |
Svar503 · api_error | VillkorDen exakta leverantörsrutten är inte tillgänglig. | Nästa stegSpara svaret för att kunna reparera routningen. |
Svar503 · result_pending_check | VillkorDet ursprungliga resultatet behöver kontrolleras; X-Should-Retry:false. | Nästa stegBehåll det ursprungliga värdet för operation_id/id och läs av operationens status; upprepa aldrig det ursprungliga POST-anropet. |
Svar404 · not_found | VillkorOperationen för batchstatus saknas eller tillhör en annan identitet. | Nästa stegAnvänd exakt det ursprungliga id-värdet och samma användare/nyckel/grupp. |
Alias
Modellalias
Ailoot Ultra mistralai/codestral-2508:batch
Alias för metodsökvägar
Använd metodsökvägarna som visas ovan.
Relaterade anropar-ID:n
FAQ · Mistral: Codestral 2508 (batch)
- Vilka indata och resultat finns?
POST /v1/batches·mistralai/codestral-2508:batch:text→text- Vilka fält använder begäran?
POST /v1/batches·mistralai/codestral-2508:batch:endpoint,model,requests,completion_window,provider- Vilka gränser gäller?
POST /v1/batches·mistralai/codestral-2508:batch:requests.min_items:1