Mistral: Codestral 2508 (batch)
Codestral 2508 is het tekstmodel van Mistral AI voor codegeneratie en contextbewuste aanvulling. Het is geoptimaliseerd voor veelvoorkomende editortaken, waaronder fill-in-the-middle en wijzigingen over meerdere regels, met een door de maker opgegeven context van 128k en gedocumenteerde chat-, gestructureerde-uitvoer- en toolfuncties.
Over het model
Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.
Codestral 2508 is het programmeermodel van Mistral AI voor veelvoorkomende aanvullings- en generatietaken waarbij een korte responstijd belangrijk is. Het ontvangt broncode en tekstuele vereisten en retourneert tekst die een implementatie, aanvulling, correctie of uitleg kan bevatten. De genoemde 2508-editie richt zich op de huidige bewerkingscontext van de ontwikkelaar en is op zichzelf geen embeddingmodel of volledige repositoryagent.
Codeaanvulling en de 2508-update
De maker positioneert Codestral voor fill-in-the-middle-aanvulling en bewerking over meerdere regels. De release beschrijft verbeteringen in het aanvullingsgedrag, waaronder het terugdringen van ongeremde generatie, samen met verbeteringen in instructieopvolging en codetaken in chatmodus. Dit zijn wijzigingen aan deze Codestral-editie; functies voor informatieophaling en autonome agents in de omringende programmeeromgeving horen bij afzonderlijk benoemde componenten.
Bewaar voor een aanvullingstaak de relevante functiesignatuur, declaraties en aanroepcontext bij de cursorpositie. Geef aan of het gewenste resultaat alleen de ontbrekende code is of een volledig herziene functie. Een verzoek in editorstijl kan bijvoorbeeld vragen om een lusbody die het bestaande retourtype behoudt, dubbele waarden laat staan en de invoer van de aanroeper niet wijzigt. Het resultaat heeft dan een concrete invoegpositie en vastgelegd gedrag.
Voorbereiding voor fill-in-the-middle
In de FIM-interface van de maker bevat de prompt de tekst of code die moet worden aangevuld en bevat een optioneel suffix het materiaal na de opening. Wanneer beide zijn meegegeven, vult het model de ruimte ertussen op. Zonder suffix gaat het verder vanaf de prompt. Dat verschilt van een gewoon conversatieverzoek om een codewijziging met uitleg; elke voorbereidingsvorm bepaalt een ander uitvoercontract.
Een nuttige invoer voor het aanvullen van een opening bevat het begin van de functie, de code die na de invoeging moet volgen en relevante type- of helperdefinities. Behoud inspringing en scheidingstekens, zodat de teruggegeven tekst in het bestaande fragment past. Vraag alleen de ontbrekende body als dat is wat de taak nodig heeft, in plaats van het hele bestand te laten herschrijven. Een afzonderlijke chatvraag kan uitleggen waarom het aangevulde fragment aan de vereiste voldoet.
De officiële FIM-documentatie laat een budget voor uitvoertokens toe en vereist dat de prompt samen met dat budget binnen de modelcontext blijft. Ze documenteert ook stopsequenties en streaming van gegenereerde inhoud. Kies een aanvullingsworkflow wanneer het resultaat in de opening in de code moet passen, en een conversatieworkflow wanneer de taak code samen met uitleg vraagt.
Context en ondersteunende functies
De modelpagina vermeldt een contextvenster van 128k. Gebruik die context om broncode en declaraties te bewaren die de beoogde wijziging bepalen, terwijl de eigenlijke bewerkingstaak expliciet blijft. Geef voor een bugfixverzoek de getroffen functie, concrete falende invoer, het verwachte resultaat en de fout of het waargenomen gedrag mee. Vraag de voorgestelde correctie afzonderlijk van de uitleg en voorbeelden.
Naast chat en FIM vermeldt de pagina gestructureerde uitvoer, functieaanroepen, voorspelde uitvoer, documentvragen, antwoordprefixen en batchverwerking. Definieer voor een gestructureerde codereview velden zoals het betrokken symbool, de waargenomen afwijking, de voorgestelde wijziging en de aanname die nog verduidelijking vereist. De richtlijnen van Mistral voor gestructureerde uitvoer onderscheiden JSON-modus van een aangepast schema, waarbij het gewenste JSON-formaat in de prompt wordt vermeld.
Voorspelde uitvoer is bedoeld voor inhoud waarvan grote delen van het antwoord al bekend zijn. Ze kan worden gebruikt om een document of codebestand met een beperkte wijziging opnieuw te genereren en de rest te behouden. Geef de exacte wijziging op en het materiaal dat moet blijven staan. Een antwoordprefix levert daarentegen een bekend begin waarvan de generatie verdergaat; dat verschilt zowel van een volledig bekende body als van een FIM-suffix.
Een documentatievraag kan de documentverwerkingsworkflow van de maker gebruiken om tekst en structuur met OCR voor te bereiden vóór analyse door het taalmodel. Geef voor programmeermateriaal dat al als tekst beschikbaar is de relevante documentatiepassages mee en vraag welke voorwaarde de implementatie bepaalt. Houd elke geëxtraheerde vereiste verbonden met de bronsectie, zodat de gegenereerde code of uitleg gekoppeld blijft aan de aangeleverde specificatie.
Tools en praktische resultaten
Met functieaanroepen kan de toepassing beschreven bewerkingen en hun parameters aanbieden. Het model bereidt een aanroep voor, de toepassing voert die uit en het teruggegeven resultaat wordt context voor het volgende antwoord. Een codeassistent kan via die cyclus een opzoek- of rekenresultaat ontvangen, maar voor compilatie, testen of het toepassen van een voorgestelde wijziging blijft de omringende ontwikkelomgeving nodig.
Definieer voor een praktische correctie de publieke interface die compatibel moet blijven en vraag het herziene fragment, een beknopte uitleg en voorbeeldinvoer met verwachte uitvoer. Vermeld voor een gegenereerde functie de aanvaarde types en randgevallen. Geef voor een uitleg de te volgen invoer mee, zodat het antwoord een concreet uitvoeringspad aan de retourwaarde koppelt.
Codestral produceert tekst. Het neemt geen codezoekvectoren van Codestral Embed, repositoryautomatisering van Devstral of beeldgeneratie van een visueel model over. De specifieke modelpagina voor 2508 publiceert geen parameteraantal of afzonderlijke maximale antwoordlengte die van een andere release mag worden overgenomen. Behoud de genoemde editie, programmeercontext en het vereiste artefact bij het voorbereiden van een herhaalbare editor- of chatworkflow.
Ailoot Ultra · Batchverwerking POST /v1/batches mistralai/codestral-2508:batch
mistralai/codestral-2508:batch
mistralai/codestral-2508:batchAan de slag
Codestral 2508 is het tekstmodel van Mistral AI voor codegeneratie en contextbewuste aanvulling. Het is geoptimaliseerd voor veelvoorkomende editortaken, waaronder fill-in-the-middle en wijzigingen over meerdere regels, met een door de maker opgegeven context van 128k en gedocumenteerde chat-, gestructureerde-uitvoer- en toolfuncties.
- Toegestane invoer
- Tekst
- Resultaten
- Tekst
Beschikbaar in Ailoot · invoer en methoden
Ailoot Ultra · Batchverwerking POST /v1/batches
- Invoer
text- Uitvoer
text- Uitvoerformaat
- inline JSON uit results[].response.body
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldendpoint | Typestring | VereisteVereist | Waarden en limieten /v1/chat/completions | Standaard— |
Veldmodel | Typestring | VereisteVereist | Waarden en limieten mistralai/codestral-2508:batch | Standaard— |
Veldrequests | Typebatch_item[] | VereisteVereist | Waarden en limieten Minimumaantal items: 1 | Standaard— |
Veldrequests[].custom_id | Typestring | VereisteVereist | Waarden en limieten | Standaard— |
Veldrequests[].body.messages | Typemessage[] | VereisteVereist | Waarden en limieten | Standaard— |
Veldcompletion_window | Typestring | VereisteOptioneel | Waarden en limieten 24h | Standaard— |
Veldprovider | Typeobject|null | VereisteOptioneel | Waarden en limieten | Standaard— |
Veldrequests[].body.model | Typestring | VereisteOptioneel | Waarden en limieten mistralai/codestral-2508:batch, mistralai/codestral-2508 | Standaard— |
Veldprovider.only | Typestring[] | VereisteOptioneel | Waarden en limieten mistral | Standaard— |
Veldprovider.allow_fallbacks | Typeboolean|null | VereisteOptioneel | Waarden en limieten false, null | Standaard— |
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractendpoint, model, requests |
Parametermaterial_types | Contracttext |
Parameterrepresentation | Contractinline requests[]; elk item bevat custom_id en body |
Parameterrequest_endpoint_profile | Contract/v1/chat/completions |
Parameterfile_material | ContractDe aanroeper kan de daadwerkelijke UTF-8 JSONL lokaal in requests[] inlezen. Er wordt geen uploaddoel, input_file_id of bestandsverwijzing gebruikt. Ontbrekend of leeg klantmateriaal stopt de voorbereiding vóór POST. |
Parameterserialization_order | Contractendpoint, model, provider (indien opgegeven), completion_window (indien opgegeven), requests als laatste |
Parameteroptional_controls | Contractprovider.only, provider.allow_fallbacks, completion_window |
Parameterschema_scope | ContractAanvraagbodies voor tekst via Chat Completions in de gedocumenteerde inline Batch-structuur. |
Levenscyclus: asynchronous
GET /v1/batches/{operation_id} · daadwerkelijke response.id uit de oorspronkelijke aanmaakrespons; dezelfde gebruiker/sleutel/groep
Tarieven
Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.
- Snelle modus
- Niet opgegeven Wanneer de snelle modus geselecteerd is
- Flex-modus
- Niet opgegeven Wanneer de flex-modus geselecteerd is
- Maximale redeneerinspanning
- Niet opgegeven Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt
- Tarieven voor expliciete caching
- Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd
Ailoot-tarieven
Prijzen per configuratie
Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.
| Configuratie | Tariefstaffel | Contexttokens, meer dan | Contexttokens, tot en met | Kosten |
|---|---|---|---|---|
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Contexttokens, meer dan— | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens $0.0003 / 1K tokens Uitvoer · Uitvoertokens $0.0009 / 1K tokens Invoer · Cache lezen $0.00003 / 1K tokens Invoer · Cache schrijven — / 1K tokens Invoer · Cache schrijven, 1 uur — / 1K tokens |
| ConfiguratieAanvraaglengte · niveau 1 | Tariefstaffel— | Contexttokens, meer dan0 | Contexttokens, tot en metGeen bovengrens | Kosten Invoer · Invoertokens $0.0003 / 1K tokens Uitvoer · Uitvoertokens $0.0009 / 1K tokens Invoer · Cache lezen $0.00003 / 1K tokens Invoer · Cache schrijven — / 1K tokens Invoer · Cache schrijven, 1 uur — / 1K tokens |
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
Ailoot Ultra · Batchverwerking
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.
Resultaten ophalen en opslaan
Ailoot Ultra · Batchverwerking
inline JSON uit results[].response.body
GET /v1/batches/{operation_id}
Taakstatus controleren
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 voltooide resultaten bewaren
Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.
Bewaar de volledige oorspronkelijke status-JSON, elk resultaat/custom_id en de volledige respons- of foutbody. Sla voltooide results[] op als JSONL, zonder te filteren.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Bewaar de oorspronkelijke bewerkings-ID. 503 result_pending_check bevat X-Should-Retry:false; dien een oorspronkelijke batch met onbekende status nooit opnieuw in.
Antwoordvelden
| Veld | Type |
|---|---|
Veldresults[].custom_id | Typestring |
Veldresults[].response.body.choices[].message.content | Typestring|null |
Veldresults[].error | Typeobject|null |
Veldusage | Typeobject|null |
Veldid | Typestring |
Veldmodel | Typestring |
Veldendpoint | Typestring |
Veldstatus | Typestring |
Veldrequest_counts | Typeobject |
Veldresults[].id | Typestring |
Veldresults[].response.status_code | Typeinteger |
Veldresults[].response.request_id | Typestring |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeOngeldige gedocumenteerde inline structuur, dubbele sleutels, ongeldige itemidentiteit of conflict met de geconfigureerde modelmogelijkheden. | Volgende stapCorrigeer de aangegeven velden vóór elke nieuwe indiening. |
Antwoord401 · authentication_error | VoorwaardeOngeldige API-sleutel. | Volgende stapGebruik de geautoriseerde Ailoot-sleutel. |
Antwoord403 · permission_error | VoorwaardeBatch-groep niet beschikbaar. | Volgende stapControleer de toegangsrechten van de sleutel/groep. |
Antwoord422 · invalid_request_error | VoorwaardeBatch wordt via het saldo gefactureerd; aanmaken via een abonnement wordt geweigerd. | Volgende stapGebruik de geautoriseerde groep die via het saldo wordt gefactureerd. |
Antwoord422 · price_unavailable | VoorwaardeVoor de Batch-invoer kan geen prijsraming worden gemaakt. | Volgende stapBewaar de respons; gebruik de gedocumenteerde invoer voor deze familie. |
Antwoord402 · billing_error | VoorwaardeReservering voor Batch niet beschikbaar. | Volgende stapLos het toelatingsprobleem op vóór een nieuwe aanvraag. |
Antwoord503 · price_unavailable | VoorwaardePrijs voor de Batch-methode/native tarieven niet beschikbaar. | Volgende stapBewaar de respons; vervang de prijzen niet. |
Antwoord503 · api_error | VoorwaardeDe exacte leveranciersroute is niet beschikbaar. | Volgende stapBewaar de respons voor het herstel van de route. |
Antwoord503 · result_pending_check | VoorwaardeHet oorspronkelijke resultaat moet gecontroleerd worden; X-Should-Retry:false. | Volgende stapBewaar de oorspronkelijke operation_id/id en lees de status ervan uit; herhaal de oorspronkelijke POST nooit. |
Antwoord404 · not_found | VoorwaardeBewerking voor de Batch-status ontbreekt of behoort toe aan een andere identiteit. | Volgende stapGebruik de exacte oorspronkelijke id en dezelfde gebruiker/sleutel/groep. |
Aliasnamen
Modelaliasnamen
Ailoot Ultra mistralai/codestral-2508:batch
Aliasnamen voor methodepaden
Gebruik de hierboven getoonde methodepaden.
Gerelateerde aanroeper-ID’s
FAQ · Mistral: Codestral 2508 (batch)
- Welke invoer en resultaten zijn beschikbaar?
POST /v1/batches·mistralai/codestral-2508:batch:text→text- Welke velden gebruikt het verzoek?
POST /v1/batches·mistralai/codestral-2508:batch:endpoint,model,requests,completion_window,provider- Welke limieten gelden?
POST /v1/batches·mistralai/codestral-2508:batch:requests.min_items:1