AkilliAyna-Qwen3B
TUBITAK 2209-A kapsaminda Firat Universitesi'nde gelistirilen Yapay Zeka Destekli Akilli Ayna projesine ozel fine-tune edilmis Turkce dil modelidir.
Model Bilgileri
| Ozellik | Deger |
|---|---|
| Base Model | Qwen/Qwen2.5-3B-Instruct |
| Fine-tuning Yontemi | QLoRA (4-bit NF4) |
| Egitim Ornegi | 3,350 Turkce ornek |
| Egitilen Parametre | 14.9M / 3.1B (yuzde 0.48) |
| Final Loss | ~0.13 |
| Egitim Suresi | ~1.5-2 saat (NVIDIA RTX 4060 Laptop 8GB) |
| Dil | Turkce |
| Lisans | Apache 2.0 |
Ne Yapar?
Bu model, sesli asistan olarak kullanilmak uzere egitilmistir. Kullanicinin SQLite veritabanindan gelen gorev listesini analiz ederek Turkce sesli sorgulara dogal yanit uretir.
Desteklenen komutlar:
- Bugun / yarin / bu hafta ne var?
- Sabah / ogleden sonra / aksam planlarim nedir?
- En yogun / en az yogun gun hangisi?
- Bos saatlerim hangileri?
- Gorev ekle yarin saat 10 toplanti
- Hatirla aksam ilac al
Hallusinasyon Engelleme
Model, gorev listesi bos oldugunda hic devreye girmez. Uygulama katmaninda has_no_tasks() kontrolu yapilir ve dogrudan "planin bulunmuyor" yaniti dondurulur. Bu sayede model tamamen bos context uzerinde calistirilmaz.
Egitim Verisi
3,350 Turkce ornek asagidaki kategorileri icermektedir:
- Gorev sorgulama (bugun, yarin, haftalik, sabah/aksam/ogleden sonra)
- Zaman dilimi analizi (en yogun gun, en az yogun gun, bos saatler)
- Sesle gorev ekleme (gorev ekle, hatirla, not al, listeye ekle)
- Genel sohbet (merhaba, tesekkurler vb.)
Veri hazirlama sureci:
- Orijinal 3,000 ornek revize edildi ("March" -> "Mart" donusumu, 1521 yerde)
- Yanlis output'lar duzeltildi (en yogun/en az yogun gun sorulari)
- Flutter'in gonderdigi {"tasks": [...]} formatina uygun hale getirildi
- 300 sesle gorev ekleme ornegi eklendi
- 50 genel sohbet ornegi eklendi
Fine-tuning Parametreleri
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=True,
)
lora_config = LoraConfig(
r=8,
lora_alpha=16,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
)
training_args = TrainingArguments(
num_train_epochs=3,
per_device_train_batch_size=2,
gradient_accumulation_steps=8,
learning_rate=2e-4,
fp16=True,
optim="paged_adamw_8bit",
lr_scheduler_type="cosine",
warmup_steps=10,
)
Kullanim
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "Rudblest/AkilliAyna-Qwen3B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
device_map="auto",
)
model.eval()
def sorgula(soru: str, gorev_listesi: str) -> str:
system = (
"Sen Turkce konusan akilli ayna asistanisin. "
"Asagidaki GOREV LISTESINDE yazan bilgileri kullanarak cevap ver. "
"Gorev listesinde olmayan hicbir seyi soyleme, uydurma, tahmin etme."
)
prompt = (
f"<|im_start|>system\n{system}<|im_end|>\n"
f"<|im_start|>user\n{soru}\n\nGOREV LISTESI:\n{gorev_listesi}<|im_end|>\n"
f"<|im_start|>assistant\n"
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=150,
temperature=0.1,
do_sample=True,
repetition_penalty=1.2,
pad_token_id=tokenizer.eos_token_id,
)
return tokenizer.decode(
outputs[0][inputs["input_ids"].shape[1]:],
skip_special_tokens=True
).strip()
# Ornek kullanim
gorevler = """- 09:00 sabah toplantisi
- 12:30 ogle yemegi randevusu
- 15:00 proje sunumu"""
yanit = sorgula("Bugun programim ne?", gorevler)
print(yanit)
# Cikti: "Bugun sabah 09:00'de toplantın var,
# 12:30'da ogle yemegi randevusu ve
# 15:00'de proje sunumun var."
HuggingFace Inference API
Bu model HuggingFace Dedicated Endpoint uzerinde servis edilmektedir. Flutter uygulamasi bu endpoint'e baglanarak sesli sorgulari isler.
import requests
API_URL = "https://YOUR_ENDPOINT.us-east-1.aws.endpoints.huggingface.cloud"
headers = {"Authorization": "Bearer hf_YOUR_TOKEN"}
def hf_sorgula(soru, gorev_listesi):
prompt = build_prompt(soru, gorev_listesi)
response = requests.post(API_URL, headers=headers, json={
"inputs": prompt,
"parameters": {
"max_new_tokens": 150,
"temperature": 0.1,
"repetition_penalty": 1.2,
"return_full_text": False,
}
})
return response.json()[0]["generated_text"]
Sistem Mimarisi
Bluetooth Mikrofon
|
Flutter Android App
|
speech_to_text (tr_TR)
|
HuggingFace Dedicated Endpoint
|
AkilliAyna-Qwen3B
|
flutter_tts (tr-TR)
|
Bluetooth Hoparlor
Sinirlamalar
- Yalnizca Turkce dil destegi
- Gorev listesi disindaki bilgileri bilmez (tasarim geregi)
- Uzun baglamsal konusmalarda (10+ tur) performans dustigunec duser
- Tarih/saat hesaplamalari uygulama katmaninda yapilmaktadir
Proje Hakkinda
- GitHub (Backend + LLM): https://github.com/RudblestThe2nd/AkilliAynaAsistanLLM
- GitHub (Flutter App): https://github.com/RudblestThe2nd/TubitakAkilliAynaMobileFinal
- Kurum: Firat Universitesi
- Program: TUBITAK 2209-A
- Danisman: Doc. Dr. Sinem Akyol
Alinti
@misc{akilliayna2026,
title={AkilliAyna-Qwen3B: Fine-tuned Turkish Voice Assistant for Smart Mirror},
author={Parcal, Berkay and Kazan, Esra and Kaya, Sevval},
year={2026},
institution={Firat University},
note={TUBITAK 2209-A Research Project},
url={https://huggingface.co/Rudblest/AkilliAyna-Qwen3B}
}
- Downloads last month
- -