Source: https://ailoot.ai/docs/fi/api/systemone/
Canonical: https://ailoot.ai/docs/fi/api/systemone/
Language: fi

[API](https://ailoot.ai/docs/fi/) 

# Jev — päätösmalli

[Markdown](https://ailoot.ai/docs/fi/api/systemone/index.md)

TypeSafen päätösmalli Jev vastaa tyypitettyihin kysymyksiin tekstistä tai JSONista: vaihtoehdon valinta, asteikkoarvio tai ”kyllä/ei” todennäköisyyksineen. Se ei ole chat eikä tuota tekstiä.

POST`https://api.ailoot.ai/v1/systemone`

Jev — päätösmalli

```bash
curl https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "Apua! Maksatukseni ovat epäonnistuneet 3 päivän ajan.",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Ilmaiseeko tämä kiireellisyyttä?"
      }
    }
  }' 
```

```python
import json, os, urllib.request

body = {
    "model": "jev-latest",
    "state": "Apua! Maksatukseni ovat epäonnistuneet 3 päivän ajan.",
    "questions": {
        "is_urgent": {"type": "noul", "instructions": "Ilmaiseeko tämä kiireellisyyttä?"},
    },
}
req = urllib.request.Request(
    "https://api.ailoot.ai/v1/systemone",
    data=json.dumps(body).encode(),
    headers={"Authorization": "Bearer " + os.environ["AILOOT_API_KEY"],
             "Content-Type": "application/json"},
)
with urllib.request.urlopen(req, timeout=60) as resp:
    result = json.load(resp)
print(result["answers"]["is_urgent"]["noul"])  # 0.95
```

```js
const resp = await fetch("https://api.ailoot.ai/v1/systemone", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.AILOOT_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "jev-latest",
    state: "Apua! Maksatukseni ovat epäonnistuneet 3 päivän ajan.",
    questions: {
      is_urgent: { type: "noul", instructions: "Ilmaiseeko tämä kiireellisyyttä?" },
    },
  }),
});
const result = await resp.json();
if (!resp.ok) throw new Error(`${resp.status} ${JSON.stringify(result)}`);
console.log(result.answers.is_urgent.noul); // 0.95
```

200 OK

```json
{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}
```

Jev on TypeSafen System One -luokan päätösmalli. Se ei kirjoita tekstiä eikä käy keskustelua: lähetät **tilan** (`state`) — tekstinä tai JSONina — ja joukon **kysymyksiä**, ja saat vastaukseksi tyypitettyjä arvoja todennäköisyyksineen. Koodi voi niiden perusteella heti haarautua, lajitella ja reitittää ilman vapaan tekstin tulkintaa.

Kaikki saman pyynnön kysymykset arvioidaan rinnakkain ja toisistaan riippumatta suhteessa samaan tilaan `state`. TypeSafen mukaan kysymysten lisääminen ei juuri muuta vastausaikaa, eivätkä kysymykset häiritse toisiaan.

| Asia | Tiivistetysti |
| --- | --- |
| Malli | `jev-latest` — Jevin uusimman vakaan version alias; [kortti luettelossa](https://ailoot.ai/models/fi/#m=jev-latest) |
| Metodi | `POST /v1/systemone`. Tämä ei ole chat: OpenAI-, Anthropic- ja Gemini-muodot eivät sovellu Jeville. Vastaus saapuu kokonaisena yhtenä JSON-objektina |
| Hyväksytty syöte | Vain teksti: merkkijono, JSON-objekti tai tekstitaulukko. Muunna kuvat, ääni ja video ensin tekstiksi |
| Konteksti | 64K tokenia pyyntöä kohti — state ja kaikki kysymykset yhteensä; state ja pisin kysymys yhdessä — enintään 32K |
| Kieli | TypeSafen mukaan malli toimii tarkimmin englanniksi; se hyväksyy muita kieliä, mutta tarkkuus on heikompi — testaa omilla tiedoillasi |
| Hinta | Syöte $0.084 / 1 miljoonaa tokenia, tuloste maksuton |

## [](https://ailoot.ai/docs/fi/api/systemone/#request)Pyyntö

### Todennus

| Parametri | Tyyppi | Pakollinen | Kuvaus |
| --- | --- | --- | --- |
| `Authorization` | header | pakollinen | Ailoot-avain muodossa `Bearer sk-…`. |

### Pyynnön runko

| Parametri | Tyyppi | Pakollinen | Kuvaus |
| --- | --- | --- | --- |
| `model` | string | pakollinen | `jev-latest`. |
| `state` | string \| object \| array | pakollinen | Arvioitava sisältö: tekstimerkkijono tai JSON — asiakkaan yhteydenotto, tietokantatietue, viestiketju tai sovelluksesi nykyinen tila. Objekti, jonka kenttien nimet ovat ymmärrettäviä, on yleensä yhtä merkkijonoa kätevämpi. |
| `questions` | object | pakollinen | Kysymykset. Valitset itse avaimet, ja vastaukset saapuvat samoilla avaimilla; avain ei vaikuta vastaukseen — itse kysymys määritetään kentässä `instructions`. |
| `questions.*.type` | string | pakollinen | `noul`, `choice` tai `score` — katso alta. |
| `questions.*.instructions` | string \| object \| array | pakollinen | Itse kysymys. Pitkän kysymyksen tietoineen voi lähettää objektina: kysymys yhdessä kentässä, tiedot muissa; viittaa kenttiin niiden nimillä gravis-merkkien sisällä. |
| `questions.*.criteria` | object \| array |  | Vastausvaihtoehdot tyypin mukaan: noulissa ”kyllä”- ja ”ei”-kuvaukset (valinnaiset), choicessa vaihtoehtojen sanakirja ja scoressa järjestetty tasoluettelo. |

## [](https://ailoot.ai/docs/fi/api/systemone/#question-types)Kysymystyypit

| Tyyppi | Mitä kysyy | Mitä palauttaa |
| --- | --- | --- |
| `noul` | Onko väite tosi: kyllä vai ei | `noul` — ”kyllä”-vastauksen todennäköisyys välillä 0–1 |
| `choice` | Mikä annetuista vaihtoehdoista sopii | `choice`, `probabilities`, `confidence` |
| `score` | Mihin state sijoittuu tasoasteikollasi | `score`, `legend`, `probabilities`, `confidence` |

Tyyppejä voi yhdistellä samassa pyynnössä.

### noul — kyllä vai ei

Kenttä `criteria` on valinnainen: siinä voi kuvata, mitä ”kyllä” (`true`) ja ”ei” (`false`) tarkoittavat. Vastaus `noul` — luku välillä 0 (ei) ja 1 (kyllä).

```json
"is_urgent": {
  "type": "noul",
  "instructions": "Ilmaiseeko tämä kiireellisyyttä?",
  "criteria": {
    "true": "Nimenomaisesti aikakriittinen",
    "false": "Kiireellisyyttä ei ilmaista"
  }
}
```

```json
"is_urgent": {
  "type": "noul",
  "noul": 0.95
}
```

### choice — vaihtoehdon valinta

`criteria` — sanakirja ”vaihtoehto → kuvaus”; jos kuvausta ei tarvita, määritä `null`. Enintään 255 vaihtoehtoa. Vastauksessa `choice` — todennäköisin vaihtoehto, `probabilities` — kunkin vaihtoehdon todennäköisyys (summa 1), `confidence` — varmuus välillä 0–1.

```json
"department": {
  "type": "choice",
  "instructions": "Minkä tiimin pitäisi käsitellä tämä?",
  "criteria": {
    "billing": "Maksut, laskutus, maksunpalautukset",
    "technical": "Virheet, käyttökatkot, integraatiot",
    "sales": "Hinnoittelu, päivitykset, uudet asiakkaat"
  }
}
```

```json
"department": {
  "type": "choice",
  "choice": "billing",
  "probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
  "confidence": 0.81
}
```

### score — asteikkoarvio

`criteria` — tasot alimmasta ylimpään, enintään 10 (TypeSafe suosittelee vähintään kahta). Vastauksessa `score` — tasojen todennäköisyyksillä painotettu arvo (voi sijoittua tasojen väliin), `legend` — tason numero ja kuvaus, `probabilities` ja `confidence`. TypeSafen mukaan `score` sopii vertailuun kynnysarvon kanssa, mutta ei tarkaksi luvuksi tasojen välillä.

```json
"frustration": {
  "type": "score",
  "instructions": "Kuinka turhautunut asiakas on?",
  "criteria": ["Rauhallinen", "Turhautunut", "Erittäin vihainen"]
}
```

```json
"frustration": {
  "type": "score",
  "score": 1.05,
  "legend": { "0": "Rauhallinen", "1": "Turhautunut", "2": "Erittäin vihainen" },
  "probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
  "confidence": 0.92
}
```

## [](https://ailoot.ai/docs/fi/api/systemone/#response)Vastaus

| Parametri | Tyyppi | Pakollinen | Kuvaus |
| --- | --- | --- | --- |
| `model` | string |  | Vastanneen mallin versio. Alias jev-latest siirtyy ajan mittaan uusiin versioihin: jos olet sovittanut kentän nimeltä `confidence` arvon kynnysarvot tiettyyn versioon, seuraa tätä kenttää. |
| `answers` | object |  | Yksi vastaus jokaiseen kysymykseen samoilla avaimilla. Jokaisessa vastauksessa on `type`, choice- ja score-vastauksissa lisäksi `confidence`. |
| `usage` | object |  | `input_tokens` ja `output_tokens`. Vain syötetokeneista veloitetaan. |

`confidence` on kätevä kynnysarvo: varma vastaus — toimi automaattisesti; epävarma vastaus — lähetä ihmiselle tai suurelle mallille tarkistettavaksi. Vastaus kertoo, mitä valita, ja `confidence` — kannattaako toimia.

## [](https://ailoot.ai/docs/fi/api/systemone/#many-questions)Useita kysymyksiä yhdessä pyynnössä

Esitä kaikki samaan stateen liittyvät kysymykset yhdessä pyynnössä: ne arvioidaan rinnakkain, ja state lähetetään vain kerran. TypeSafen mukaan heidän 13 kysymyksen esimerkissään yksi yhteinen pyyntö oli 12,2 kertaa halvempi ja 10 kertaa nopeampi kuin 13 peräkkäin lähetettyä erillistä pyyntöä, samoilla vastauksilla.

Monimutkainen arvio kannattaa jakaa yksinkertaisiin kysymyksiin ja yhdistää vastaukset koodissa: esimerkiksi ”arvioi hakemus” -pyynnön sijaan erilliset arviot markkinasta, toteutettavuudesta ja eroista kilpailijoihin. Painoja voi tällöin muuttaa koodissa, ei kysymystekstissä.

```json
{
  "model": "jev-latest",
  "state": "Apua! Maksatukseni ovat epäonnistuneet 3 päivän ajan.",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Minkä tiimin pitäisi käsitellä tämä?",
      "criteria": {
        "billing": "Maksut, laskutus, maksunpalautukset",
        "technical": "Virheet, käyttökatkot, integraatiot",
        "sales": "Hinnoittelu, päivitykset, uudet asiakkaat"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "Kuinka turhautunut asiakas on?",
      "criteria": ["Rauhallinen", "Turhautunut", "Erittäin vihainen"]
    },
    "is_urgent": {
      "type": "noul",
      "instructions": "Ilmaiseeko tämä kiireellisyyttä?"
    }
  }
}
```

## [](https://ailoot.ai/docs/fi/api/systemone/#use-cases)Milloin sopii

- **Reititys.** Ohjaa yhteydenotto oikealle osastolle ja pyyntö oikealle käsittelijälle: yksinkertaiselle koodille, suurelle mallille tai ihmiselle.
- **Lajittelu ja priorisointi.** Kiireellisyys, sävy ja riski — asteikolla, jonka kynnysarvot ovat koodissa.
- **Moderointi ja tarkistukset.** Rikkooko viesti sääntöjä, vahvistaako lähde lainauksen tai sisältääkö asiakirja vastauksen kysymykseen — ennen kuin teksti etenee.
- **Pisteytys ja järjestäminen.** Arvioi asiakirjat, ehdokkaat tai löydetyt katkelmat omilla arviointiperusteillasi ja päätä koodissa, mitä viedään eteenpäin.
- **Hauraan ”palauta JSON” -ohjeen tilalle.** Kutsu, joka palauttaa rakenteensa vuoksi tyypitettyjä arvoja eikä tulkittavaa tekstiä.

## [](https://ailoot.ai/docs/fi/api/systemone/#not-for)Milloin ei sovi

- **Chat, vastaukset käyttäjälle sekä tekstin tai koodin generointi.** Jev ei kirjoita tekstiä — siihen on [tekstimalleja](https://ailoot.ai/models/fi/?kind=text).
- **Claude Coden, Cursorin ja muiden agenttien malliksi.** Et voi korvata agentin mallia jev-latestilla: agentti tarvitsee mallin, joka kirjoittaa tekstiä ja kutsuu työkaluja. Jeviä voi kutsua koodista, jonka agentti kirjoittaa sinulle.
- **Aritmetiikka, laskenta ja päivämäärien vertailu.** TypeSafen mukaan nämä kannattaa luotettavuuden vuoksi tehdä koodissa ja kysyä mallilta vain merkitykseen liittyvä osa — esimerkiksi poimia päivämäärän osat choicen avulla.
- **Kuvat, ääni ja video.** Malli hyväksyy vain tekstin — muunna tällaiset tiedot tekstiksi etukäteen.

Malli toimii parhaiten, kun jokainen kysymys on yksi konkreettinen, rajattu arvio. Ilmaise ehto suoraan: TypeSafen mukaan malli ymmärtää kysymyksen kirjaimellisesti, ja suuri state, jossa on ylimääräisiä tietoja, heikentää tarkkuutta — suodata se koodissa.

## [](https://ailoot.ai/docs/fi/api/systemone/#price)Hinta

Vain syötetokeneista veloitetaan — kenttä `usage.input_tokens` vastauksessa: **$0.084 / 1 miljoonaa**. Tulostetokenit ovat maksuttomia.

Tämän sivun esimerkkipyyntö (296 syötetokenia) maksaa alle $0.0001.

Ailoot varaa summan saldosta ennen pyyntöä ja veloittaa vastauksen jälkeen kerran toteutuneen kulutuksen mukaan — [näin se toimii](https://ailoot.ai/docs/fi/billing/reserve/).

## [](https://ailoot.ai/docs/fi/api/systemone/#limits)Rajoitukset

| Asia | Raja |
| --- | --- |
| Koko pyyntö: state ja kaikki kysymykset | 64K tokenia |
| state yhdessä pisimmän kysymyksen kanssa | 32K tokenia |
| Vaihtoehtoja yhdessä choice-kysymyksessä | enintään 255 |
| Tasoja yhdessä score-kysymyksessä | 2–10 |
| Syöte | vain teksti: merkkijono, JSON-objekti tai tekstitaulukko |

Mallirajat ovat TypeSafen ilmoittamia. Avaimesi ja saldosi rajoitukset pätevät kuten kaikilla Ailoot-malleilla: [Virheet ja rajoitukset](https://ailoot.ai/docs/fi/errors/).

## [](https://ailoot.ai/docs/fi/api/systemone/#errors)Virheet

Virheet saapuvat Ailoot APIn yhteisessä muodossa: koodi, ymmärrettävä teksti ja Request ID. Tämän metodin yleisimmät virheet ovat:

| Koodi | Milloin | Toimenpide |
| --- | --- | --- |
| **400** `invalid_request` | Runko ei läpäissyt tarkistusta: state, model tai questions puuttuu, type on tuntematon, choicessa on yli 255 vaihtoehtoa tai scoressa yli 10 tasoa | Korjaa pyyntö virhetekstin perusteella: ilman korjausta se hylätään uudelleen |
| **400** `context_length_exceeded` | state ja kysymykset ylittävät yhteensä mallin rajan | Suodata state koodissa ja säilytä kysymysten tarvitsemat tiedot |
| **401** `invalid_api_key` | Avain puuttuu tai on virheellinen | Lähetä avain Authorization-otsakkeessa |
| **402** `insufficient_balance` | Vapaa saldo ei riitä varaukseen | Lataa saldoa |
| **404** `model_not_found`, `unsupported_endpoint` | ID:ssä on virhe tai mallia kutsutaan väärällä metodilla, esimerkiksi polun /v1/chat/completions kautta | Kutsu jev-latestia vain metodilla POST /v1/systemone |
| **429** `rate_limit_exceeded` | Liikaa pyyntöjä | Odota Retry-After-otsakkeessa ilmoitettu määrä sekunteja ja yritä uudelleen |
| **503** `model_overloaded`, `model_unavailable` | Malli on tilapäisesti ylikuormittunut tai ei käytettävissä | Jos X-Should-Retry: true — yritä uudelleen Retry-After-otsakkeessa ilmoitetun sekuntimäärän kuluttua; jos false — tarkista ensin Request ID historiasta |
| **504** `model_timeout` | Malli ei vastannut ajoissa | Älä lähetä pyyntöä uudelleen ennen kuin olet tarkistanut Request ID:n historiasta |

Kaikki koodit löytyvät sivulta [Virheet ja rajoitukset](https://ailoot.ai/docs/fi/errors/).

Onko vielä kysyttävää? Lähetä Request ID ja kuvaus — autamme selvittämään asian.[Ota yhteyttä tukeen](mailto:support@ailoot.ai)

## Ailoot · Yritys ja sen projektisalkku





Ailoot perustuu kertyneeseen toimintakokemukseen, laajaan asiakaskuntaan, vakaaseen palveluun ja jatkuvaan KPI-seurantaan.





Yritys ja sen projektisalkku: miljoonia asiakkaita; kuukausittainen myynti miljardiluokassa.





Ailoot hyödyntää tätä toimintakokemusta tarjotessaan API-yhteyden tekoälytoimintoihin asiakkaiden tuotteissa, agenteissa, sovelluksissa ja automaatioissa.
