Jev adalah model keputusan AI TypeSafe. Anda mengirimkan sebagian status dan serangkaian pertanyaan berjenis, dan Jev akan menjawab dengan probabilitas, bukan prosa. Panduan ini mencakup kunci API Jev dan permintaan pertama Anda; untuk latar belakang tentang apa itu Jev dan mengapa ia mengembalikan angka alih-alih teks, baca apa itu Jev terlebih dahulu. Untuk memperjelas, karena hasil pencarian seringkali kacau: ini adalah Jev model AI TypeSafe, bukan FaZe Jev YouTuber dan bukan vaksin JEV.
Kunci API Jev berfungsi seperti token bearer lainnya, jadi jika Anda baru mengenal pola ini, apa itu kunci API mencakup dasar-dasarnya. Akses API langsung sedang dalam akses awal, jadi langkah pertama adalah keluar dari daftar tunggu. Setelah itu, Anda akan membuat kunci, mempelajari bentuk permintaan, memanggil endpoint dengan curl dan Python SDK, membaca bidang probabilitas, dan menghubungkan permintaan ke Apidog dengan penegasan pada probabilitas tersebut. Jika Anda tidak bisa menunggu, model yang sama tersedia di Vercel AI Gateway tanpa daftar tunggu; FAQ mencakup rute tersebut.
Langkah 1: dapatkan akses awal, lalu buat kuncinya
Jev saat ini masih dalam akses awal saat tulisan ini dibuat. Postingan peluncuran TypeSafe menyatakan bahwa mereka "membawa developer keluar dari daftar tunggu secepat mungkin," jadi bergabunglah dengan daftar tunggu di typesafe.ai dan tunggu undangan konsol; belum ada pendaftaran mandiri. Setelah akun konsol Anda aktif, buka console.typesafe.ai/settings/keys dan buat kunci. Salin sekali dan perlakukan seperti kata sandi.
Ekspor sebagai variabel lingkungan daripada menempelkannya ke dalam kode:
export TYPESAFE_API_KEY="ts_..."
Contoh curl resmi dan Python SDK keduanya membaca TYPESAFE_API_KEY dari lingkungan, jadi satu variabel mencakup setiap contoh di bawah. Jika kunci pernah masuk ke dalam commit, putar ulang di konsol dan jalankan pemeriksaan kebocoran kunci API di seluruh repo.
Langkah 2: pahami bentuk permintaan
Setiap panggilan Jev adalah satu POST https://api.typesafe.ai/v1/systemone dengan tiga bidang isi, didokumentasikan dalam referensi API TypeSafe:
| Bidang | Tipe | Penjelasan |
|---|---|---|
model |
string | jev-latest (saat ini mengacu pada jev-1.13.0) atau jev-preview untuk build terbaru |
state |
string, objek, atau array | Konten yang akan dievaluasi: tiket, catatan JSON, riwayat pesan |
questions |
peta (map) dari nama ke pertanyaan | Pertanyaan berjenis yang dijawab Jev terhadap status |
Setiap pertanyaan adalah salah satu dari tiga primitif:
| Primitif | Kriteria permintaan | Bidang respons |
|---|---|---|
noul (ya/tidak) |
opsional {"true": "...", "false": "..."} |
noul: 0 (tidak) hingga 1 (ya) |
choice |
peta (map) wajib dari opsi ke deskripsi, hingga 255 opsi | choice, confidence, probabilities per opsi |
score |
array terurut wajib dari 2 hingga 10 deskripsi tingkat | score, confidence, legend, probabilities per tingkat |
Respons juga membawa model dan usage.input_tokens / usage.output_tokens. Pertanyaan dengan jenis yang berbeda dapat berbagi satu status dan kembali dalam satu putaran.
Langkah 3: buat permintaan pertama dengan curl
Permintaan ini menjalankan ketiga primitif terhadap satu tiket dukungan:
curl https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-latest",
"state": "My card was charged twice for one order and nobody has replied in three days.",
"questions": {
"needs_review": {
"type": "noul",
"instructions": "Does this ticket need a human agent?",
"criteria": {
"true": "money, legal, or an unanswered complaint",
"false": "a routine question a bot can close"
}
},
"route": {
"type": "choice",
"instructions": "Route this ticket to a team.",
"criteria": {
"billing": "payment or charge problems",
"shipping": "delivery problems",
"technical": "application bugs"
}
},
"urgency": {
"type": "score",
"instructions": "How urgent is this ticket?",
"criteria": ["low", "medium", "high"]
}
}
}'
Responsnya terlihat seperti ini (nilai-nilai bersifat ilustratif):
{
"model": "jev-1.13.0",
"answers": {
"needs_review": { "type": "noul", "noul": 0.97 },
"route": {
"type": "choice",
"choice": "billing",
"confidence": 0.98,
"probabilities": { "billing": 0.98, "shipping": 0.01, "technical": 0.01 }
},
"urgency": {
"type": "score",
"score": 1.6,
"confidence": 0.62,
"legend": { "0": "low", "1": "medium", "2": "high" },
"probabilities": { "0": 0.02, "1": 0.36, "2": 0.62 }
}
},
"usage": { "input_tokens": 190, "output_tokens": 0 }
}
Langkah 4: baca bidang probabilitas
Baca angka-angka dengan cermat:
nouladalah probabilitas "ya". 0.97 berarti Jev 97% yakin tiket ini membutuhkan agen manusia.choiceadalah opsi dengan probabilitas tertinggi,probabilitiesmencantumkan setiap opsi, danconfidencememberi tahu seberapa menentukan pilihan tersebut. Rute 0.98 aman untuk diotomatisasi; rute 0.51 dengan 0.47 pada pilihan kedua adalah seperti lemparan koin.scoreadalah posisi tertimbang probabilitas di seluruh tingkatan yang terurut, jadi 1.6 berada di antara "medium" (1) dan "high" (2).legendmemetakan setiap indeks kembali ke labelnya, danprobabilitiesmenunjukkan sebaran lengkapnya.
Karena hasilnya adalah distribusi, bukan label, Anda yang menetapkan ambang batasnya, bukan model. Itulah mengapa penegasan di Langkah 6 menguji angka.
Langkah 5: panggilan yang sama dengan Python SDK
Instal SDK; klien mengambil TYPESAFE_API_KEY dari lingkungan:
pip install typesafe-sdk
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient
with TypeSafeClient() as client:
response = client.system_one(
state="My card was charged twice for one order and nobody has replied in three days.",
questions={
"needs_review": Noul(
instructions="Does this ticket need a human agent?",
criteria={"true": "money, legal, or an unanswered complaint",
"false": "a routine question a bot can close"},
),
"route": Choice(
instructions="Route this ticket to a team.",
criteria={"billing": "payment or charge problems",
"shipping": "delivery problems",
"technical": "application bugs"},
),
"urgency": Score(
instructions="How urgent is this ticket?",
criteria=["low", "medium", "high"],
),
},
)
print(response.nouls["needs_review"].noul)
print(response.choices["route"].choice, response.choices["route"].probabilities)
print(response.scores["urgency"].score)
Jawaban dikelompokkan berdasarkan jenis pada objek respons (nouls, choices, scores). Terdapat JavaScript SDK dengan bentuk yang sama, dan jika Anda sudah menggunakan Vercel AI Gateway, experimental_evaluate dari AI SDK 7 memanggil model sebagai typesafe-ai/jev, dengan satu perbedaan: jenis pertanyaan boolean mengembalikan bidang probability alih-alih noul.
Langkah 6: simpan dan uji kunci API Jev di Apidog
Curl membuktikan bahwa kunci berfungsi sekali. Apidog membuat permintaan dapat dijalankan ulang, dapat diasertasi, dan dapat di-mock untuk seluruh tim.
Simpan kunci sebagai variabel rahasia. Buat lingkungan bernama TypeSafe dan tambahkan TYPESAFE_API_KEY sebagai rahasia sehingga nilainya tetap tertutup di UI dan tidak termasuk dalam ekspor; lingkungan Apidog dan variabel rahasia menjelaskan pengaturannya. Atur otentikasi pada permintaan ke Token Bearer dengan {{TYPESAFE_API_KEY}} sebagai nilainya.
Bangun permintaan POST. Tambahkan POST ke https://api.typesafe.ai/v1/systemone, tempel isi JSON dari Langkah 3, dan kirimkan. Panel respons akan menampilkan pohon jawaban, sehingga Anda dapat memeriksa probabilitas sebelum menulis penegasan.
Tegaskan pada probabilitas, bukan pada prosa. Di pembuat penegasan visual, arahkan ekspresi JSONPath ke bidang yang Anda minati:
$.answers.needs_review.noullebih besar dari0.9$.answers.route.choicesama denganbilling$.answers.route.probabilities.billinglebih besar dari0.8$.answers.urgency.scorelebih besar dari atau sama dengan1$.usage.input_tokenskurang dari1000
Jika Anda lebih suka skrip, post-processor menerima API pm yang familier:
const body = pm.response.json();
pm.test("ticket flagged for a human", () => {
pm.expect(body.answers.needs_review.noul).to.be.above(0.9);
});
pm.test("routed to billing", () => {
pm.expect(body.answers.route.choice).to.eql("billing");
});
Simpan sebagai skenario uji. Masukkan permintaan ke dalam skenario uji dengan CSV kecil berisi tiket dan rute yang diharapkan, dan jalankan pada setiap perubahan pada instruksi atau kriteria Anda. Edit prompt adalah perubahan kode; skenario sepuluh baris akan menangkap perubahan yang secara diam-diam memindahkan 0.95 menjadi 0.6. Skenario yang sama berjalan di CI melalui Apidog CLI, sehingga regresi akan memblokir penggabungan.
Mock bentuk respons yang dideklarasikan. Definisikan skema respons pada endpoint (tiga objek jawaban ditambah usage), dan mock cerdas Apidog akan segera menyajikan probabilitas palsu yang realistis. Frontend dapat membangun badge "butuh tinjauan" dan UI perutean berdasarkan mock sebelum backend dikirimkan, kemudian menukar URL mock dengan endpoint nyata dengan satu perubahan lingkungan.
Untuk perencanaan kursi: Paket Gratis Apidog mencakup 4 pengguna, dan tingkatan berbayar dihitung per kursi.
Ambang batas dalam kode
Setelah penegasan berhasil, angka yang sama akan mendorong logika produksi. Simpan ambang batas di satu tempat dan beri nama:
REVIEW_THRESHOLD = 0.9
AUTO_ROUTE_CONFIDENCE = 0.85
needs_review = response.nouls["needs_review"].noul >= REVIEW_THRESHOLD
route = response.choices["route"]
if route.confidence >= AUTO_ROUTE_CONFIDENCE and not needs_review:
assign(ticket, team=route.choice)
else:
queue_for_human(ticket, suggested=route.choice)
Catat peta probabilities lengkap dengan setiap keputusan agar Anda dapat menyetel ambang batas dari data nyata nanti, dan jadikan tinjauan manusia sebagai default ketika kepercayaan rendah; model memberi tahu Anda bahwa ia tidak yakin.
Batas, harga, dan model
Langsung dari halaman model TypeSafe:
| Item | Nilai |
|---|---|
| Harga | $0.042 per juta token input; token output tidak dikenakan biaya |
| Batas laju | 250.000 token per detik dan 1.200 permintaan per menit, disesuaikan secara dinamis di bawah beban |
| Kontek | 64k token per permintaan; 32k untuk status ditambah pertanyaan tunggal terpanjang |
| Input | Hanya teks: string, objek JSON, atau array. Tanpa gambar, audio, atau video |
| Bahasa | Bahasa Inggris memberikan akurasi terbaik; bahasa lain berfungsi tetapi tidak sama baiknya |
| Alias | jev-latest adalah default stabil; jev-preview melacak rilis terbaru |
Dengan harga tersebut, satu juta tiket singkat berbiaya kurang dari $10. TypeSafe juga menyatakan bahwa Jev tidak dilatih dengan permintaan atau respons pelanggan.
Kesalahan umum dan cara memperbaikinya
| Status | Arti | Perbaikan |
|---|---|---|
| 401 Tidak Sah | Kunci API hilang atau tidak valid | Periksa header Authorization: Bearer dan pastikan variabel lingkungan diatur di shell atau lingkungan tempat Anda menjalankan |
| 422 Entitas Tidak Dapat Diproses | Isi permintaan gagal validasi | Penyebab umum: choice tanpa criteria, score dengan kurang dari 2 level, kesalahan penulisan type, atau questions dikirim sebagai array bukan peta (map) |
| 429 Terlalu Banyak Permintaan | Batas laju terlampaui | Mundur dengan jitter dan coba lagi; kelompokkan beberapa pertanyaan menjadi satu permintaan untuk mengurangi jumlah permintaan |
| 529 Kelebihan Beban | TypeSafe sementara kelebihan beban | Coba lagi dengan exponential backoff; permintaan aman untuk diulang |
Kesalahan 422 adalah yang paling sering Anda temui saat melakukan iterasi; skema endpoint dari Langkah 6 menangkap sebagian besar dari mereka sebelum permintaan meninggalkan mesin Anda.
FAQ
Apakah ada tingkatan gratis untuk API Jev? Dokumen publik mencantumkan harga per token dan tidak menjelaskan tingkatan gratis atau kredit awal, dan aksesnya sendiri saat ini masih dalam daftar tunggu. Periksa konsol setelah undangan Anda tiba untuk penawaran saat ini, dan anggap angka apa pun yang Anda lihat di tempat lain sebagai tidak resmi.
Bisakah saya mendapatkan beberapa jawaban dari satu permintaan? Ya. questions adalah peta (map), jadi noul, choice, dan score semuanya dapat dijalankan terhadap satu status dalam satu panggilan. Ini lebih murah daripada tiga permintaan dan menjaga konsistensi jawaban karena mereka berbagi satu input.
Bagaimana ini berbeda dari output terstruktur pada model chat? Output terstruktur memaksa model bahasa untuk mengeluarkan JSON yang valid, tetapi nilai-nilai di dalamnya masih berupa token yang dihasilkan, dan bidang "confidence" adalah teks yang ditulis model tentang dirinya sendiri. Jev mengembalikan probabilitas terukur sebagai output aslinya, itulah sebabnya Anda dapat menegaskan noul > 0.9 dan mempercayai perbandingannya.
Apakah saya memerlukan SDK TypeSafe jika saya menggunakan Vercel? Tidak. Vercel AI SDK mengekspos Jev melalui experimental_evaluate dengan typesafe-ai/jev sebagai ID model. Anda akan mengautentikasi dengan kunci AI Gateway Anda alih-alih kunci TypeSafe, dan jawaban boolean akan kembali sebagai probability.
Langkah selanjutnya
Anda sekarang memiliki kunci API Jev, permintaan yang berfungsi di curl dan Python, serta pemahaman yang jelas tentang noul, choice, dan score. Masukkan permintaan ke Apidog, tambahkan penegasan probabilitas, dan simpan skenario uji sehingga pengeditan prompt diuji seperti kode. Unduh Apidog untuk mengikuti.
