Mistral: Codestral 2508 (batch)
Codestral 2508 è il modello testuale di Mistral AI per la generazione di codice e il completamento consapevole del contesto. È ottimizzato per compiti frequenti nell’editor, inclusi fill-in-the-middle e modifiche su più righe, con un contesto di 128k dichiarato dal produttore e funzionalità documentate di chat, output strutturati e strumenti.
Informazioni sul modello
Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.
Codestral 2508 è il modello di programmazione di Mistral AI per compiti frequenti di completamento e generazione sensibili alla latenza. Riceve codice sorgente e requisiti testuali e restituisce testo che può contenere un’implementazione, un completamento, una correzione o una spiegazione. L’edizione denominata 2508 si concentra sul contesto di modifica corrente dello sviluppatore; non è un modello di embedding né, da sola, un agente completo per repository.
Completamento del codice e aggiornamento 2508
Il produttore propone Codestral per il completamento fill-in-the-middle e le modifiche su più righe. Il rilascio descrive miglioramenti nel comportamento di completamento, inclusa la riduzione della generazione incontrollata, insieme a miglioramenti nel seguire istruzioni e nei compiti di programmazione in modalità chat. Queste modifiche riguardano questa edizione di Codestral; le funzionalità di recupero delle informazioni e di agente autonomo dello stack di programmazione circostante appartengono a componenti con nomi distinti.
Per un compito di completamento, mantieni la firma della funzione, le dichiarazioni e il contesto di chiamata pertinenti insieme alla posizione del cursore. Specifica se il risultato desiderato consiste soltanto nel codice mancante o in una funzione interamente revisionata. Una richiesta nello stile di un editor può chiedere il corpo di un ciclo che preservi il tipo di ritorno esistente, mantenga i valori duplicati e non modifichi l’input del chiamante. Il risultato avrà così un punto di inserimento concreto e un comportamento definito.
Preparazione del fill-in-the-middle
Nell’interfaccia FIM del produttore, il prompt fornisce testo o codice da completare e un suffisso facoltativo fornisce il materiale successivo allo spazio vuoto. Se vengono forniti entrambi, il modello riempie lo spazio tra i due. Senza suffisso, continua dal prompt. Questo differisce da una normale richiesta conversazionale che domanda una modifica del codice e una spiegazione; ogni modalità di preparazione definisce un diverso contratto di output.
Un input utile per completare una lacuna include l’inizio della funzione, il codice che deve seguire l’inserimento e le eventuali definizioni pertinenti di tipi o funzioni ausiliarie. Conserva indentazione e delimitatori, affinché il testo restituito possa inserirsi nel frammento esistente. Se serve soltanto il corpo mancante, chiedi quel corpo anziché la riscrittura dell’intero file. Una domanda separata in chat può spiegare perché il frammento completato soddisfa il requisito.
La documentazione FIM ufficiale consente un budget di token di output e richiede che il prompt più tale budget rientrino nel contesto del modello. Documenta inoltre le sequenze di arresto e lo streaming del contenuto generato. Scegli un flusso di completamento quando il risultato deve inserirsi nella lacuna del codice e un flusso conversazionale quando il compito richiede codice insieme a una spiegazione.
Contesto e funzionalità di supporto
La pagina del modello indica una finestra di contesto di 128k. Usa il contesto per conservare i sorgenti e le dichiarazioni che determinano la modifica prevista, mantenendo esplicito il compito di modifica effettivo. Per una correzione di bug, fornisci la funzione interessata, un input concreto che provoca l’errore, il risultato atteso e l’errore o il comportamento osservato. Chiedi la correzione proposta separatamente dalla spiegazione e dagli esempi.
La pagina elenca anche output strutturati, chiamate di funzione, output predetti, risposte a domande sui documenti, prefissi di risposta ed elaborazione batch, oltre alle capacità di chat e FIM. Per un risultato strutturato di revisione del codice, definisci campi come il simbolo interessato, la discrepanza osservata, la modifica proposta e l’ipotesi ancora da chiarire. Le indicazioni di Mistral sugli output strutturati distinguono la modalità JSON da uno schema personalizzato, con il formato JSON desiderato specificato nel prompt.
Gli output predetti sono destinati a contenuti in cui parti sostanziali della risposta sono già note. Possono essere usati quando si rigenera un documento o un file di codice con una modifica limitata, mantenendo il contenuto restante. Specifica la modifica esatta e il materiale che deve rimanere. Un prefisso di risposta fornisce invece un inizio noto da cui la generazione continua; è distinto sia da un corpo completo noto sia da un suffisso FIM.
Una domanda sulla documentazione può usare il flusso di elaborazione documentale del produttore per preparare testo e struttura mediante OCR prima dell’analisi del modello linguistico. Per materiale di programmazione già disponibile come testo, fornisci i brani pertinenti della documentazione e chiedi quale condizione governa l’implementazione. Mantieni ogni requisito estratto associato alla sua sezione sorgente, affinché il codice o la spiegazione generati restino collegati alla specifica fornita.
Strumenti e risultati pratici
Le chiamate di funzione permettono all’applicazione di fornire operazioni descritte e i relativi parametri. Il modello prepara una chiamata, l’applicazione la esegue e il risultato restituito diventa contesto per la risposta successiva. Un assistente di programmazione può ricevere un risultato di ricerca o di calcolo attraverso questo ciclo, ma compilare, testare o applicare una modifica proposta richiede comunque l’ambiente di sviluppo circostante.
Per una correzione pratica, definisci l’interfaccia pubblica che deve restare compatibile e chiedi il frammento revisionato, una spiegazione concisa ed esempi di input con output attesi. Per una funzione generata, specifica i tipi accettati e le condizioni limite. Per una spiegazione, fornisci l’input di cui seguire l’esecuzione, affinché la risposta colleghi un percorso di esecuzione concreto al valore restituito.
Codestral produce testo. Non eredita vettori per la ricerca nel codice da Codestral Embed, automazione dei repository da Devstral o generazione di immagini da un modello visivo. La pagina esatta del modello 2508 non pubblica un numero di parametri o una lunghezza massima autonoma della risposta da prendere in prestito da un altro rilascio. Conserva l’edizione indicata, il contesto di programmazione e l’elaborato richiesto quando prepari un flusso ripetibile nell’editor o in chat.
Ailoot Ultra · Batch POST /v1/batches mistralai/codestral-2508:batch
mistralai/codestral-2508:batch
mistralai/codestral-2508:batchIntroduzione
Codestral 2508 è il modello testuale di Mistral AI per la generazione di codice e il completamento consapevole del contesto. È ottimizzato per compiti frequenti nell’editor, inclusi fill-in-the-middle e modifiche su più righe, con un contesto di 128k dichiarato dal produttore e funzionalità documentate di chat, output strutturati e strumenti.
- Input accettati
- Testo
- Risultati
- Testo
Disponibile in Ailoot · input e metodi
Ailoot Ultra · Batch POST /v1/batches
- Tipi di input
text- Tipi di output
text- Formato di output
- JSON inline di results[].response.body
| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
|---|---|---|---|---|
Campoendpoint | Tipostring | RequisitoObbligatorio | Valori e limiti /v1/chat/completions | Predefinito— |
Campomodel | Tipostring | RequisitoObbligatorio | Valori e limiti mistralai/codestral-2508:batch | Predefinito— |
Camporequests | Tipobatch_item[] | RequisitoObbligatorio | Valori e limiti Numero minimo di elementi: 1 | Predefinito— |
Camporequests[].custom_id | Tipostring | RequisitoObbligatorio | Valori e limiti | Predefinito— |
Camporequests[].body.messages | Tipomessage[] | RequisitoObbligatorio | Valori e limiti | Predefinito— |
Campocompletion_window | Tipostring | RequisitoFacoltativo | Valori e limiti 24h | Predefinito— |
Campoprovider | Tipoobject|null | RequisitoFacoltativo | Valori e limiti | Predefinito— |
Camporequests[].body.model | Tipostring | RequisitoFacoltativo | Valori e limiti mistralai/codestral-2508:batch, mistralai/codestral-2508 | Predefinito— |
Campoprovider.only | Tipostring[] | RequisitoFacoltativo | Valori e limiti mistral | Predefinito— |
Campoprovider.allow_fallbacks | Tipoboolean|null | RequisitoFacoltativo | Valori e limiti false, null | Predefinito— |
Parametri e ciclo di vita del metodo
| Parametro | Contratto |
|---|---|
Parametrocontent_type | Contrattoapplication/json |
Parametrorequired | Contrattoendpoint, model, requests |
Parametromaterial_types | Contrattotext |
Parametrorepresentation | Contrattorequests[] inline; ogni elemento contiene custom_id e body |
Parametrorequest_endpoint_profile | Contratto/v1/chat/completions |
Parametrofile_material | ContrattoIl chiamante può leggere localmente i dati JSONL effettivi in UTF-8 e inserirli in requests[]. Non viene usato alcun purpose di caricamento, input_file_id o riferimento a file. Il materiale del cliente mancante o vuoto interrompe la preparazione prima del POST. |
Parametroserialization_order | Contrattoendpoint, model, provider (se fornito), completion_window (se fornito), requests per ultimo |
Parametrooptional_controls | Contrattoprovider.only, provider.allow_fallbacks, completion_window |
Parametroschema_scope | ContrattoCorpi delle richieste Chat Completions per testo nella struttura inline Batch documentata. |
Ciclo di vita: asynchronous
GET /v1/batches/{operation_id} · response.id effettivo della risposta alla creazione originale; stesso utente/chiave/gruppo
Tariffe
Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.
- Modalità rapida
- Non specificato Quando è selezionata la modalità rapida
- Modalità flex
- Non specificato Quando è selezionata la modalità flex
- Sforzo massimo di ragionamento
- Non specificato Quando lo sforzo massimo di ragionamento usa l'adeguamento predefinito (default)
- Tariffe della cache esplicita
- Non abilitato Quando viene richiesta una cache esplicita
Tariffe Ailoot
Prezzi per configurazione
Associa ogni costo alle condizioni indicate. Usa una sola tariffa per ogni insieme di configurazioni alternative.
| Configurazione | Listino delle tariffe | Token di contesto, più di | Token di contesto, fino al limite incluso | Costo |
|---|---|---|---|---|
| ConfigurazioneTariffe di base dei token | Listino delle tariffeTariffa base | Token di contesto, più di— | Token di contesto, fino al limite inclusoNessun limite superiore | Costo Input · Token in input $0.0003 / 1K token Output · Token in output $0.0009 / 1K token Input · Lettura dalla cache $0.00003 / 1K token Input · Scrittura nella cache — / 1K token Input · Scrittura nella cache, 1 ora — / 1K token |
| ConfigurazioneFascia 1 di lunghezza della richiesta | Listino delle tariffe— | Token di contesto, più di0 | Token di contesto, fino al limite inclusoNessun limite superiore | Costo Input · Token in input $0.0003 / 1K token Output · Token in output $0.0009 / 1K token Input · Lettura dalla cache $0.00003 / 1K token Input · Scrittura nella cache — / 1K token Input · Scrittura nella cache, 1 ora — / 1K token |
Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. Come funzionano la prenotazione e l’addebito finale →
Esempi di richieste
Ailoot Ultra · Batch
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.
Ricevi e salva i risultati
Ailoot Ultra · Batch
JSON inline di results[].response.body
GET /v1/batches/{operation_id}
Verifica lo stato dell’attività
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
Conserva tutti i risultati completati
Conserva ogni risposta, file e parte di contenuto restituiti per intero.
Conserva il JSON completo dello stato originale, ogni result/custom_id e il corpo completo della risposta o dell'errore. Salva i results[] completati come JSONL senza filtrarli.
Se occorre verificare la risposta originale
Conserva l'ID dell'operazione originale. La risposta 503 result_pending_check contiene X-Should-Retry:false; non reinviare mai un batch originale il cui esito è sconosciuto.
Campi della risposta
| Campo | Tipo |
|---|---|
Camporesults[].custom_id | Tipostring |
Camporesults[].response.body.choices[].message.content | Tipostring|null |
Camporesults[].error | Tipoobject|null |
Campousage | Tipoobject|null |
Campoid | Tipostring |
Campomodel | Tipostring |
Campoendpoint | Tipostring |
Campostatus | Tipostring |
Camporequest_counts | Tipoobject |
Camporesults[].id | Tipostring |
Camporesults[].response.status_code | Tipointeger |
Camporesults[].response.request_id | Tipostring |
Errori e passaggi successivi
| Risposta | Condizione | Passaggio successivo |
|---|---|---|
Risposta400 · invalid_request_error | CondizioneStruttura inline documentata non valida, chiavi duplicate, identità degli elementi non valida o conflitto con le capacità configurate del modello. | Passaggio successivoCorreggi i campi indicati prima di qualsiasi nuovo invio. |
Risposta401 · authentication_error | CondizioneChiave API non valida. | Passaggio successivoUsa la chiave Ailoot autorizzata. |
Risposta403 · permission_error | CondizioneGruppo Batch non disponibile. | Passaggio successivoVerifica le autorizzazioni della chiave e del gruppo. |
Risposta422 · invalid_request_error | CondizioneBatch usa l'addebito sul saldo; la creazione tramite abbonamento viene rifiutata. | Passaggio successivoUsa il gruppo autorizzato con addebito sul saldo. |
Risposta422 · price_unavailable | CondizioneNon è possibile formulare un preventivo per l'input Batch. | Passaggio successivoConserva la risposta; usa l'input documentato per la famiglia. |
Risposta402 · billing_error | CondizioneRiserva Batch non disponibile. | Passaggio successivoRisolvi le condizioni di ammissione prima di una nuova richiesta. |
Risposta503 · price_unavailable | CondizionePrezzo del metodo Batch o tariffe native non disponibili. | Passaggio successivoConserva la risposta; non sostituire i prezzi. |
Risposta503 · api_error | CondizioneLa rotta esatta del fornitore non è disponibile. | Passaggio successivoConserva la risposta per la riparazione della rotta. |
Risposta503 · result_pending_check | CondizioneIl risultato originale richiede una verifica; X-Should-Retry:false. | Passaggio successivoConserva operation_id/id originale e leggine lo stato; non ripetere mai il POST originale. |
Risposta404 · not_found | CondizioneL'operazione di stato Batch è assente o appartiene a un'altra identità. | Passaggio successivoUsa l'id originale esatto e lo stesso utente/chiave/gruppo. |
Alias
Alias del modello
Ailoot Ultra mistralai/codestral-2508:batch
Alias dei percorsi dei metodi
Usa i percorsi dei metodi indicati sopra.
ID di chiamata correlati
FAQ · Mistral: Codestral 2508 (batch)
- Quali input e risultati sono disponibili?
POST /v1/batches·mistralai/codestral-2508:batch:text→text- Quali campi usa la richiesta?
POST /v1/batches·mistralai/codestral-2508:batch:endpoint,model,requests,completion_window,provider- Quali limiti si applicano?
POST /v1/batches·mistralai/codestral-2508:batch:requests.min_items:1