AiHubMix'te Jev Nasıl Çağrılır: Yapılandırılmış Sınıflandırma Eğitimi

AIHubMix5 dk okuma
AiHubMix'te Jev Nasıl Çağrılır: Yapılandırılmış Sınıflandırma Eğitimi

Kısa cevap: jev-1.13 metin üretmez. https://aihubmix.com/v1/systemone adresine bir metin parçası ve adlandırılmış bir dizi soru gönderirsiniz; karşılığında, sorularınızın adlarıyla eşleşen tipli yanıtlar alırsınız: bir kategori, bir puan veya bir olasılık. Ayrıştırılacak bir şey yoktur. Aşağıda çalışan bir istek örneği, tam yanıt biçimi ve doğruluğunuzu sessizce düşürecek tek bir tasarım hatası yer alıyor.

Jev ne için kullanılır

Bir paragrafa değil, bir değerlendirmeye ihtiyacınız olduğunda kullanın: destek talebi yönlendirme, önem derecesi belirleme, aciliyet işaretleme, içerik filtreleme. Model sayfası bunu açıkça belirtir: "Metin üretimi yok, ayrıştırılacak bir şey yok."

Açıklama, özet veya serbest biçimli herhangi bir çıktıya ihtiyacınız varsa bunun yerine normal bir sohbet modeli kullanın. jev bu tür çıktıları üretemez.

Başlamadan önce

  • [ ] Python 3 kurulu olmalı (standart kütüphane yeterlidir)
  • [ ] Bir AiHubMix hesabı ve API anahtarı
  • [ ] Anahtar AIHUBMIX_API_KEY olarak dışa aktarılmış olmalı, kaynak kodda asla sabit kodlanmamalı

OpenAI SDK'sına, LangChain'e veya requests paketine ihtiyacınız yok.

Adım 1 — Uç noktayı öğrenin

POST https://aihubmix.com/v1/systemone
Authorization: Bearer YOUR_KEY
Content-Type: application/json

Bu, model için özel bir yoldur, değildir /v1/chat/completions. OpenAI uyumlu istemciler bunu çağıramaz. Düz HTTP kullanın.

Adım 2 — Soru türlerinizi seçin

Üç tür vardır ve bunları tek bir istekte serbestçe karıştırabilirsiniz:

TürKullanım amacıSağladığınız
choiceTek kategori seçimicriteria bir sözlük olarak: etiket → tanım
scoreSıralı bir ölçekte derecelendirmecriteria bir liste olarak, en düşükten başlayarak
noulEvet/hayır değerlendirmesiinstructions dışında hiçbir şey yok

Adım 3 — İsteği oluşturun

state, değerlendirilecek metindir. questions anahtarları sizin belirlediğiniz adlardır; yanıt aynı adları kullanır.

payload = {
    "model": "jev-1.13",
    "state": "Hi, I have been trying to connect my Stripe account for 3 days "
             "and it keeps failing. I am losing sales. Please help ASAP.",
    "questions": {
        "department": {
            "type": "choice",
            "instructions": "Which team should handle this",
            "criteria": {
                "billing":   "Payment or subscription issues",
                "technical": "Bugs or integration problems",
                "sales":     "Pricing or account questions",
            },
        },
        "frustration": {
            "type": "score",
            "instructions": "How frustrated the customer appears",
            "criteria": [
                "Calm, just stating facts",
                "Frustrated but civil",
                "Very angry, strong language",
            ],
        },
        "is_urgent": {
            "type": "noul",
            "instructions": "The message conveys urgency or time-sensitivity",
        },
    },
}

Adım 4 — Standart kütüphaneyle gönderin

import json, os, urllib.error, urllib.request

def ask(payload):
    req = urllib.request.Request(
        "https://aihubmix.com/v1/systemone",
        data=json.dumps(payload).encode(),
        headers={"Authorization": "Bearer " + os.environ["AIHUBMIX_API_KEY"],
                 "Content-Type": "application/json"},
        method="POST",
    )
    try:
        with urllib.request.urlopen(req, timeout=60) as r:
            return json.loads(r.read())
    except urllib.error.HTTPError as e:
        raise SystemExit(f"HTTP {e.code}: {e.read().decode(errors='replace')[:500]}")

İstek oluşturmayı bir fonksiyonun içinde tutun. İsteği modül düzeyinde oluşturup gönderirseniz, dosyayı içe aktarmak çağrıyı yeniden tetikler ve token harcar.

Adım 5 — Yanıtları okuyun

Her yanıt değerini, type değerine karşılık gelen bir anahtar altında saklar; bu nedenle tek bir erişimci üç türün hepsini kapsar:

data = ask(payload)
for name, ans in data["answers"].items():
    kind = ans["type"]
    print(name, kind, ans[kind], ans.get("confidence"))
print("usage:", data.get("usage"))

Doğrulanmış çıktı:

department   choice  billing   0.51
frustration  score   1         1
is_urgent    noul    1         None
usage: {'input_tokens': 424, 'output_tokens': 73}

Adım 6 — Tam zarfı anlayın

Yazdırma döngüsü kullanışlı alanları gizler. Bir score yanıtına ait ham JSON:

{
  "type": "score",
  "score": 1,
  "legend": {"0": "Calm, just stating facts", "1": "Frustrated but civil", "2": "Very angry, strong language"},
  "probabilities": {"0": 0, "1": 1, "2": 0},
  "confidence": 1
}
  • legend, indeksi kendi ifadelerinize geri eşler; tam sayı kendini açıklar, bu yüzden kodunuzda ayrı bir arama tablosuna ihtiyacınız yoktur.
  • probabilities tam dağılımı verir; neredeyse eşit olan sonuçları tespit etmek için kullanışlıdır.
  • noul alanında confidence alanı yoktur. Onun sinyali olasılığıdır.

Üst düzeyde ayrıca usage, id, provider (TypeSafe) ve çözümlenmiş arka uç sürümü typesafe/jev-1.13-20260917 döner.

Doğruluğunuza mal olan hata

Yukarıdaki istekte department, 0.51 güvenle billing döndürdü. Aynı isteği tekrarladığımızda aynı etiket 0.38 ile döndü — yanıt kararlıydı, ama belirtilen kesinlik kararlı değildi.

Sebep modelde değil, kriterlerde. billing, "Ödeme veya abonelik sorunları", technical ise "Hatalar veya entegrasyon sorunları" olarak tanımlanmış. Sürekli başarısız olan bir Stripe entegrasyonu gerçekten iki kategoriye de uyar. Model, şemaya yazılmış bir belirsizliği yansıtıyordu.

Üretime almadan önce iki kural:

  1. choice kriterlerini birbirini dışlayacak şekilde yazın. Bir insan iki etiket arasında tereddüt edecekse, model de tereddüt edecektir.
  2. Bir güven eşiği belirleyin ve düşük güvenli sonuçları karar olarak kabul etmek yerine bir insan kuyruğuna yönlendirin. Belirsizliğini kabul eden bir model, bunu gizleyen bir modelden daha değerlidir.

Yayın öncesi kontrol listesi

  • [ ] Anahtar ortamdan veya VCS'nizin yok saydığı 600 modlu bir dosyadan yüklenmiş
  • [ ] choice kriterleri çakışma açısından gözden geçirilmiş
  • [ ] Güven eşiği tanımlanmış ve altında bir yedek yol var
  • [ ] noul yanıtları ayrı olarak işleniyor — confidence taşımazlar
  • [ ] Kullanılmayan sorular kaldırılmış (3 soru 424 girdi token'ı, 2 soru 355 maliyetindeydi)
  • [ ] 2xx dışındaki yanıtlar ham gövdesiyle birlikte kaydediliyor

SSS

OpenAI SDK'sını kullanabilir miyim? Hayır. /v1/systemone, OpenAI uyumlu bir yol değildir.

Jev bir cümle veya özet döndürebilir mi? Hayır. Yalnızca sizin tanımladığınız tipli sorulara yanıt verir.

İstek başına kaç soru sorulabilir? Doğrulanmış testlerde iki ve üç soru kullanıldı. Her soru girdi ve çıktı token'ı ekler, bu yüzden yalnızca üzerinde işlem yapacaklarınızı dahil edin.

Bir sürüm takma adı var mı? Model sayfası, jev-1.13 ile birlikte bir jev-latest takma adını listeler. Tekrarlanabilirlik önemliyse açık sürümü sabitleyin.

Maliyeti nedir? Model sayfası girdi token'ları için $0.0462 / M, çıktı token'ları için $0 / M fiyatını yayımlar. Bunlar satıcının verileridir — bütçe yapmadan önce güncel fiyatı doğrulayın.

Bağlam penceresi nedir? Model sayfası tutarsızdır: başlıkta 64K, sağlayıcı tablosunda 32K yazar. Herhangi birine güvenmeden önce, kendi en uzun girdinizle doğrulayın.

Bu rehberin kapsamı

Yukarıdaki her şey tek bir girdi üzerinde üç canlı çağrıyla doğrulandı. Gecikme süresi, toplu işleme, verim veya örneğe benzemeyen girdilerdeki davranış kapsam dışıdır. Güven kayması yeniden üretilmiş bir gözlemdir, ölçülmüş bir hata oranı değildir — bir eşik belirlemeden önce kendi verilerinizle tekrarlayın.

AiHubMix'te başlayın

jev-1.13, AiHubMix üzerinden kullanılabilir; model sayfası bu eğitimde değinilen her şeyi içerir: /v1/systemone uç noktası, criteria biçimleriyle üç soru türü, tüm yanıt alanları ve $0.0462 / M girdi token'ı ile $0 / M çıktı token'ı olarak yayımlanan fiyat. jev-latest takma adı en yeni sürüme çözümlenir, bu yüzden sürümler değiştikçe güncel kalır.

Buradan başlayın: https://aihubmix.com/model/jev-latest

Sonraki adımlar:

  1. Bir AiHubMix hesabı oluşturun ve bir API anahtarı alın
  2. 3. Adımdaki isteği ve 4. Adımdaki ask() fonksiyonunu kopyalayın
  3. state yerine kendi kuyruğunuzdaki gerçek bir kaydı koyun
  4. Sonucu, bu kaydı bugün nasıl sınıflandırdığınızla karşılaştırın

Bu rehber faydalı olduysa, yapılandırılmış çıktı veren modeller ve sınıflandırma hatları hakkındaki gelecek yazılar için abone olun.

Birden çok yapay zekâ sağlayıcısına tek ağ geçidi. Üretim için tasarlandı.

AIHubMix sitesini ziyaret edin