Jev — model keputusan
MarkdownModel keputusan Jev daripada TypeSafe menjawab soalan berjenis tentang teks atau JSON: memilih pilihan, menilai pada skala atau memberikan jawapan “ya/tidak” dengan kebarangkalian. Ia bukan sembang atau penjanaan teks.
Panduan lengkap
https://api.ailoot.ai/v1/systemonecurl https://api.ailoot.ai/v1/systemone \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-latest",
"state": "Tolong! Pembayaran keluar saya gagal sejak 3 hari lalu.",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Adakah ini menunjukkan kesegeraan?"
}
}
}' import json, os, urllib.request
body = {
"model": "jev-latest",
"state": "Tolong! Pembayaran keluar saya gagal sejak 3 hari lalu.",
"questions": {
"is_urgent": {"type": "noul", "instructions": "Adakah ini menunjukkan kesegeraan?"},
},
}
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.95const 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: "Tolong! Pembayaran keluar saya gagal sejak 3 hari lalu.",
questions: {
is_urgent: { type: "noul", instructions: "Adakah ini menunjukkan kesegeraan?" },
},
}),
});
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{
"model": "jev-1.13.0",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.95
}
},
"usage": { "input_tokens": 296, "output_tokens": 20 }
}Jev ialah model keputusan kelas System One daripada TypeSafe. Ia tidak menulis teks atau berbual: anda menghantar keadaan (state) — teks atau JSON — dan sekumpulan soalan, lalu menerima nilai berjenis dengan kebarangkalian. Berdasarkannya, kod terus memilih cabang, mengisih dan menghalakan, tanpa perlu menghuraikan teks bebas.
Semua soalan dalam satu permintaan dinilai secara serentak dan bebas antara satu sama lain, terhadap nilai yang sama bagi state. Menurut TypeSafe, menambah soalan hampir tidak mengubah masa respons dan soalan tidak mengganggu satu sama lain.
| Perkara | Ringkasan |
|---|---|
| Model | jev-latest — alias versi stabil Jev yang terkini; kad dalam katalog |
| Kaedah | POST /v1/systemone. Ia bukan sembang: format OpenAI, Anthropic dan Gemini tidak sesuai untuk Jev. Respons diterima sepenuhnya sebagai satu JSON |
| Input yang diterima | Hanya teks: rentetan, objek JSON atau tatasusunan teks. Tukarkan imej, audio dan video kepada teks terlebih dahulu |
| Konteks | 64K token setiap permintaan — state dan semua soalan bersama-sama; state bersama soalan paling panjang — sehingga 32K |
| Bahasa | Menurut TypeSafe, model paling tepat dalam bahasa Inggeris; bahasa lain diterima tetapi ketepatannya lebih rendah — uji dengan data anda sendiri |
| Harga | Input $0.084 bagi setiap 1 juta token, output percuma |
Permintaan
Pengesahan
- Authorizationheaderwajib
Kunci Ailoot dalam bentuk
Bearer sk-….
Badan permintaan
- modelstringwajib
jev-latest. - statestring | object | arraywajib
Perkara yang dinilai: rentetan teks atau JSON — pertanyaan pelanggan, rekod pangkalan data, perbualan atau keadaan semasa aplikasi anda. Objek dengan nama medan yang jelas biasanya lebih mudah digunakan daripada satu rentetan.
- questionsobjectwajib
Soalan. Anda memilih kuncinya, dan jawapan diterima di bawah kunci yang sama; kunci tidak mempengaruhi jawapan — soalan sebenar dinyatakan dalam
instructions. - questions.*.typestringwajib
noul,choiceatauscore— lihat di bawah. - questions.*.instructionsstring | object | arraywajib
Soalan itu sendiri. Soalan panjang dengan data boleh dihantar sebagai objek: soalan dalam satu medan dan data dalam medan lain; rujuk medan mengikut nama dalam tanda aksen grave.
- questions.*.criteriaobject | array
Pilihan jawapan berbeza mengikut jenis: penerangan “ya” dan “tidak” untuk noul (pilihan), kamus pilihan untuk choice, senarai tahap tersusun untuk score.
Jenis soalan
| Jenis | Perkara yang ditanya | Nilai yang dikembalikan |
|---|---|---|
noul | Adakah pernyataan itu benar: ya atau tidak | noul — kebarangkalian “ya” dari 0 hingga 1 |
choice | Pilihan yang sesuai daripada pilihan yang diberikan | choice, probabilities, confidence |
score | Kedudukan state pada skala tahap anda | score, legend, probabilities, confidence |
Jenis boleh digabungkan dalam satu permintaan.
noul — ya atau tidak
Medan criteria adalah pilihan: anda boleh menerangkan maksud “ya” (true) dan “tidak” (false). Jawapan noul — nombor dari 0 (tidak) hingga 1 (ya).
"is_urgent": {
"type": "noul",
"instructions": "Adakah ini menunjukkan kesegeraan?",
"criteria": {
"true": "Jelas memerlukan tindakan segera",
"false": "Tiada kesegeraan dinyatakan"
}
}"is_urgent": {
"type": "noul",
"noul": 0.95
}choice — pemilihan pilihan
criteria — kamus “pilihan → penerangan”; jika penerangan tidak diperlukan, nyatakan null. Sehingga 255 pilihan. Dalam respons choice — pilihan yang paling berkemungkinan, probabilities — kebarangkalian setiap pilihan (jumlahnya 1), confidence — tahap keyakinan dari 0 hingga 1.
"department": {
"type": "choice",
"instructions": "Pasukan manakah yang patut mengendalikan perkara ini?",
"criteria": {
"billing": "Pembayaran, penginvoisan, bayaran balik",
"technical": "Pepijat, gangguan perkhidmatan, integrasi",
"sales": "Harga, naik taraf, pelanggan baharu"
}
}"department": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
"confidence": 0.81
}score — penilaian pada skala
criteria — tahap daripada yang terendah kepada yang tertinggi, tidak melebihi 10 (TypeSafe mengesyorkan sekurang-kurangnya dua). Dalam respons score — nilai berwajaran berdasarkan kebarangkalian tahap (boleh berada di antara tahap), legend — nombor tahap dan penerangannya, probabilities dan confidence. Menurut TypeSafe, score sesuai untuk dibandingkan dengan ambang, tetapi bukan untuk mendapatkan nombor tepat di antara tahap.
"frustration": {
"type": "score",
"instructions": "Sejauh manakah pelanggan berasa kecewa?",
"criteria": ["Tenang", "Kecewa", "Sangat marah"]
}"frustration": {
"type": "score",
"score": 1.05,
"legend": { "0": "Tenang", "1": "Kecewa", "2": "Sangat marah" },
"probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
"confidence": 0.92
}Respons
- modelstring
Versi model yang memberikan respons. Alias jev-latest beralih kepada versi baharu dari semasa ke semasa: jika anda telah menetapkan ambang
confidenceuntuk versi tertentu, pantau medan ini. - answersobject
Satu jawapan bagi setiap soalan, di bawah kunci yang sama. Setiap jawapan mempunyai
type, manakala choice dan score turut mempunyaiconfidence. - usageobject
input_tokensdanoutput_tokens. Hanya token input dicaj.
Beberapa soalan dalam satu permintaan
Ajukan semua soalan tentang satu state dalam satu permintaan: soalan dinilai secara serentak dan state dihantar sekali sahaja. Menurut TypeSafe, dalam contoh mereka dengan 13 soalan, satu permintaan gabungan adalah 12,2 kali lebih murah dan 10 kali lebih pantas berbanding 13 permintaan berasingan yang dihantar berturutan, dengan jawapan yang sama.
Lebih baik pecahkan pertimbangan rumit kepada soalan mudah dan gabungkan jawapan dalam kod: contohnya, gantikan “nilai permohonan” dengan penilaian berasingan tentang pasaran, kebolehlaksanaan dan perbezaan daripada pesaing. Dengan itu, pemberat diubah dalam kod, bukan dalam teks soalan.
{
"model": "jev-latest",
"state": "Tolong! Pembayaran keluar saya gagal sejak 3 hari lalu.",
"questions": {
"department": {
"type": "choice",
"instructions": "Pasukan manakah yang patut mengendalikan perkara ini?",
"criteria": {
"billing": "Pembayaran, penginvoisan, bayaran balik",
"technical": "Pepijat, gangguan perkhidmatan, integrasi",
"sales": "Harga, naik taraf, pelanggan baharu"
}
},
"frustration": {
"type": "score",
"instructions": "Sejauh manakah pelanggan berasa kecewa?",
"criteria": ["Tenang", "Kecewa", "Sangat marah"]
},
"is_urgent": {
"type": "noul",
"instructions": "Adakah ini menunjukkan kesegeraan?"
}
}
}Kegunaan yang sesuai
- Penghalaan. Hantar pertanyaan ke jabatan yang betul, dan permintaan ke pengendali yang betul: kod mudah, model besar atau manusia.
- Pengisihan dan keutamaan. Tahap kesegeraan, sentimen, risiko — dinilai pada skala, dengan ambang dalam kod.
- Moderasi dan semakan. Adakah mesej melanggar peraturan, adakah sumber menyokong petikan, adakah dokumen mengandungi jawapan kepada soalan — sebelum teks diteruskan.
- Pemarkahan dan pemeringkatan. Nilai dokumen, calon atau petikan yang ditemui mengikut rubrik anda dan tentukan dalam kod perkara yang diteruskan.
- Pengganti kepada arahan rapuh “kembalikan JSON”. Panggilan yang memang direka untuk mengembalikan nilai berjenis, bukannya teks yang perlu dihuraikan.
Kegunaan yang tidak sesuai
- Sembang, respons kepada pengguna, penjanaan teks atau kod. Jev tidak menulis teks — untuk itu, gunakan model teks.
- Model untuk Claude Code, Cursor dan ejen lain. Anda tidak boleh menggantikan model ejen dengan jev-latest: ejen memerlukan model yang menulis teks dan memanggil alat. Jev boleh dipanggil daripada kod yang ditulis oleh ejen untuk anda.
- Aritmetik, pengiraan dan perbandingan tarikh. Menurut TypeSafe, perkara ini lebih andal dilakukan dalam kod, manakala model hanya ditanya tentang makna — contohnya, mengekstrak bahagian tarikh melalui choice.
- Imej, audio dan video. Model hanya menerima teks — tukarkan data tersebut kepada teks terlebih dahulu.
Harga
Hanya token input dicaj — medan usage.input_tokens dalam respons: $0.084 bagi setiap 1 juta. Token output adalah percuma.
Permintaan dalam contoh pada halaman ini (296 token input) berharga kurang daripada $0.0001.
Sebelum permintaan, Ailoot merizabkan amaun daripada baki dan, selepas respons, mengenakan caj sekali berdasarkan penggunaan sebenar — cara ia berfungsi.
Had
| Perkara | Had |
|---|---|
| Keseluruhan permintaan: state dan semua soalan | 64K token |
| state bersama soalan yang paling panjang | 32K token |
| Pilihan dalam satu choice | sehingga 255 |
| Tahap dalam satu score | dari 2 hingga 10 |
| Input | hanya teks: rentetan, objek JSON atau tatasusunan teks |
Had model adalah menurut TypeSafe. Sekatan kunci dan baki anda berkuat kuasa seperti bagi mana-mana model Ailoot: Ralat dan had.
Ralat
Ralat diterima dalam format umum Ailoot API: kod, teks yang jelas dan Request ID. Ralat yang paling lazim bagi kaedah ini:
| Kod | Keadaan | Tindakan |
|---|---|---|
400 invalid_request | Badan permintaan gagal pengesahan: state, model atau questions tiada, type tidak dikenali, choice mempunyai lebih daripada 255 pilihan atau score mempunyai lebih daripada 10 tahap | Betulkan permintaan berdasarkan mesej ralat: tanpa pembetulan, ia akan gagal lagi |
400 context_length_exceeded | state dan soalan bersama-sama melebihi had model | Tapis state dalam kod, kekalkan perkara yang diperlukan oleh soalan |
401 invalid_api_key | Kunci tiada atau tidak sah | Hantar kunci dalam pengepala Authorization |
402 insufficient_balance | Baki tersedia tidak mencukupi untuk rizab | Tambah nilai baki |
404 model_not_found, unsupported_endpoint | ID tidak betul atau model dipanggil melalui kaedah yang salah, contohnya melalui /v1/chat/completions | Panggil jev-latest hanya melalui POST /v1/systemone |
429 rate_limit_exceeded | Terlalu banyak permintaan | Tunggu selama bilangan saat yang dinyatakan dalam pengepala Retry-After, kemudian cuba semula |
503 model_overloaded, model_unavailable | Model terlebih beban buat sementara waktu atau tidak tersedia | Jika X-Should-Retry: true — cuba semula selepas bilangan saat dalam Retry-After; jika false — semak Request ID dalam sejarah terlebih dahulu |
504 model_timeout | Model tidak memberikan respons dalam tempoh yang ditetapkan | Jangan hantar semula permintaan sebelum menyemak Request ID dalam sejarah |
Senarai penuh kod terdapat pada halaman Ralat dan had.