Mistral: Codestral 2508 (batch)
Codestral 2508 adalah model teks dari Mistral AI untuk pembuatan kode dan pelengkapan yang memahami konteks. Model ini dioptimalkan untuk tugas editor yang sering dilakukan, termasuk fill-in-the-middle dan penyuntingan beberapa baris, dengan konteks 128k dari pembuatnya serta fitur percakapan, keluaran terstruktur, dan alat yang terdokumentasi.
Tentang model
Deskripsi ini mencakup kemampuan model. Masukan, keluaran, dan opsi yang tersedia di Ailoot tercantum di bawah untuk metode yang dipilih.
Codestral 2508 adalah model pemrograman dari Mistral AI untuk tugas pelengkapan dan generasi yang sering dilakukan serta peka terhadap latensi. Model ini menerima kode sumber dan persyaratan tertulis, lalu mengembalikan teks yang dapat memuat implementasi, pelengkapan, koreksi, atau penjelasan. Edisi bernama 2508 berfokus pada konteks penyuntingan pengembang saat ini, bukan sebagai model embedding atau agen repositori lengkap yang berdiri sendiri.
Pelengkapan kode dan pembaruan 2508
Pembuatnya menempatkan Codestral untuk pelengkapan fill-in-the-middle dan penyuntingan beberapa baris. Rilis ini menjelaskan peningkatan perilaku pelengkapan, termasuk mengurangi generasi yang terus berlanjut tanpa kendali, serta peningkatan kepatuhan terhadap instruksi dan tugas kode dalam mode percakapan. Ini adalah perubahan pada edisi Codestral ini; fitur pengambilan informasi dan agen otonom dalam perangkat pemrograman di sekelilingnya dimiliki oleh komponen terpisah yang bernama lain.
Untuk tugas pelengkapan, sertakan signature fungsi, deklarasi, dan konteks pemanggilan yang relevan bersama posisi kursor. Tentukan apakah hasil yang diinginkan hanya kode yang hilang atau fungsi lengkap yang telah direvisi. Permintaan bergaya editor dapat meminta isi perulangan yang mempertahankan tipe nilai kembalian yang ada, mempertahankan nilai duplikat, dan tidak mengubah masukan milik pemanggil. Hasilnya kemudian memiliki titik penyisipan konkret dan perilaku yang terdefinisi.
Persiapan fill-in-the-middle
Dalam antarmuka FIM dari pembuatnya, prompt menyediakan teks atau kode yang harus dilengkapi, sedangkan sufiks opsional menyediakan materi setelah celah. Jika keduanya diberikan, model mengisi ruang di antaranya. Tanpa sufiks, model melanjutkan dari prompt. Ini berbeda dari permintaan percakapan biasa yang meminta perubahan kode dan penjelasan; setiap cara persiapan menetapkan kontrak keluaran yang berbeda.
Masukan pelengkapan celah yang berguna mencakup awal fungsi, kode yang harus mengikuti sisipan, serta definisi tipe atau fungsi bantu yang relevan. Pertahankan indentasi dan pembatas agar teks yang dikembalikan dapat menyatu dengan fragmen yang ada. Jika tugas hanya memerlukan isi yang hilang, minta isi tersebut alih-alih penulisan ulang seluruh berkas. Pertanyaan percakapan terpisah dapat menjelaskan mengapa fragmen yang telah dilengkapi memenuhi persyaratan.
Dokumentasi FIM resmi memperbolehkan anggaran token keluaran dan mewajibkan prompt beserta anggaran tersebut tetap berada dalam konteks model. Dokumentasi itu juga menjelaskan urutan penghenti dan streaming konten yang dihasilkan. Pilih alur kerja pelengkapan ketika hasil harus sesuai dengan celah kode, dan alur kerja percakapan ketika tugas meminta kode beserta penjelasannya.
Konteks dan fitur pendukung
Halaman model menyebut jendela konteks 128k. Gunakan konteks untuk mempertahankan sumber dan deklarasi yang menentukan perubahan yang dimaksud, sambil memastikan tugas penyuntingan tetap eksplisit. Untuk permintaan perbaikan bug, berikan fungsi yang terdampak, masukan konkret yang gagal, hasil yang diharapkan, serta kesalahan atau perilaku yang diamati. Minta usulan koreksi secara terpisah dari penjelasan dan contohnya.
Halaman itu juga mencantumkan keluaran terstruktur, pemanggilan fungsi, predicted outputs, tanya jawab dokumen, prefiks respons, dan pemrosesan batch di samping kemampuan percakapan dan FIM. Untuk hasil tinjauan kode terstruktur, tetapkan bidang seperti simbol yang terdampak, ketidaksesuaian yang diamati, perubahan yang diusulkan, dan asumsi yang masih memerlukan klarifikasi. Panduan keluaran terstruktur Mistral membedakan mode JSON dari skema khusus, dengan format JSON yang diinginkan dinyatakan dalam prompt.
Predicted outputs ditujukan untuk konten yang sebagian besar jawabannya sudah diketahui. Fitur ini dapat digunakan saat menghasilkan ulang dokumen atau berkas kode dengan penyuntingan terbatas sambil mempertahankan konten lainnya. Tentukan perubahan persis dan materi yang harus tetap sama. Sebaliknya, prefiks respons menyediakan awal yang sudah diketahui untuk dilanjutkan oleh generasi; ini berbeda dari isi lengkap yang sudah diketahui maupun sufiks FIM.
Pertanyaan dokumentasi dapat menggunakan alur pemrosesan dokumen dari pembuatnya untuk menyiapkan teks dan struktur dengan OCR sebelum analisis model bahasa. Untuk materi pemrograman yang sudah tersedia sebagai teks, berikan bagian dokumentasi yang relevan dan tanyakan kondisi mana yang mengatur implementasinya. Jaga setiap persyaratan yang diekstrak tetap terkait dengan bagian sumbernya agar kode atau penjelasan yang dihasilkan tetap terhubung dengan spesifikasi yang diberikan.
Alat dan hasil praktis
Pemanggilan fungsi memungkinkan aplikasi menyediakan operasi yang dijelaskan beserta parameternya. Model menyiapkan pemanggilan, aplikasi menjalankannya, dan hasil yang dikembalikan menjadi konteks untuk jawaban berikutnya. Asisten pemrograman dapat menerima hasil pencarian atau perhitungan melalui siklus tersebut, tetapi kompilasi, pengujian, atau penerapan perubahan yang diusulkan tetap memerlukan lingkungan pengembangan di sekelilingnya.
Untuk koreksi praktis, tetapkan antarmuka publik yang harus tetap kompatibel dan minta fragmen yang telah direvisi, penjelasan ringkas, serta contoh masukan beserta keluaran yang diharapkan. Untuk fungsi yang dihasilkan, nyatakan tipe yang diterima dan kondisi batasnya. Untuk penjelasan, berikan masukan yang harus ditelusuri agar jawaban menghubungkan jalur eksekusi konkret dengan nilai yang dikembalikan.
Codestral menghasilkan teks. Model ini tidak mewarisi vektor pencarian kode dari Codestral Embed, otomasi repositori dari Devstral, atau pembuatan gambar dari model visual. Halaman khusus model 2508 tidak memublikasikan jumlah parameter atau panjang jawaban maksimum mandiri yang dapat dipinjam dari rilis lain. Pertahankan edisi bernama, konteks pemrograman, dan artefak yang diwajibkan saat menyiapkan alur editor atau percakapan yang dapat diulang.
Ailoot Ultra · Batch POST /v1/batches mistralai/codestral-2508:batch
mistralai/codestral-2508:batch
mistralai/codestral-2508:batchMulai
Codestral 2508 adalah model teks dari Mistral AI untuk pembuatan kode dan pelengkapan yang memahami konteks. Model ini dioptimalkan untuk tugas editor yang sering dilakukan, termasuk fill-in-the-middle dan penyuntingan beberapa baris, dengan konteks 128k dari pembuatnya serta fitur percakapan, keluaran terstruktur, dan alat yang terdokumentasi.
- Masukan yang diterima
- Teks
- Hasil
- Teks
Tersedia di Ailoot · masukan & metode
Ailoot Ultra · Batch POST /v1/batches
- Masukan
text- Keluaran
text- Format keluaran
- JSON inline pada results[].response.body
| Kolom | Jenis | Persyaratan | Nilai & batasan | Bawaan |
|---|---|---|---|---|
Kolomendpoint | Jenisstring | PersyaratanWajib | Nilai & batasan /v1/chat/completions | Bawaan— |
Kolommodel | Jenisstring | PersyaratanWajib | Nilai & batasan mistralai/codestral-2508:batch | Bawaan— |
Kolomrequests | Jenisbatch_item[] | PersyaratanWajib | Nilai & batasan Item minimum: 1 | Bawaan— |
Kolomrequests[].custom_id | Jenisstring | PersyaratanWajib | Nilai & batasan | Bawaan— |
Kolomrequests[].body.messages | Jenismessage[] | PersyaratanWajib | Nilai & batasan | Bawaan— |
Kolomcompletion_window | Jenisstring | PersyaratanOpsional | Nilai & batasan 24h | Bawaan— |
Kolomprovider | Jenisobject|null | PersyaratanOpsional | Nilai & batasan | Bawaan— |
Kolomrequests[].body.model | Jenisstring | PersyaratanOpsional | Nilai & batasan mistralai/codestral-2508:batch, mistralai/codestral-2508 | Bawaan— |
Kolomprovider.only | Jenisstring[] | PersyaratanOpsional | Nilai & batasan mistral | Bawaan— |
Kolomprovider.allow_fallbacks | Jenisboolean|null | PersyaratanOpsional | Nilai & batasan false, null | Bawaan— |
Parameter metode dan siklus hidup
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakendpoint, model, requests |
Parametermaterial_types | Kontraktext |
Parameterrepresentation | Kontrakrequests[] inline; setiap item memiliki custom_id dan body |
Parameterrequest_endpoint_profile | Kontrak/v1/chat/completions |
Parameterfile_material | KontrakPemanggil dapat membaca JSONL UTF-8 aktual secara lokal ke dalam requests[]. Tidak menggunakan purpose unggahan, input_file_id, atau referensi file. Materi pelanggan yang tidak ada atau kosong menghentikan persiapan sebelum POST. |
Parameterserialization_order | Kontrakendpoint, model, provider (jika disertakan), completion_window (jika disertakan), requests paling akhir |
Parameteroptional_controls | Kontrakprovider.only, provider.allow_fallbacks, completion_window |
Parameterschema_scope | Kontrakbody teks Chat Completions dalam envelope Batch inline yang didokumentasikan. |
Siklus hidup: asynchronous
GET /v1/batches/{operation_id} · response.id aktual dari operasi create awal; user/key/group yang sama
Paket
Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.
- Mode Fast
- Tidak ditentukan Saat mode fast dipilih
- Mode Flex
- Tidak ditentukan Saat mode flex dipilih
- Upaya penalaran maksimum
- Tidak ditentukan Saat upaya penalaran maksimum menggunakan penyesuaian default
- Harga cache eksplisit
- Tidak diaktifkan Saat cache eksplisit diminta
Tarif Ailoot
Harga menurut konfigurasi
Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.
| Konfigurasi | Jadwal tarif | Token konteks, lebih dari | Token konteks, hingga dan termasuk | Biaya |
|---|---|---|---|---|
| KonfigurasiTarif dasar token | Jadwal tarifTarif dasar | Token konteks, lebih dari— | Token konteks, hingga dan termasukTanpa batas atas | Biaya Masukan · Token masukan $0.0003 / 1K token Keluaran · Token keluaran $0.0009 / 1K token Masukan · Pembacaan cache $0.00003 / 1K token Masukan · Penulisan cache — / 1K token Masukan · Penulisan cache, 1 jam — / 1K token |
| KonfigurasiPanjang permintaan · tingkat 1 | Jadwal tarif— | Token konteks, lebih dari0 | Token konteks, hingga dan termasukTanpa batas atas | Biaya Masukan · Token masukan $0.0003 / 1K token Keluaran · Token keluaran $0.0009 / 1K token Masukan · Pembacaan cache $0.00003 / 1K token Masukan · Penulisan cache — / 1K token Masukan · Penulisan cache, 1 jam — / 1K token |
Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →
Contoh permintaan
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.
Terima dan simpan hasil
Ailoot Ultra · Batch
JSON inline pada results[].response.body
GET /v1/batches/{operation_id}
Periksa status tugas
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
Simpan semua hasil yang selesai
Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.
Pertahankan JSON status asli secara lengkap, setiap result/custom_id, serta body response atau error yang lengkap. Simpan results[] yang telah selesai sebagai JSONL tanpa penyaringan.
Jika respons asli perlu diperiksa
Pertahankan ID operasi asli. 503 result_pending_check memiliki X-Should-Retry:false; jangan pernah kirim ulang batch asli yang statusnya tidak diketahui.
Kolom respons
| Kolom | Jenis |
|---|---|
Kolomresults[].custom_id | Jenisstring |
Kolomresults[].response.body.choices[].message.content | Jenisstring|null |
Kolomresults[].error | Jenisobject|null |
Kolomusage | Jenisobject|null |
Kolomid | Jenisstring |
Kolommodel | Jenisstring |
Kolomendpoint | Jenisstring |
Kolomstatus | Jenisstring |
Kolomrequest_counts | Jenisobject |
Kolomresults[].id | Jenisstring |
Kolomresults[].response.status_code | Jenisinteger |
Kolomresults[].response.request_id | Jenisstring |
Kesalahan dan langkah berikutnya
| Respons | Kondisi | Langkah berikutnya |
|---|---|---|
Respons400 · invalid_request_error | KondisiEnvelope inline yang didokumentasikan tidak valid, ada kunci duplikat, atau terdapat konflik pada identitas item atau kemampuan model yang dikonfigurasi. | Langkah berikutnyaPerbaiki kolom yang ditunjukkan sebelum pengiriman baru apa pun. |
Respons401 · authentication_error | KondisiKunci API tidak valid. | Langkah berikutnyaGunakan kunci Ailoot yang berizin. |
Respons403 · permission_error | KondisiGrup Batch tidak tersedia. | Langkah berikutnyaPeriksa hak akses key/group. |
Respons422 · invalid_request_error | KondisiBatch menggunakan penagihan dari saldo; pembuatan dengan langganan ditolak. | Langkah berikutnyaGunakan grup berizin yang ditagih dari saldo. |
Respons422 · price_unavailable | KondisiPenawaran harga untuk input Batch tidak dapat dibuat. | Langkah berikutnyaSimpan respons; gunakan input keluarga API yang didokumentasikan. |
Respons402 · billing_error | KondisiCadangan Batch tidak tersedia. | Langkah berikutnyaSelesaikan kendala penerimaan sebelum mengirim permintaan baru. |
Respons503 · price_unavailable | KondisiHarga metode Batch/tarif native tidak tersedia. | Langkah berikutnyaSimpan respons; jangan mengganti harga. |
Respons503 · api_error | KondisiRute pemasok yang tepat tidak tersedia. | Langkah berikutnyaSimpan respons untuk perbaikan rute. |
Respons503 · result_pending_check | KondisiHasil asli perlu diperiksa; X-Should-Retry:false. | Langkah berikutnyaSimpan operation_id/id asli dan baca statusnya; jangan pernah mengulangi POST asli. |
Respons404 · not_found | KondisiOperasi status Batch tidak ada atau dimiliki oleh identitas lain. | Langkah berikutnyaGunakan id asli yang persis sama dan user/key/group yang sama. |
Alias
Alias model
Ailoot Ultra mistralai/codestral-2508:batch
Alias jalur metode
Gunakan jalur metode yang ditampilkan di atas.
ID pemanggil terkait
FAQ · Mistral: Codestral 2508 (batch)
- Input dan hasil apa yang tersedia?
POST /v1/batches·mistralai/codestral-2508:batch:text→text- Kolom apa yang digunakan permintaan?
POST /v1/batches·mistralai/codestral-2508:batch:endpoint,model,requests,completion_window,provider- Batasan apa yang berlaku?
POST /v1/batches·mistralai/codestral-2508:batch:requests.min_items:1