Jev, TypeSafe AI'ın karar modelidir. Ona bir durum parçası ve bir dizi tipik soru gönderirsiniz, o da düz yazı yerine olasılıklarla yanıtlar. Bu rehber, Jev API anahtarını ve ilk isteğinizi kapsar; Jev'in ne olduğu ve neden metin yerine sayılar döndürdüğü hakkında bilgi edinmek için önce Jev nedir yazısını okuyun. Arama sonuçları karmaşık olduğundan açıklık getirelim: bu, TypeSafe AI modeli olan Jev'dir, YouTuber FaZe Jev veya JEV aşısı değildir.
Bir Jev API anahtarı, diğer tüm taşıyıcı tokenlar gibi çalışır, bu nedenle bu kalıba yabancıysanız, API anahtarı nedir yazısı temel bilgileri kapsar. Doğrudan API erişimi erken erişimdedir, bu yüzden ilk adım bekleme listesinden çıkmaktır. Bundan sonra anahtarı oluşturacak, istek yapısını öğrenecek, curl ve Python SDK ile uç noktayı çağıracak, olasılık alanlarını okuyacak ve isteği bu olasılıklar üzerindeki onaylamalarla birlikte Apidog'a bağlayacaksınız. Bekleyemiyorsanız, aynı model Vercel AI Gateway'de bekleme listesi olmadan mevcuttur; SSS bu rotayı kapsar.
Adım 1: erken erişim elde edin, ardından anahtarı oluşturun
Bu yazı itibarıyla Jev erken erişimdedir. TypeSafe'in lansman gönderisi, "geliştiricileri bekleme listesinden mümkün olan en kısa sürede çıkardıklarını" belirtiyor, bu yüzden typesafe.ai adresindeki bekleme listesine katılın ve konsol davetini bekleyin; henüz self-servis kayıt yok. Konsol hesabınız etkinleştiğinde, console.typesafe.ai/settings/keys adresine gidin ve bir anahtar oluşturun. Bir kez kopyalayın ve bir parola gibi davranın.
Koda yapıştırmak yerine bir ortam değişkeni olarak dışa aktarın:
export TYPESAFE_API_KEY="ts_..."
Resmi curl örnekleri ve Python SDK'sı, TYPESAFE_API_KEY değişkenini ortamdan okur, bu nedenle tek bir değişken aşağıdaki her örneği kapsar. Bir anahtar bir commit'e düşerse, onu konsolda döndürün ve repo üzerinde bir API anahtarı sızıntısı kontrolü yapın.
Adım 2: istek yapısını anlayın
Her Jev çağrısı, TypeSafe API referansında belgelenmiş üç gövde alanı içeren tek bir POST https://api.typesafe.ai/v1/systemone çağrısıdır:
| Alan | Tip | Ne İşe Yarar |
|---|---|---|
model |
dize | jev-latest (bugün jev-1.13.0 olarak çözümlenir) veya en yeni yapı için jev-preview |
state |
dize, nesne veya dizi | Değerlendirilecek içerik: bir bilet, bir JSON kaydı, bir mesaj geçmişi |
questions |
adın soruya eşlemesi | Jev'in duruma göre yanıtladığı tipik sorular |
Her soru üç ilkelden biridir:
| İlkel | İstek Kriterleri | Yanıt Alanları |
|---|---|---|
noul (evet/hayır) |
isteğe bağlı {"true": "...", "false": "..."} |
noul: 0 (hayır) ile 1 (evet) arası |
choice |
seçeneğin açıklamaya zorunlu eşlemesi, en fazla 255 seçenek | seçenek başına choice, confidence, probabilities |
score |
2 ila 10 seviye açıklamasından oluşan zorunlu sıralı dizi | seviye başına score, confidence, legend, probabilities |
Yanıt ayrıca model ve usage.input_tokens / usage.output_tokens içerir. Farklı türdeki sorular tek bir durumu paylaşabilir ve tek bir gidiş-dönüşte geri dönebilir.
Adım 3: curl ile ilk isteği yapın
Bu istek, tek bir destek bileti üzerinde üç ilkelin hepsini çalıştırır:
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"]
}
}
}'
Bir yanıt şöyle görünür (değerler açıklayıcıdır):
{
"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 }
}
Adım 4: olasılık alanlarını okuyun
Sayıları hassas bir şekilde okuyun:
noul, "evet" olasılığıdır. 0.97, Jev'in bu biletin bir insana ihtiyaç duyduğundan %97 emin olduğu anlamına gelir.choice, en yüksek olasılıklı seçenektir,probabilitiesher seçeneği listeler veconfidenceseçimin ne kadar belirleyici olduğunu söyler. 0.98'lik bir rota otomatikleştirmek için güvenlidir; ikinci sırada 0.47 olan 0.51'lik bir rota yazı tura gibidir.score, sıralı seviyelerdeki olasılık ağırlıklı konumdur, bu nedenle 1.6 "orta" (1) ve "yüksek" (2) arasında yer alır.legendher dizini kendi etiketine eşler veprobabilitiestam dağılımı gösterir.
Çıktı bir etiket değil, bir dağılım olduğu için eşiği siz belirlersiniz, model değil. Bu nedenle Adım 6'daki onaylamalar sayıları test eder.
Adım 5: Python SDK ile aynı çağrı
SDK'yı kurun; istemci TYPESAFE_API_KEY değişkenini ortamdan alır:
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)
Yanıtlar, yanıt nesnesinde türlerine göre gruplandırılmıştır (`nouls`, `choices`, `scores`). Aynı şekilde bir JavaScript SDK'sı da bulunmaktadır ve eğer zaten Vercel AI Gateway kullanıyorsanız, AI SDK 7'den `experimental_evaluate` modeli `typesafe-ai/jev` olarak çağırır, tek farkla: boole soru türü `noul` yerine bir `probability` alanı döndürür.
Adım 6: Jev API anahtarını Apidog'da depolayın ve test edin
Curl anahtarın bir kez çalıştığını kanıtlar. Apidog, isteği tüm ekip için tekrar çalıştırılabilir, onaylanabilir ve taklit edilebilir hale getirir.
Anahtarı gizli bir değişken olarak depolayın. `TypeSafe` adlı bir ortam oluşturun ve `TYPESAFE_API_KEY`'i gizli olarak ekleyin, böylece değeri kullanıcı arayüzünde maskeli kalır ve dışa aktarımların dışında tutulur; Apidog ortamları ve gizli değişkenleri kurulumu adım adım anlatır. İstekteki yetkilendirmeyi, değeri `{{TYPESAFE_API_KEY}}` olarak ayarlayarak Taşıyıcı Token olarak ayarlayın.
POST isteğini oluşturun. `https://api.typesafe.ai/v1/systemone` adresine bir POST ekleyin, Adım 3'teki JSON gövdesini yapıştırın ve gönderin. Yanıt paneli yanıt ağacını gösterir, böylece bir onaylama yazmadan önce olasılıkları kontrol edebilirsiniz.
Düz yazı yerine olasılıklar üzerinde onaylama yapın. Görsel onaylama oluşturucusunda, ilgilendiğiniz alanlara JSONPath ifadeleri yönlendirin:
- `$.answers.needs_review.noul` `0.9`'dan büyüktür
- `$.answers.route.choice` `billing`'e eşittir
- `$.answers.route.probabilities.billing` `0.8`'den büyüktür
- `$.answers.urgency.score` `1`'den büyük veya eşittir
- `$.usage.input_tokens` `1000`'den küçüktür
Komut dosyalarını tercih ediyorsanız, işlem sonrası (`post-processor`) tanıdık `pm` API'sini kabul eder:
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");
});
Bir test senaryosu olarak kaydedin. İsteği, küçük bir bilet ve beklenen rota CSV'si içeren bir test senaryosuna bırakın ve talimatlarınızda veya kriterlerinizde yapılan her değişiklikte çalıştırın. Prompt düzenlemeleri kod değişiklikleridir; on satırlık bir senaryo, 0.95'i sessizce 0.6'ya taşıyan düzenlemeyi yakalar. Aynı senaryo, Apidog CLI aracılığıyla CI'da çalışır, böylece bir regresyon birleşmeyi engeller.
Tanımlanmış yanıt şeklini taklit edin. Uç noktada yanıt şemasını tanımlayın (üç yanıt nesnesi artı `usage`) ve Apidog'un akıllı sahtesi hemen gerçekçi sahte olasılıklar sunar. Ön uç, arka uç gönderilmeden önce "incelenmesi gerekiyor" rozetini ve yönlendirme UI'sini sahteye karşı oluşturabilir, ardından tek bir ortam değişikliğiyle sahte URL'yi gerçek uç noktayla değiştirebilir.
Koltuk planlaması için: Apidog'un Ücretsiz planı 4 kullanıcı içerir ve ücretli katmanlar kişi başına ücretlendirilir.
Koddaki eşikler
Onaylamalar geçtikten sonra, aynı sayılar üretim mantığını yönlendirir. Eşikleri tek bir yerde tutun ve adlandırın:
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)
Her kararla birlikte tüm `probabilities` haritasını kaydedin, böylece daha sonra gerçek verilerden eşikleri ayarlayabilir ve güven düşük olduğunda varsayılan olarak insan incelemesini yapabilirsiniz; model size emin olmadığını söylüyor.
Sınırlamalar, fiyatlandırma ve modeller
TypeSafe modelleri sayfasından doğrudan:
| Öğe | Değer |
|---|---|
| Fiyat | Milyon giriş tokenı başına 0.042 dolar; çıkış tokenları ücretlendirilmez |
| Hız limitleri | Saniyede 250.000 token ve dakikada 1.200 istek, yüke göre dinamik olarak ayarlanır |
| Bağlam | İstek başına 64k token; durum için 32k artı en uzun tek soru |
| Giriş | Yalnızca metin: dize, JSON nesnesi veya dizi. Görüntü, ses veya video yok |
| Dil | İngilizce en iyi doğruluğu sağlar; diğer diller de çalışır ancak eşit derecede iyi değildir |
| Takma Adlar | jev-latest kararlı varsayılandır; jev-preview en yeni sürümü takip eder |
Bu fiyata bir milyon kısa bilet 10 doların altında çalışır. TypeSafe ayrıca Jev'in müşteri istekleri veya yanıtları üzerinde eğitilmediğini belirtiyor.
Sık karşılaşılan hatalar ve nasıl düzeltileceği
| Durum | Anlamı | Çözüm |
|---|---|---|
| 401 Yetkisiz | Eksik veya geçersiz API anahtarı | Authorization: Bearer başlığını ve ortam değişkeninin çalıştığınız kabukta veya ortamda ayarlı olduğunu kontrol edin |
| 422 İşlenemeyen Varlık | İstek gövdesi doğrulanamadı | Yaygın nedenler: kriterleri olmayan bir choice, 2'den az seviyeye sahip bir score, yanlış yazılmış bir type veya harita yerine dizi olarak gönderilen questions |
| 429 Çok Fazla İstek | Hız limiti aşıldı | Jitter ile geri çekilin ve tekrar deneyin; istek sayısını azaltmak için birkaç soruyu tek bir isteğe gruplandırın |
| 529 Aşırı Yüklendi | TypeSafe geçici olarak aşırı yüklendi | Üstel geri çekilmeyle tekrar deneyin; istek tekrar edilebilir |
İterasyon yaparken en çok karşılaşacağınız hata 422'dir; Adım 6'daki uç nokta şeması, istek makinenizden ayrılmadan önce bunların çoğunu yakalar.
SSS
Jev API için ücretsiz bir katman var mı? Genel belgeler token başına fiyatlandırmayı listeler ve ücretsiz bir katman veya başlangıç kredileri tanımlamaz; erişim şu an için bekleme listesindedir. Davetiniz geldiğinde mevcut teklif için konsolu kontrol edin ve başka bir yerde gördüğünüz herhangi bir rakamı resmi olmayan olarak kabul edin.
Tek bir istekten birden fazla yanıt alabilir miyim? Evet. questions bir harita olduğundan, bir noul, bir seçim ve bir skor tek bir çağrıda tek bir duruma karşı çalışabilir. Bu, üç istekten daha ucuzdur ve tek bir girdiyi paylaştıkları için yanıtları tutarlı tutar.
Bu, bir sohbet modelindeki yapılandırılmış çıktılardan ne kadar farklı? Yapılandırılmış çıktılar, bir dil modelini geçerli JSON yaymaya zorlar, ancak içindeki değerler hala oluşturulan tokenlardır ve bir "güven" alanı, modelin kendi hakkında yazdığı metindir. Jev, ölçülen olasılıkları doğal çıktı olarak döndürür, bu nedenle `noul > 0.9` onaylaması yapabilir ve karşılaştırmaya güvenebilirsiniz.
Vercel kullanıyorsam TypeSafe'in SDK'sına ihtiyacım var mı? Hayır. Vercel AI SDK, Jev'i `experimental_evaluate` aracılığıyla `typesafe-ai/jev` model kimliğiyle sunar. Bir TypeSafe anahtarı yerine AI Gateway anahtarınızla kimlik doğrulaması yapacaksınız ve boole yanıtı `probability` olarak geri dönecek.
Sonraki adımlar
Artık bir Jev API anahtarınız, curl ve Python'da çalışan bir isteğiniz ve `noul`, `choice` ve `score` hakkında net bir bilginiz var. İsteği Apidog'a ekleyin, olasılık onaylamalarını ekleyin ve test senaryosunu kaydedin, böylece prompt düzenlemeleri kod gibi test edilir. Takip etmek için Apidog'u indirin.
