Agent iş akışları · 2026-09-25
Jev kararını sohbet modeliyle kullanıcıya açıklama
Jev serbest metin üretmez; bir kararın kullanıcıya açıklanması gerektiğinde bu işi ayrı bir sohbet modeli yapar. Karar ile açıklamanın neden ayrı tutulduğunu, sohbet modeline ne verildiğini ve açıklamanın neden işlem başlatmadığını anlatır.
Kısa cevap
Jev serbest metin üretmez; tiplenmiş cevaplar döndürür. Bir talebin hangi ekibe gittiği ya da bir başvurunun neden incelemeye alındığı kullanıcıya anlatılacaksa, bu metni ayrı bir sohbet modeli yazar. Karar Jev'den, anlatım sohbet modelinden gelir ve iki iş birbirine karışmaz.
Bu ayrımın en önemli sonucu, uygulamanın yaptığı işlemin her zaman Jev'in tiplenmiş alanına dayanmasıdır. Açıklama metni kullanıcıya gösterilir, ama hiçbir işlemi başlatmaz ve kararı değiştiremez.
Karar ile açıklamayı neden ayırmak
Bir sohbet modelinden hem karar hem açıklama istendiğinde, kodun dallanacağı karar bir metnin içinden ayrıştırılmak zorunda kalır. Model biçimi değiştirebilir, fazladan açıklama ekleyebilir ya da açıklamada verdiği gerekçe ile seçtiği sonuç birbirini tutmayabilir. Hangisinin geçerli olduğuna karar vermek yine koda kalır.
Jev ile karar, choice ya da noul gibi tipi belli bir alandır ve kod doğrudan onu okur. Açıklamayı yazan model kararı yalnızca girdi olarak alır. Açıklama kötü yazılsa bile karar değişmez; en kötü durumda kullanıcıya daha az net bir metin gösterilmiş olur.
Sohbet modeline ne verilir
Açıklamayı yazan modele kararın kendisi, kullanıcının anlayacağı düzeyde kısa bir talep özeti ve metnin uzunluğu ile üslubuna dair birkaç kural yeterlidir. Modele kararın verildiğini ve yeniden karar vermemesi gerektiğini söylemek, açıklamanın kararı tartışmaya başlamasını önler.
Verilmemesi gerekenler de vardır. İç eşik değerleri, diğer soruların kullanıcıyı ilgilendirmeyen cevapları ve iç süreç adları açıklamaya sızdığında, kullanıcıya iç işleyişi anlatan bir metin ortaya çıkar. confidence düşükse açıklamanın bir karar bildirmek yerine talebin incelendiğini söylemesi, sonradan değişebilecek bir kararın kesinmiş gibi sunulmasını önler.
Sabit şablon ne zaman yeterlidir
Kararın az sayıda olası sonucu varsa, her sonuç için önceden yazılmış bir cümle çoğu zaman yeterlidir: "Talebiniz faturalama ekibine iletildi" gibi. Şablonun maliyeti ve bekleme süresi yoktur, her seferinde aynı şeyi söyler ve denetlenmesi kolaydır.
Sohbet modeli, açıklamanın kullanıcının kendi mesajına değinmesi gerektiğinde değer katar: talebin hangi kısmının neden o ekibe gittiğini ya da hangi bilginin eksik olduğunu kullanıcının kendi ifadeleriyle anlatmak gibi. İki yol birlikte de kullanılabilir: şablon hemen gösterilir, sohbet modelinin metni hazır olduğunda altına eklenir.
İki adımlı akış
Aşağıdaki örnek önce /v1/systemone ucunda Jev'den ekip kararını alıyor, sonra /v1/chat/completions ucunda ayrı bir sohbet modeline bu kararı açıklatıyor. Jev yalnızca /v1/systemone üzerinde yanıt verir; sohbet uçlarında çağrılamaz. Sohbet modeli ortam değişkeninden okunur, böylece açıklamayı yazan model değiştiğinde kod değişmez. Ekip ataması her zaman Jev'in alanına dayanır.
Jev kararı ve ayrı bir sohbet modeliyle açıklama
const base = process.env.LLMTR_BASE_URL + "/v1";
const headers = { Authorization: "Bearer " + process.env.LLMTR_API_KEY, "Content-Type": "application/json" };
// 1. Karar: Jev yalnizca /v1/systemone ucunda calisir.
const decision = await fetch(base + "/systemone", {
method: "POST", headers,
body: JSON.stringify({ model: "typesafe/jev", state: message, questions: QUESTIONS }),
}).then((r) => r.json());
const team = decision.answers.departman.choice;
const confident = decision.answers.departman.confidence >= 0.7; // ornek esik
// 2. Aciklama: ayri bir sohbet modeli, karari degistirmeden anlatir.
const explanation = await fetch(base + "/chat/completions", {
method: "POST", headers,
body: JSON.stringify({
model: process.env.CHAT_MODEL,
max_tokens: 200,
messages: [
{ role: "system", content: "Karar verilmistir; yeniden karar verme. Kullaniciya iki cumleyle, sade bir dille acikla." },
{ role: "user", content: JSON.stringify({ ekip: team, inceleniyor: !confident, talep_ozeti: summary }) },
],
}),
}).then((r) => r.json());
// Islem her zaman Jev alanina dayanir; aciklama metni yalnizca gosterilir.
await assignTicket(confident ? team : "insan_kuyrugu");
show(explanation.choices[0].message.content);
Veri politikası
Jev ile açıklamayı yazan sohbet modeli farklı sağlayıcılarda çalışabilir ve her birinin kendi veri politikası vardır. Açıklama isteğine giden içerik, o modelin sağlayıcısına gider. Bu yüzden sohbet modeline mesajın tamamı yerine kısa bir özet vermek, hem açıklamanın odağını korur hem de ikinci bir sağlayıcıya giden veriyi azaltır. Her modelin veri notu katalogdaki model sayfasında bulunur.
Maliyet ve gecikme
İki adımlı akışta maliyetin ve bekleme süresinin büyük kısmı sohbet modelindedir. Jev yalnızca girdi tokenı üzerinden, 1 milyon token başına 0,042 dolar ücretlendirilir ve cevabı tek parça döner; sohbet modeli ise çıktı tokenları için de ücret alır ve metni token token üretir.
Bu yüzden açıklama her karar için değil, kullanıcının gerçekten göreceği yerde üretilir. Bir talebin iç kuyruğa yönlendirilmesi gibi kullanıcıya görünmeyen kararlar yalnızca Jev ile tamamlanır. Açıklama gerekiyorsa, kararın uygulanmasını beklemeden arka planda üretilebilir.
Açıklamanın denetlenmesi
Açıklama kararı değiştiremese de kararla çelişen bir metin kullanıcıyı yanıltabilir. Basit kontroller bunu yakalar: metinde kararlaştırılan ekibin adının geçip geçmediği, belirlenen uzunluğun aşılıp aşılmadığı, kullanıcıya bir süre ya da sonuç sözü verilip verilmediği. Kontrolden geçmeyen ya da hiç gelmeyen bir açıklamanın yerine sabit şablon gösterilir.
Kullanıcıların açıklamalara verdiği tepkiler, örneğin aynı konuda yeniden yazmaları, metnin anlaşılır olup olmadığını gösterir. Bu geri bildirim açıklamanın dilini iyileştirmek için kullanılır; kararın kendisi Jev tarafında, kendi eşikleriyle ölçülmeye devam eder.
Sık sorulan sorular
Jev açıklama metni üretir mi?
Hayır. Jev tiplenmiş cevaplar döndürür: seçilen seçenek, olasılıklar, confidence ya da evet olasılığı. Kullanıcıya dönük metin gerekiyorsa ayrı bir sohbet modeli çağrılır.
Jev'i sohbet ucundan çağırabilir miyim?
Hayır. typesafe/jev yalnızca /v1/systemone üzerinde yanıt verir ve Playground'da görünmez. Sohbet ucuna gönderilen bir istek 400 unsupported_operation ile döner.
Açıklama kararı değiştirebilir mi?
Hayır. Uygulamanın işlemi Jev'in tiplenmiş alanına ve kendi kurallarına dayanır. Açıklama yalnızca kullanıcıya gösterilen metindir.
Her karar için açıklama üretmek gerekir mi?
Hayır. Açıklama yalnızca kullanıcının göreceği kararlarda gerekir. İç yönlendirme gibi görünmeyen kararlar yalnızca Jev ile tamamlanır.
Sohbet modeli çağrısı başarısız olursa ne olur?
Karar zaten Jev'den alınmış ve uygulanmıştır. Açıklamanın yerine o karar için önceden yazılmış sabit bir cümle gösterilir.