Model her kullanıcı mesajına tek bir JSON nesnesiyle cevap verir:
{
"agents": ["prepareReservationCommand", "executeReservationAction"],
"answer": "Rezervasyon işlemi hazırlandı..."
}
agents: uygulamanın sırayla çağırması gereken backend fonksiyonlarıdır.
- Chit-chat veya desteklenmeyen isteklerde
agents boş liste ([]) olarak döner.
answer: kullanıcıya gösterilecek metindir.
{totalSales}, {currencyCode}, {stockResultList} gibi placeholder'lar uygulama tarafından runtime sırasında doldurulur.
Tool gerektirmeyen bir örnek:
{
"agents": [],
"answer": "Merhaba! Nasıl yardımcı olabilirim?"
}
Kullanım
import json
import torch
from transformers import AutoModelForImageTextToText, AutoTokenizer
model_id = "adisyonist/waiter-0.8B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
messages = [
{
"role": "user",
"content": "Masa 5 için 2 adet lahmacun ve 1 ayran ekler misin?"
}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = tokenizer(
text,
return_tensors="pt"
).to(model.device)
im_end_id = tokenizer.convert_tokens_to_ids("<|im_end|>")
with torch.inference_mode():
output = model.generate(
**inputs,
max_new_tokens=384,
do_sample=False,
eos_token_id=im_end_id,
pad_token_id=tokenizer.pad_token_id
)
generated = output[0][inputs["input_ids"].shape[1]:]
raw = tokenizer.decode(
generated,
skip_special_tokens=True
).strip()
result = json.loads(raw)
print(result["agents"])
print(result["answer"])
Örnek çıktı:
{
"agents": ["prepareAddItems", "executeTableAction"],
"answer": "Masa işlemi hazırlandı: “Masa 5 için 2 adet lahmacun ve 1 ayran ekler”. Uygulamamı onaylıyor musunuz?"
}
Eğitim detayları
- Temel model:
Qwen/Qwen3.5-0.8B
- Yöntem: QLoRA
- Quantization: 4-bit NF4 + double quantization
- Compute dtype: BF16
- LoRA rank (r): 16
- LoRA alpha: 32
- LoRA dropout: 0.05
- Eğitim framework'ü: TRL SFTTrainer
- Eğitim dili: 43 dil
- Dataset boyutu: 532.856 örnek
- Held-out test seti: 53.286 örnek
Değerlendirme
Model, eğitim sırasında kullanılmamış 53.286 örnekten oluşan held-out test seti üzerinde değerlendirilmiştir.
- Adjusted agent exact accuracy: %99,40
- Raw agent exact accuracy: %98,81
- JSON validity: %99,41
- Answer exact-match: %92,57
Answer exact-match, üretilen cevabın veri setindeki beklenen cevapla birebir aynı olup olmadığını ölçer. Semantik olarak doğru fakat farklı şekilde ifade edilen cevaplar da bu metrikte yanlış kabul edilir.
Test sırasında görülen 316 geçersiz JSON çıktısının büyük bölümü generation sırasında kullanılan token limitinin cevabı yarıda kesmesinden kaynaklanmıştır. Bu örneklerin agent listeleri ayrıca incelendiğinde agent seçiminin doğru olduğu görülmüştür.
Bu nedenle düzeltilmiş agent exact accuracy değeri %99,40 olarak hesaplanmıştır.
Bilinen sınırlamalar
Model, Adisyonist POS senaryoları için özelleştirilmiştir ve genel amaçlı bir asistan olarak kullanılması önerilmez.
Modelin desteklediği senaryolar arasında sipariş, masa, rezervasyon, stok, personel, menü ve satış işlemleri bulunmaktadır.
Bilinen hata alanları:
- desteklenmeyen isteklerde tool seçimi ile
agents: [] arasındaki sınır durumları,
- kategori ve tek ürün kapsamının zaman zaman karıştırılması,
getSalesSummary için veri setinde birden fazla response-template bulunması,
- birbirine yakın bazı analytics tool'larının zaman zaman karıştırılması,
- nadir çok dilli cevap kaymaları,
- bazı multi-intent sorgularda agent zincirinin karışması.
Model çıktısı JSON formatındadır; doğrudan serbest metin cevap beklenmemelidir.
Lisans
Bu model, Qwen/Qwen3.5-0.8B temel modeli üzerine fine-tune edilmiştir ve Apache License 2.0 altında yayınlanmaktadır.