Source: https://ailoot.ai/models/sl/mistralai-codestral-2508/
Canonical: https://ailoot.ai/models/sl/mistralai-codestral-2508/
Language: sl

# Mistral: Codestral 2508

[Markdown](https://ailoot.ai/models/sl/mistralai-codestral-2508/index.md) · [JSON](https://ailoot.ai/models/sl/mistralai-codestral-2508/facts.json)

## [Mistral: Codestral 2508](https://ailoot.ai/models/sl/mistralai-codestral-2508/)

Codestral 2508 je besedilni model podjetja Mistral AI za ustvarjanje kode in dopolnjevanje z upoštevanjem konteksta. Optimiziran je za pogoste naloge v urejevalniku, vključno z dopolnjevanjem vrzeli v kodi in večvrstičnimi spremembami, s kontekstom 128k po navedbah proizvajalca ter dokumentiranimi funkcijami za klepet, strukturiran izhod in orodja.

- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `mistralai/codestral-2508`](https://ailoot.ai/models/sl/mistralai-codestral-2508/#method-0)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `mistralai/codestral-2508`](https://ailoot.ai/models/sl/mistralai-codestral-2508/#method-1)

O modelu

Ta opis zajema zmožnosti modela. Vhodi, izhodi in možnosti, ki so na voljo v Ailoot, so spodaj navedeni za izbrano metodo.

Codestral 2508 je programski model podjetja Mistral AI za pogoste naloge dopolnjevanja in ustvarjanja, pri katerih je pomembna zakasnitev. Prejme izvorno kodo in besedilne zahteve ter vrne besedilo, ki lahko vsebuje implementacijo, dopolnitev, popravek ali razlago. Navedena različica 2508 se osredotoča na razvijalčev trenutni kontekst urejanja; sama po sebi ni model za vektorske vložitve ali celovit agent za repozitorij.

Dopolnjevanje kode in posodobitev 2508

Proizvajalec Codestral namenja dopolnjevanju vrzeli v kodi in večvrstičnemu urejanju. Ob izdaji opisuje izboljšave pri dopolnjevanju, vključno z zmanjšanjem nenadzorovanega nadaljevanja ustvarjanja, ter izboljšave sledenja navodilom in programskih nalog v načinu klepeta. Te spremembe veljajo za to različico Codestral; funkcije iskanja gradiva in avtonomnega agenta v okoliškem programskem sklopu pripadajo posebej poimenovanim komponentam.

Pri nalogi dopolnjevanja ob mestu kazalca ohranite ustrezen podpis funkcije, deklaracije in kontekst klicanja. Določite, ali je želeni rezultat samo manjkajoča koda ali celotna popravljena funkcija. Zahteva v slogu urejevalnika lahko zahteva telo zanke, ki ohrani obstoječi tip vrnjene vrednosti, ponovljene vrednosti in nespremenjen vhod klicatelja. Rezultat ima tako konkretno mesto vstavljanja in določeno vedenje.

Priprava dopolnjevanja vrzeli

V proizvajalčevem vmesniku FIM poziv poda besedilo ali kodo za dopolnitev, neobvezna pripona pa gradivo za vrzeljo. Če sta podana oba, model zapolni prostor med njima. Brez pripone nadaljuje od poziva. To se razlikuje od običajne pogovorne zahteve, ki zahteva spremembo kode in razlago; vsak način priprave določa drugačen dogovor o izhodu.

Uporaben vhod za dopolnjevanje vrzeli vključuje začetek funkcije, kodo, ki mora slediti vstavljenemu delu, in vse ustrezne definicije tipov ali pomožnih funkcij. Ohranite zamike in ločila, da se vrnjeno besedilo prilega obstoječemu odseku. Če naloga potrebuje le manjkajoče telo, zahtevajte to telo namesto ponovnega pisanja celotne datoteke. Ločeno vprašanje v klepetu lahko pojasni, zakaj dopolnjeni odsek izpolnjuje zahtevo.

Uradna dokumentacija FIM dovoljuje proračun izhodnih žetonov in zahteva, da poziv skupaj s tem proračunom ostane znotraj konteksta modela. Dokumentira tudi ustavitvena zaporedja in pretočno posredovanje ustvarjene vsebine. Kadar se mora rezultat prilegati vrzeli v kodi, izberite postopek dopolnjevanja; kadar naloga zahteva kodo skupaj z razlago, pa pogovorni postopek.

Kontekst in podporne funkcije

Stran modela navaja kontekstno okno 128k. Kontekst uporabite za ohranitev izvorne kode in deklaracij, ki določajo predvideno spremembo, sama naloga urejanja pa naj bo izrecna. Pri zahtevi za odpravo napake podajte prizadeto funkcijo, konkreten vhod, ki povzroča napako, pričakovani rezultat ter napako ali opaženo vedenje. Predlagani popravek zahtevajte ločeno od njegove razlage in primerov.

Stran poleg klepeta in FIM navaja tudi strukturirane izhode, klicanje funkcij, predvidene izhode, odgovarjanje na vprašanja o dokumentih, predpone odgovorov in paketno obdelavo. Za strukturiran pregled kode opredelite polja, kot so prizadeti simbol, opaženo neskladje, predlagana sprememba in predpostavka, ki jo je še treba razjasniti. Mistralove smernice za strukturiran izhod razlikujejo način JSON od sheme po meri, pri čemer je želena oblika JSON navedena v pozivu.

Predvideni izhodi so namenjeni vsebinam, pri katerih so veliki deli odgovora že znani. Uporabiti jih je mogoče pri ponovnem ustvarjanju dokumenta ali datoteke s kodo z omejeno spremembo in ohranitvijo preostale vsebine. Navedite natančno spremembo in gradivo, ki mora ostati. Predpona odgovora pa poda znan začetek, iz katerega se ustvarjanje nadaljuje; razlikuje se tako od znanega celotnega telesa kot od pripone FIM.

Vprašanje o dokumentaciji lahko uporabi proizvajalčev postopek obdelave dokumentov za pripravo besedila in strukture z OCR pred analizo z jezikovnim modelom. Pri programskem gradivu, ki je že na voljo kot besedilo, podajte ustrezne odlomke dokumentacije in vprašajte, kateri pogoj določa implementacijo. Vsaka izluščena zahteva naj ostane povezana z izvornim razdelkom, da ustvarjena koda ali razlaga ostane vezana na podano specifikacijo.

Orodja in praktični rezultati

Klicanje funkcij aplikaciji omogoča, da poda opisane operacije in njihove parametre. Model pripravi klic, aplikacija ga izvede, vrnjeni rezultat pa postane kontekst za naslednji odgovor. Programski pomočnik lahko skozi ta cikel prejme rezultat poizvedbe ali izračuna, vendar prevajanje, preverjanje ali uveljavitev predlagane spremembe še vedno zahteva okoliško razvojno okolje.

Za praktičen popravek opredelite javni vmesnik, ki mora ostati združljiv, in zahtevajte popravljeni odsek, jedrnato razlago ter primere vhodov s pričakovanimi izhodi. Za ustvarjeno funkcijo navedite sprejete tipe in robne pogoje. Za razlago podajte vhod, kateremu je treba slediti, da odgovor poveže konkretno pot izvajanja z vrnjeno vrednostjo.

Codestral ustvarja besedilo. Ne podeduje vektorjev za iskanje kode od Codestral Embed, avtomatizacije repozitorija od Devstral ali ustvarjanja slik od vizualnega modela. Stran prav te različice 2508 ne objavlja števila parametrov ali neodvisne največje dolžine odgovora, ki bi ju smeli prevzeti iz druge izdaje. Pri pripravi ponovljivega postopka za urejevalnik ali klepet ohranite navedeno različico, programski kontekst in zahtevani izdelek.

Praktična naloga

### Praktična naloga

Tehnični primer v angleščini

```
Fill a nonmutating loop body

Complete only the missing body in this Python function: 'def doubled(values):
    result = []
    # missing body
    return result'. It must append twice every input value, preserve order and duplicate values, and leave values unchanged. Return the indented insertion followed by assert tests for [2, 2, -1] and []. This is a chat completion request, not a FIM transport request.
```

#### Pričakovani rezultat

```
Only the missing indented loop body, then two tests verifying [4, 4, -2] and an empty result.
```

#### Preverjanje rezultata

```
The insertion fits before return result and never deduplicates or mutates the input.
```

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `mistralai/codestral-2508`

[`mistralai/codestral-2508`](https://ailoot.ai/models/sl/#m=mistralai%2Fcodestral-2508&route=Ultra&caller=mistralai%2Fcodestral-2508&fmt=chat)

Mistral /`mistralai/codestral-2508`

### Začetek

Codestral 2508 je besedilni model podjetja Mistral AI za ustvarjanje kode in dopolnjevanje z upoštevanjem konteksta. Optimiziran je za pogoste naloge v urejevalniku, vključno z dopolnjevanjem vrzeli v kodi in večvrstičnimi spremembami, s kontekstom 128k po navedbah proizvajalca ter dokumentiranimi funkcijami za klepet, strukturiran izhod in orodja.

Dovoljeni vhodi

Besedilo

Rezultati

Besedilo

### Na voljo v Ailoot · vhodi in metode

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

Vhod

`text`

Izhod

`text`

Izhodni format

json ali SSE

| Polje | Vrsta | Zahteva | Vrednosti in omejitve | Privzeto |
| --- | --- | --- | --- | --- |
| Polje`model` | Vrsta`string` | ZahtevaObvezno | Vrednosti in omejitve mistralai/codestral-2508 | Privzeto— |
| Polje`messages` | Vrsta`message[]` | ZahtevaObvezno | Vrednosti in omejitve Najmanjše število elementov: 1 | Privzeto— |
| Polje`messages[].role` | Vrsta`string` | ZahtevaObvezno | Vrednosti in omejitve Primeri: system, user, assistant, tool, function Pogoji: Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela. Odvisno od modela | Privzeto— |
| Polje`messages[].content` | Vrsta`string\|content_part[]\|null` | ZahtevaIzbirno | Vrednosti in omejitve | Privzeto— |
| Polje`messages[].tool_calls` | Vrsta`tool_call[]` | ZahtevaIzbirno | Vrednosti in omejitve | Privzeto— |
| Polje`messages[].tool_call_id` | Vrsta`string` | ZahtevaIzbirno | Vrednosti in omejitve Velja, ko: role=tool; uporabite dejansko vrnjeni ID | Privzeto— |
| Polje`messages[].name` | Vrsta`string` | ZahtevaIzbirno | Vrednosti in omejitve | Privzeto— |
| Polje`messages[].reasoning_content` | Vrsta`string` | ZahtevaIzbirno | Vrednosti in omejitve Velja, ko: Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja | Privzeto— |
| Polje`messages[].reasoning_details` | Vrsta`object\|array` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`max_tokens` | Vrsta`integer` | ZahtevaIzbirno | Vrednosti in omejitve Najmanj: 1 Odvisno od modela | Privzeto— |
| Polje`max_completion_tokens` | Vrsta`integer` | ZahtevaIzbirno | Vrednosti in omejitve Najmanj: 1 Odvisno od modela | Privzeto— |
| Polje`stream` | Vrsta`boolean` | ZahtevaIzbirno | Vrednosti in omejitve | Privzetofalse |
| Polje`stream_options.include_usage` | Vrsta`boolean` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`temperature` | Vrsta`number` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`top_p` | Vrsta`number` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`stop` | Vrsta`string\|string[]` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`tools` | Vrsta`function_tool[]` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`tools[].type` | Vrsta`string` | ZahtevaIzbirno | Vrednosti in omejitve function Odvisno od modela | Privzeto— |
| Polje`tools[].function.name` | Vrsta`string` | ZahtevaObvezno | Vrednosti in omejitve Velja, ko: podano je funkcijsko orodje | Privzeto— |
| Polje`tools[].function.description` | Vrsta`string` | ZahtevaIzbirno | Vrednosti in omejitve | Privzeto— |
| Polje`tools[].function.parameters` | Vrsta`JSON_schema` | ZahtevaIzbirno | Vrednosti in omejitve | Privzeto— |
| Polje`tool_choice` | Vrsta`string\|object` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`parallel_tool_calls` | Vrsta`boolean` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`response_format` | Vrsta`object` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`reasoning_effort` | Vrsta`string` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`reasoning` | Vrsta`object` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`service_tier` | Vrsta`string` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`instructions` | Vrsta`string` | ZahtevaIzbirno | Vrednosti in omejitve Polje združljivosti | Privzeto— |
| Polje`functions` | Vrsta`function[]` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`function_call` | Vrsta`string\|object` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`prompt_cache_options` | Vrsta`object` | ZahtevaIzbirno | Vrednosti in omejitve Odvisno od modela | Privzeto— |
| Polje`modalities` | Vrsta`string[]` | ZahtevaIzbirno | Vrednosti in omejitve text | Privzeto— |
| Polje`provider` | Vrsta`object` | ZahtevaIzbirno | Vrednosti in omejitve Pogoji: provider.options je na tej besedilni poti Ultra zavrnjen | Privzeto— |
| Polje`cache_control.ttl` | Vrsta`string` | ZahtevaIzbirno | Vrednosti in omejitve Pogoji: 1h je zavrnjen na dejanskih mestih za predpomnjenje pozivov | Privzeto— |

Kombinacije vhodnih gradiv

**Besedilo** · Besedilo UTF8

`messages[].content`

Parametri in življenjski cikel metode

| Parameter | Specifikacija |
| --- | --- |
| Parameter`content_type` | Specifikacijaapplication/json |
| Parameter`required` | Specifikacijamodel, messages |
| Parameter`material_types` | Specifikacijatext |
| Parameter`messages` | Specifikacijapolje sporočil s strukturo role/content |
| Parameter`file_material` | Specifikacijadejanski dokument UTF-8 je vstavljen kot dobesedno besedilo; ID datoteke se ne izpeljuje |
| Parameter`optional_controls` | Specifikacijastream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parameter`control_scope` | Specifikacijaodvisno od modela; uporabniška funkcijska orodja se razlikujejo od orodij, ki jih izvaja storitev |
| Parameter`output_modalities` | Specifikacijatext |
| Parameter`hosted_operations` | Specifikacijafalse |
| Parameter`multimodal_input_binding` | Specifikacijanull |

Življenjski cikel: `synchronous_or_streamed`

Pošljite natančen ID modela skupaj z messages.

Dolžina konteksta ni zgornja meja izhoda.

Besedilna datoteka lahko poda dobesedno besedilo; slikovni, zvočni vhodi in vhodi z datotečnimi objekti potrebujejo natančno vezavo.

### Cenik

Tarifni podatki ne dodajajo možnosti zahteve. Podprti parametri so navedeni pri izbrani metodi.

Hitri način

Standardna tarifa Ko je izbran hitri način

Način flex

Standardna tarifa Ko je izbran način flex

Najvišja raven razmišljanja

Standardna tarifa Ko najvišja raven razmišljanja uporablja privzeto prilagoditev (default)

#### Cene Ailoot

#### Cene po nastavitvah

Vsak strošek povežite s prikazanimi pogoji. Za vsak nabor alternativnih nastavitev uporabite eno ceno.

| Nastavitev | Cenovna lestvica | Žetonov konteksta več kot | Žetonov konteksta do vključno | Strošek |
| --- | --- | --- | --- | --- |
| NastavitevOsnovne cene za žetone | Cenovna lestvicaOsnovna cena | Žetonov konteksta več kot— | Žetonov konteksta do vključnoBrez zgornje meje | Strošek Vhod · Vhodni žetoni **$0.0006** / 1K žetonov Izhod · Izhodni žetoni **$0.0018** / 1K žetonov Vhod · Branje predpomnilnika **$0.00006** / 1K žetonov Vhod · Zapis v predpomnilnik **—** / 1K žetonov Vhod · Zapis v predpomnilnik, 1 ura **—** / 1K žetonov |
| NastavitevRazred 1 glede na dolžino zahteve | Cenovna lestvica— | Žetonov konteksta več kot0 | Žetonov konteksta do vključnoBrez zgornje meje | Strošek Vhod · Vhodni žetoni **$0.0006** / 1K žetonov Izhod · Izhodni žetoni **$0.0018** / 1K žetonov Vhod · Branje predpomnilnika **$0.00006** / 1K žetonov Vhod · Zapis v predpomnilnik **—** / 1K žetonov Vhod · Zapis v predpomnilnik, 1 ura **—** / 1K žetonov |

Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. [Kako delujeta rezervacija in obračun →](https://ailoot.ai/docs/sl/billing/reserve/)

### Primeri zahtev

#### Ailoot Ultra · OpenAI Chat

curlPython SDKTok Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "mistralai/codestral-2508", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='mistralai/codestral-2508',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='mistralai/codestral-2508',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Prejmi in shrani rezultate

#### Ailoot Ultra · OpenAI Chat

json ali SSE

##### Ohrani vse dokončane rezultate

Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.

Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.

##### Če je treba preveriti izvirni odgovor

Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan.

Polja odgovora

| Polje | Vrsta |
| --- | --- |
| Polje`choices[].index` | Vrstainteger |
| Polje`choices[].message.content` | Vrstastring\|null |
| Polje`choices[].message.tool_calls` | Vrstatool\_call\[\] |
| Polje`choices[].message.reasoning_content` | Vrstastring |
| Polje`choices[].message.reasoning_details` | Vrstaobject\|array |
| Polje`choices[].finish_reason` | Vrstastring\|null |
| Polje`usage` | Vrstaobject |

Napake in naslednji koraki

| Odgovor | Pogoj | Naslednji korak |
| --- | --- | --- |
| Odgovor400 · `invalid_request_error` | PogojNeveljavna obvezna polja, predstavitev gradiva ali vrednost parametra | Naslednji korakPred novo zahtevo za ustvarjanje popravite navedena polja. |

### Druga imena

#### Druga imena modelov

**Ailoot Ultra** [`mistralai/codestral-2508`](https://ailoot.ai/models/sl/#m=mistralai%2Fcodestral-2508&route=Ultra&caller=mistralai%2Fcodestral-2508&fmt=chat)

#### Druga imena poti metod

Uporabite zgoraj navedene poti metod.

#### Povezani ID-ji za klic

[`mistralai/codestral-2508`](https://ailoot.ai/models/sl/#m=mistralai%2Fcodestral-2508&route=Ultra&caller=mistralai%2Fcodestral-2508&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `mistralai/codestral-2508`

[`mistralai/codestral-2508`](https://ailoot.ai/models/sl/#m=mistralai%2Fcodestral-2508&route=Ultra&caller=mistralai%2Fcodestral-2508&fmt=messages)

Mistral /`mistralai/codestral-2508`

### Začetek

Codestral 2508 je besedilni model podjetja Mistral AI za ustvarjanje kode in dopolnjevanje z upoštevanjem konteksta. Optimiziran je za pogoste naloge v urejevalniku, vključno z dopolnjevanjem vrzeli v kodi in večvrstičnimi spremembami, s kontekstom 128k po navedbah proizvajalca ter dokumentiranimi funkcijami za klepet, strukturiran izhod in orodja.

Dovoljeni vhodi

Besedilo

Rezultati

json · sse

### Na voljo v Ailoot · vhodi in metode

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

Vhod

`text`

Izhod

`json`, `sse`

Izhodni format

JSON ali SSE

| Polje | Vrsta | Zahteva | Vrednosti in omejitve | Privzeto |
| --- | --- | --- | --- | --- |
| Polje`model` | Vrsta`string` | ZahtevaObvezno | Vrednosti in omejitve mistralai/codestral-2508 | Privzeto— |
| Polje`messages` | Vrsta`message[]` | ZahtevaObvezno | Vrednosti in omejitve | Privzeto— |
| Polje`messages[].role` | Vrsta`string` | ZahtevaObvezno | Vrednosti in omejitve user, assistant | Privzeto— |
| Polje`messages[].content` | Vrsta`string` | ZahtevaObvezno | Vrednosti in omejitve | Privzeto— |
| Polje`max_tokens` | Vrsta`integer` | ZahtevaObvezno | Vrednosti in omejitve | Privzeto— |
| Polje`stream` | Vrsta`boolean` | ZahtevaIzbirno | Vrednosti in omejitve | Privzetofalse |

Kombinacije vhodnih gradiv

**Besedilo** · Besedilo UTF-8

`niz messages[].content`

Parametri in življenjski cikel metode

| Parameter | Specifikacija |
| --- | --- |
| Parameter`content_type` | Specifikacijaapplication/json |
| Parameter`required` | Specifikacijamodel, messages, max\_tokens |
| Parameter`optional_controls` | Specifikacijastream |
| Parameter`material_types` | Specifikacijatext |
| Parameter`text_file_material` | SpecifikacijaPreberite dejanski dokument UTF-8 in njegovo besedilo vstavite v navedeni vhodni niz ali niz vsebine sporočila. |

Življenjski cikel: `synchronous_or_streamed`

### Cenik

Tarifni podatki ne dodajajo možnosti zahteve. Podprti parametri so navedeni pri izbrani metodi.

Hitri način

Standardna tarifa Ko je izbran hitri način

Način flex

Standardna tarifa Ko je izbran način flex

Najvišja raven razmišljanja

Standardna tarifa Ko najvišja raven razmišljanja uporablja privzeto prilagoditev (default)

#### Cene Ailoot

#### Cene po nastavitvah

Vsak strošek povežite s prikazanimi pogoji. Za vsak nabor alternativnih nastavitev uporabite eno ceno.

| Nastavitev | Cenovna lestvica | Žetonov konteksta več kot | Žetonov konteksta do vključno | Strošek |
| --- | --- | --- | --- | --- |
| NastavitevOsnovne cene za žetone | Cenovna lestvicaOsnovna cena | Žetonov konteksta več kot— | Žetonov konteksta do vključnoBrez zgornje meje | Strošek Vhod · Vhodni žetoni **$0.0006** / 1K žetonov Izhod · Izhodni žetoni **$0.0018** / 1K žetonov Vhod · Branje predpomnilnika **$0.00006** / 1K žetonov Vhod · Zapis v predpomnilnik **—** / 1K žetonov Vhod · Zapis v predpomnilnik, 1 ura **—** / 1K žetonov |
| NastavitevRazred 1 glede na dolžino zahteve | Cenovna lestvica— | Žetonov konteksta več kot0 | Žetonov konteksta do vključnoBrez zgornje meje | Strošek Vhod · Vhodni žetoni **$0.0006** / 1K žetonov Izhod · Izhodni žetoni **$0.0018** / 1K žetonov Vhod · Branje predpomnilnika **$0.00006** / 1K žetonov Vhod · Zapis v predpomnilnik **—** / 1K žetonov Vhod · Zapis v predpomnilnik, 1 ura **—** / 1K žetonov |

Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. [Kako delujeta rezervacija in obračun →](https://ailoot.ai/docs/sl/billing/reserve/)

### Primeri zahtev

#### Ailoot Ultra · Anthropic Messages

Popolno minimalno telo zahteve JSONcurl · uporabite svoj dokument UTF-8Python · shranite celoten rezultat

```json
{
  "model": "mistralai/codestral-2508",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'mistralai/codestral-2508', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'mistralai/codestral-2508', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Prejmi in shrani rezultate

#### Ailoot Ultra · Anthropic Messages

JSON ali SSE

##### Ohrani vse dokončane rezultate

Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.

Ohranite vse vsebinske bloke, podpise sklepanja in dejanske ID uporabe orodij. Sestavite vse delne spremembe blokov SSE; prvi besedilni blok ni celoten izhod.

##### Če je treba preveriti izvirni odgovor

Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan.

Polja odgovora

| Polje | Vrsta |
| --- | --- |
| Polje`id` | Vrstastring |
| Polje`model` | Vrstastring |
| Polje`content[]` | Vrstatext\|thinking\|tool\_use\|other content block |
| Polje`stop_reason` | Vrstastring\|null |
| Polje`usage` | Vrstaobject |

Napake in naslednji koraki

| Odgovor | Pogoj | Naslednji korak |
| --- | --- | --- |
| Odgovor400 · `invalid_request_error` | PogojNeveljavna obvezna polja, predstavitev gradiva ali vrednost parametra | Naslednji korakPred novo zahtevo za ustvarjanje popravite navedena polja. |

### Druga imena

#### Druga imena modelov

**Ailoot Ultra** [`mistralai/codestral-2508`](https://ailoot.ai/models/sl/#m=mistralai%2Fcodestral-2508&route=Ultra&caller=mistralai%2Fcodestral-2508&fmt=messages)

#### Druga imena poti metod

Uporabite zgoraj navedene poti metod.

#### Povezani ID-ji za klic

[`mistralai/codestral-2508`](https://ailoot.ai/models/sl/#m=mistralai%2Fcodestral-2508&route=Ultra&caller=mistralai%2Fcodestral-2508&fmt=messages)

FAQ · Mistral: Codestral 2508

Kateri vhodi in rezultati so na voljo?

`POST /v1/chat/completions` · `mistralai/codestral-2508`: `text` → `text` `POST /v1/messages` · `mistralai/codestral-2508`: `text` → `json`, `sse`

Katera polja uporablja zahteva?

`POST /v1/chat/completions` · `mistralai/codestral-2508`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `mistralai/codestral-2508`: `model`, `messages`, `max_tokens`, `stream`

Katere omejitve veljajo?

`POST /v1/chat/completions` · `mistralai/codestral-2508`: `messages.min_items`: `1`

Ailoot povežite s Claude Code, OpenCode, Hermes ali svojo aplikacijo.

## Podjetje in njegov portfelj projektov

Podjetje in njegov portfelj projektov: milijoni strank; mesečna prodaja v milijardah.

## Žetone kupujte s popustom.

Naročniški popust za redno delo. Promocijske kode prinesejo do 50% popusta na nakup žetonov.

Naročnina

Za redne zahteve izberite paket s popustom.

Promocijska koda do 50%

Kodo vnesite ob nakupu. Cena se preračuna po veljavni akciji.

Poraba v zgodovini

Za vsako zahtevo se shranijo model, žetoni in znesek.

[Izberite naročnino](https://ailoot.ai/docs/sl/billing/subscriptions/) · [Oglejte si cene modelov](https://ailoot.ai/models/sl/)

## API povežite z izdelkom, ki ga prodajate.

SaaS, aplikacije in boti po ponudbi in licenčni pogodbi Ailoot. Za nadaljnjo prodajo zaprosite za preprodajno licenco.

Komercialna aplikacija

Ustvarjanje besedila, slik, videa in zvoka vključite v plačljive funkcije svoje storitve.

Licenca za preprodajalca

Pošljite opis projekta in shemo dostopa. Zahtevajte pisne pogoje uporabe in nadaljnje prodaje.

Dokumenti na strani

Ponudba, licenčna pogodba in politika obdelave podatkov so dostopne pred povezavo.

[Zaprosite za preprodajno licenco](mailto:support@ailoot.ai) · [Ponudba in licenčna pogodba](https://ailoot.ai/legal/offer?lang=sl)

## Ailoot · Podjetje in njegov portfelj projektov





Ailoot temelji na pridobljenih operativnih izkušnjah, široki bazi strank, stabilni storitvi in stalnem spremljanju KPI.





Podjetje in njegov portfelj projektov: milijoni strank; mesečna prodaja v milijardah.





Ailoot te operativne izkušnje uporablja za dostop prek API do funkcij umetne inteligence v izdelkih strank, agentih, aplikacijah in avtomatizacijah.
