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.0
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.0.tar.gz | 17.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| needle_tr-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.4 kB
Release files / needle_tr-0.1.0.tar.gz
| Download URL | needle_tr-0.1.0.tar.gz |
|---|---|
| Size | 17.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
41a5b3c9c8be48cbaf9db621d3f97625c428ca30e9cc861ad9cad69e589cca1e
|
|
BLAKE2b-256 checksum How to use checksums |
96305a83e8896010ca46aaae80e5040b96e1e6e91d19ec97b401636e68aa7b44
|
| 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.0-py3-none-any.whl
| Download URL | needle_tr-0.1.0-py3-none-any.whl |
|---|---|
| Size | 22.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
774d15724343c3711f0e46aaa04c3faca89f3f67814c545092905559528dcef4
|
|
BLAKE2b-256 checksum How to use checksums |
cab484aacfb6bd802406d3cde026d41c2191f78e193395c920a2b67dc1fc0efe
|
| 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}
|