needle-tr
Türkçe Araç Çağırıcı (Tool Calling) ve Fine-Tuning Sistemi.
needle-tr, Türkçe dilinde fonksiyon / araç çağırma (function calling) yeteneklerine sahip yapay zeka modelleri geliştirmek, sentetik veri üretmek, LoRA ile fine-tuning yapmak ve Ollama üzerinde dağıtmak için tasarlanmış uçtan uca bir kütüphane ve CLI aracıdır.
Proje, Cactus Compute tarafından geliştirilen hafif ve cihaz üstü (on-device) araç çağırma modeli Needle (cactus-needle) altyapısını temel alarak Türkçe dil desteği ve fine-tuning araçlarıyla genişletilmiştir.
🚀 Özellikler
- Yerleşik Türkçe Araçlar: Hava durumu sorgulama, mesaj gönderme, alarm kurma, matematiksel hesaplama gibi şablon araçlar.
- Sentetik Veri Üretici: Tohum (seed) veriler ve isteğe bağlı yerel Ollama (
qwen2.5:7bvb.) desteğiyle Türkçe veri seti genişletme (data/train.jsonl,data/val.jsonl). - LoRA Fine-Tuning Desteği: Hugging Face
transformers,peftvetrlentegrasyonu ile hedef modelleri Türkçe araç çağırma formatına uyarlama. - Ollama Dağıtımı: Eğitilen veya mevcut modeller için otomatik
Modelfileüretimi ve tek tıkla Ollama ortamına aktarım.
📦 Kurulum
Bu proje uv paket yöneticisi ile yönetilmektedir:
# Bağımlılıkları senkronize edin
uv sync
🛠️ CLI Kullanımı
Tüm süreç needle-tr komut satırı arayüzü ile yönetilebilir:
1. Sentetik Veri Üretimi
# Yerel tohum verileri kullanarak
uv run needle-tr generate-data
# Ollama ile zenginleştirilmiş veri üretimi
uv run needle-tr generate-data --use-ollama --ollama-model qwen2.5:7b
2. Fine-Tuning
# Doğrulama (Dry-run)
uv run needle-tr train --dry-run
# Eğitim başlatma
uv run needle-tr train --base-model Qwen/Qwen2.5-7B-Instruct --epochs 3
3. Ollama Modelfile Dışa Aktarma
uv run needle-tr export-ollama --base-model qwen2.5:7b --model-name needle-tr
Ardından Ollama üzerinde modeli oluşturun ve çalıştırın:
ollama create needle-tr -f Modelfile
ollama run needle-tr "25 * 4 hesapla"
🐍 Python Ajan Kullanımı
Cihaz üstü yerel ajan çalıştırma, Cactus Compute Needle (cactus-needle) kütüphanesini kullanır:
uv run needle-agent
Veya Python kodunuz içerisinde:
from needle_tr import agent
response = agent.run("İstanbul'da hava durumu nasıl?")
print(response)
📚 Detaylı Rehber
Ayrıntılı adımlar ve mimari açıklamaları için FINETUNE_GUIDE.md dosyasına göz atabilirsiniz.
📊 Benchmark ve Başarım Sonuçları
needle-tr yerleşik benchmark aracı ile ölçülen son başarım sonuçları:
📈 Özet Performans Metrikleri
| Metrik | Değer | Açıklama |
|---|---|---|
| Test Edilen Hedef | Cactus Needle (On-Device Agent) |
Test edilen ortam (Ajan / Model) |
| Toplam Test Sayısı | 14 | Doğrulama sorgusu sayısı |
| Araç Seçim Doğruluğu | %92.9 (13/14) | Doğru fonksiyonun seçilme oranı |
| Argüman Doğruluğu | %78.6 (11/14) | Parametrelerin eksiksiz eşleşme oranı |
| Geçerli Yanıt / JSON | %100.0 (14/14) | Bozulma olmadan parse edilen çağrılar |
| Ortalama Gecikme | 261.2 ms | Min: 59.1 ms, Max: 931.0 ms |
| Son Güncelleme | 2026-09-28 15:13:49 |
Otomatik benchmark çalıştırma zamanı |
🔍 Araç Bazında Detay Dağılımı
| Araç (Tool) | Araç Doğruluğu | Argüman Eşleşmesi | Test Sayısı | Ortalama Gecikme |
|---|---|---|---|---|
calculate |
%100.0 | %50.0 | 4 | 75.3 ms |
get_weather |
%75.0 | %75.0 | 4 | 556.5 ms |
send_message |
%100.0 | %100.0 | 3 | 214.8 ms |
set_alarm |
%100.0 | %100.0 | 3 | 161.6 ms |
Benchmark testlerini kendiniz çalıştırmak ve grafiği güncellemek için:
# Cactus Needle (On-device) Ajanı için
uv run needle-tr benchmark --target agent
# Ollama Modeli için
uv run needle-tr benchmark --target ollama --ollama-model needle-tr
🙏 Referanslar & Teşekkürler
- Cactus Compute - Needle: Cihaz üzerinde (on-device) çalışan hafif ve verimli fonksiyon / araç çağırma kütüphanesi (
needle).
Metadata
Release files for needle-tr 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| needle_tr-0.1.1.tar.gz | 17.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| needle_tr-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.4 kB
Release files / needle_tr-0.1.1.tar.gz
| Download URL | needle_tr-0.1.1.tar.gz |
|---|---|
| Size | 17.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f9e1b0a68e98f7ef66eec53543578fe76fd2e79a5e7c4fef79c25f129f52c33
|
|
BLAKE2b-256 checksum How to use checksums |
55960c3b9ff1a40d44115bb089e7ee571e08b08ef6c5c2014691fe110a5a9d66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / needle_tr-0.1.1-py3-none-any.whl
| Download URL | needle_tr-0.1.1-py3-none-any.whl |
|---|---|
| Size | 22.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b7dd2d50b9fecb5c8fede48dec75f1f528a01144d43c48d40559c8628466ea7c
|
|
BLAKE2b-256 checksum How to use checksums |
8463514a9b3e1e9cf9b5b216cd9bba50bbc3ee9b85dd3adbc696409911610859
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|