needle-tr 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,149 @@
1
+ Metadata-Version: 2.3
2
+ Name: needle-tr
3
+ Version: 0.1.0
4
+ Summary: Türkçe Araç Çağırıcı ve Fine-Tuning Sistemi
5
+ Author: emrekayik
6
+ Author-email: emrekayik <emrekayik1905@gmail.com>
7
+ Requires-Dist: cactus-needle>=3.0.5
8
+ Requires-Dist: datasets>=5.0.1
9
+ Requires-Dist: peft>=0.21.0
10
+ Requires-Dist: torch>=2.14.0
11
+ Requires-Dist: transformers>=5.17.0
12
+ Requires-Dist: trl>=1.14.0
13
+ Requires-Python: >=3.14
14
+ Description-Content-Type: text/markdown
15
+
16
+ # needle-tr
17
+
18
+ Türkçe Araç Çağırıcı (Tool Calling) ve Fine-Tuning Sistemi.
19
+
20
+ `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.
21
+
22
+ Proje, [Cactus Compute](https://github.com/cactus-compute/needle) tarafından geliştirilen hafif ve cihaz üstü (on-device) araç çağırma modeli **[Needle](https://github.com/cactus-compute/needle)** (`cactus-needle`) altyapısını temel alarak Türkçe dil desteği ve fine-tuning araçlarıyla genişletilmiştir.
23
+
24
+ ---
25
+
26
+ ## 🚀 Özellikler
27
+
28
+ - **Yerleşik Türkçe Araçlar:** Hava durumu sorgulama, mesaj gönderme, alarm kurma, matematiksel hesaplama gibi şablon araçlar.
29
+ - **Sentetik Veri Üretici:** Tohum (seed) veriler ve isteğe bağlı yerel Ollama (`qwen2.5:7b` vb.) desteğiyle Türkçe veri seti genişletme (`data/train.jsonl`, `data/val.jsonl`).
30
+ - **LoRA Fine-Tuning Desteği:** Hugging Face `transformers`, `peft` ve `trl` entegrasyonu ile hedef modelleri Türkçe araç çağırma formatına uyarlama.
31
+ - **Ollama Dağıtımı:** Eğitilen veya mevcut modeller için otomatik `Modelfile` üretimi ve tek tıkla Ollama ortamına aktarım.
32
+
33
+ ---
34
+
35
+ ## 📦 Kurulum
36
+
37
+ Bu proje [uv](https://github.com/astral-sh/uv) paket yöneticisi ile yönetilmektedir:
38
+
39
+ ```bash
40
+ # Bağımlılıkları senkronize edin
41
+ uv sync
42
+ ```
43
+
44
+ ---
45
+
46
+ ## 🛠️ CLI Kullanımı
47
+
48
+ Tüm süreç `needle-tr` komut satırı arayüzü ile yönetilebilir:
49
+
50
+ ### 1. Sentetik Veri Üretimi
51
+
52
+ ```bash
53
+ # Yerel tohum verileri kullanarak
54
+ uv run needle-tr generate-data
55
+
56
+ # Ollama ile zenginleştirilmiş veri üretimi
57
+ uv run needle-tr generate-data --use-ollama --ollama-model qwen2.5:7b
58
+ ```
59
+
60
+ ### 2. Fine-Tuning
61
+
62
+ ```bash
63
+ # Doğrulama (Dry-run)
64
+ uv run needle-tr train --dry-run
65
+
66
+ # Eğitim başlatma
67
+ uv run needle-tr train --base-model Qwen/Qwen2.5-7B-Instruct --epochs 3
68
+ ```
69
+
70
+ ### 3. Ollama Modelfile Dışa Aktarma
71
+
72
+ ```bash
73
+ uv run needle-tr export-ollama --base-model qwen2.5:7b --model-name needle-tr
74
+ ```
75
+
76
+ Ardından Ollama üzerinde modeli oluşturun ve çalıştırın:
77
+
78
+ ```bash
79
+ ollama create needle-tr -f Modelfile
80
+ ollama run needle-tr "25 * 4 hesapla"
81
+ ```
82
+
83
+ ---
84
+
85
+ ## 🐍 Python Ajan Kullanımı
86
+
87
+ Cihaz üstü yerel ajan çalıştırma, [Cactus Compute Needle](https://github.com/cactus-compute/needle) (`cactus-needle`) kütüphanesini kullanır:
88
+
89
+ ```bash
90
+ uv run needle-agent
91
+ ```
92
+
93
+ Veya Python kodunuz içerisinde:
94
+
95
+ ```python
96
+ from needle_tr import agent
97
+
98
+ response = agent.run("İstanbul'da hava durumu nasıl?")
99
+ print(response)
100
+ ```
101
+
102
+ ---
103
+
104
+ ## 📚 Detaylı Rehber
105
+
106
+ Ayrıntılı adımlar ve mimari açıklamaları için [FINETUNE_GUIDE.md](FINETUNE_GUIDE.md) dosyasına göz atabilirsiniz.
107
+
108
+ ---
109
+
110
+ ## 📊 Benchmark ve Başarım Sonuçları
111
+
112
+ `needle-tr` yerleşik benchmark aracı ile ölçülen son başarım sonuçları:
113
+
114
+ ![Needle-TR Benchmark Sonuçları](benchmark_results.svg)
115
+
116
+ ### 📈 Özet Performans Metrikleri
117
+
118
+ | Metrik | Değer | Açıklama |
119
+ | :--- | :--- | :--- |
120
+ | **Test Edilen Hedef** | `Cactus Needle (On-Device Agent)` | Test edilen ortam (Ajan / Model) |
121
+ | **Toplam Test Sayısı** | **14** | Doğrulama sorgusu sayısı |
122
+ | **Araç Seçim Doğruluğu** | **%92.9** (13/14) | Doğru fonksiyonun seçilme oranı |
123
+ | **Argüman Doğruluğu** | **%78.6** (11/14) | Parametrelerin eksiksiz eşleşme oranı |
124
+ | **Geçerli Yanıt / JSON** | **%100.0** (14/14) | Bozulma olmadan parse edilen çağrılar |
125
+ | **Ortalama Gecikme** | **261.2 ms** | Min: 59.1 ms, Max: 931.0 ms |
126
+ | **Son Güncelleme** | `2026-09-28 15:13:49` | Otomatik benchmark çalıştırma zamanı |
127
+
128
+ ### 🔍 Araç Bazında Detay Dağılımı
129
+
130
+ | Araç (Tool) | Araç Doğruluğu | Argüman Eşleşmesi | Test Sayısı | Ortalama Gecikme |
131
+ | :--- | :---: | :---: | :---: | :---: |
132
+ | `calculate` | %100.0 | %50.0 | 4 | 75.3 ms |
133
+ | `get_weather` | %75.0 | %75.0 | 4 | 556.5 ms |
134
+ | `send_message` | %100.0 | %100.0 | 3 | 214.8 ms |
135
+ | `set_alarm` | %100.0 | %100.0 | 3 | 161.6 ms |
136
+
137
+ Benchmark testlerini kendiniz çalıştırmak ve grafiği güncellemek için:
138
+
139
+ ```bash
140
+ # Cactus Needle (On-device) Ajanı için
141
+ uv run needle-tr benchmark --target agent
142
+
143
+ # Ollama Modeli için
144
+ uv run needle-tr benchmark --target ollama --ollama-model needle-tr
145
+ ```
146
+
147
+ ## 🙏 Referanslar & Teşekkürler
148
+
149
+ - **[Cactus Compute - Needle](https://github.com/cactus-compute/needle):** Cihaz üzerinde (on-device) çalışan hafif ve verimli fonksiyon / araç çağırma kütüphanesi (`needle`).
@@ -0,0 +1,134 @@
1
+ # needle-tr
2
+
3
+ Türkçe Araç Çağırıcı (Tool Calling) ve Fine-Tuning Sistemi.
4
+
5
+ `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.
6
+
7
+ Proje, [Cactus Compute](https://github.com/cactus-compute/needle) tarafından geliştirilen hafif ve cihaz üstü (on-device) araç çağırma modeli **[Needle](https://github.com/cactus-compute/needle)** (`cactus-needle`) altyapısını temel alarak Türkçe dil desteği ve fine-tuning araçlarıyla genişletilmiştir.
8
+
9
+ ---
10
+
11
+ ## 🚀 Özellikler
12
+
13
+ - **Yerleşik Türkçe Araçlar:** Hava durumu sorgulama, mesaj gönderme, alarm kurma, matematiksel hesaplama gibi şablon araçlar.
14
+ - **Sentetik Veri Üretici:** Tohum (seed) veriler ve isteğe bağlı yerel Ollama (`qwen2.5:7b` vb.) desteğiyle Türkçe veri seti genişletme (`data/train.jsonl`, `data/val.jsonl`).
15
+ - **LoRA Fine-Tuning Desteği:** Hugging Face `transformers`, `peft` ve `trl` entegrasyonu ile hedef modelleri Türkçe araç çağırma formatına uyarlama.
16
+ - **Ollama Dağıtımı:** Eğitilen veya mevcut modeller için otomatik `Modelfile` üretimi ve tek tıkla Ollama ortamına aktarım.
17
+
18
+ ---
19
+
20
+ ## 📦 Kurulum
21
+
22
+ Bu proje [uv](https://github.com/astral-sh/uv) paket yöneticisi ile yönetilmektedir:
23
+
24
+ ```bash
25
+ # Bağımlılıkları senkronize edin
26
+ uv sync
27
+ ```
28
+
29
+ ---
30
+
31
+ ## 🛠️ CLI Kullanımı
32
+
33
+ Tüm süreç `needle-tr` komut satırı arayüzü ile yönetilebilir:
34
+
35
+ ### 1. Sentetik Veri Üretimi
36
+
37
+ ```bash
38
+ # Yerel tohum verileri kullanarak
39
+ uv run needle-tr generate-data
40
+
41
+ # Ollama ile zenginleştirilmiş veri üretimi
42
+ uv run needle-tr generate-data --use-ollama --ollama-model qwen2.5:7b
43
+ ```
44
+
45
+ ### 2. Fine-Tuning
46
+
47
+ ```bash
48
+ # Doğrulama (Dry-run)
49
+ uv run needle-tr train --dry-run
50
+
51
+ # Eğitim başlatma
52
+ uv run needle-tr train --base-model Qwen/Qwen2.5-7B-Instruct --epochs 3
53
+ ```
54
+
55
+ ### 3. Ollama Modelfile Dışa Aktarma
56
+
57
+ ```bash
58
+ uv run needle-tr export-ollama --base-model qwen2.5:7b --model-name needle-tr
59
+ ```
60
+
61
+ Ardından Ollama üzerinde modeli oluşturun ve çalıştırın:
62
+
63
+ ```bash
64
+ ollama create needle-tr -f Modelfile
65
+ ollama run needle-tr "25 * 4 hesapla"
66
+ ```
67
+
68
+ ---
69
+
70
+ ## 🐍 Python Ajan Kullanımı
71
+
72
+ Cihaz üstü yerel ajan çalıştırma, [Cactus Compute Needle](https://github.com/cactus-compute/needle) (`cactus-needle`) kütüphanesini kullanır:
73
+
74
+ ```bash
75
+ uv run needle-agent
76
+ ```
77
+
78
+ Veya Python kodunuz içerisinde:
79
+
80
+ ```python
81
+ from needle_tr import agent
82
+
83
+ response = agent.run("İstanbul'da hava durumu nasıl?")
84
+ print(response)
85
+ ```
86
+
87
+ ---
88
+
89
+ ## 📚 Detaylı Rehber
90
+
91
+ Ayrıntılı adımlar ve mimari açıklamaları için [FINETUNE_GUIDE.md](FINETUNE_GUIDE.md) dosyasına göz atabilirsiniz.
92
+
93
+ ---
94
+
95
+ ## 📊 Benchmark ve Başarım Sonuçları
96
+
97
+ `needle-tr` yerleşik benchmark aracı ile ölçülen son başarım sonuçları:
98
+
99
+ ![Needle-TR Benchmark Sonuçları](benchmark_results.svg)
100
+
101
+ ### 📈 Özet Performans Metrikleri
102
+
103
+ | Metrik | Değer | Açıklama |
104
+ | :--- | :--- | :--- |
105
+ | **Test Edilen Hedef** | `Cactus Needle (On-Device Agent)` | Test edilen ortam (Ajan / Model) |
106
+ | **Toplam Test Sayısı** | **14** | Doğrulama sorgusu sayısı |
107
+ | **Araç Seçim Doğruluğu** | **%92.9** (13/14) | Doğru fonksiyonun seçilme oranı |
108
+ | **Argüman Doğruluğu** | **%78.6** (11/14) | Parametrelerin eksiksiz eşleşme oranı |
109
+ | **Geçerli Yanıt / JSON** | **%100.0** (14/14) | Bozulma olmadan parse edilen çağrılar |
110
+ | **Ortalama Gecikme** | **261.2 ms** | Min: 59.1 ms, Max: 931.0 ms |
111
+ | **Son Güncelleme** | `2026-09-28 15:13:49` | Otomatik benchmark çalıştırma zamanı |
112
+
113
+ ### 🔍 Araç Bazında Detay Dağılımı
114
+
115
+ | Araç (Tool) | Araç Doğruluğu | Argüman Eşleşmesi | Test Sayısı | Ortalama Gecikme |
116
+ | :--- | :---: | :---: | :---: | :---: |
117
+ | `calculate` | %100.0 | %50.0 | 4 | 75.3 ms |
118
+ | `get_weather` | %75.0 | %75.0 | 4 | 556.5 ms |
119
+ | `send_message` | %100.0 | %100.0 | 3 | 214.8 ms |
120
+ | `set_alarm` | %100.0 | %100.0 | 3 | 161.6 ms |
121
+
122
+ Benchmark testlerini kendiniz çalıştırmak ve grafiği güncellemek için:
123
+
124
+ ```bash
125
+ # Cactus Needle (On-device) Ajanı için
126
+ uv run needle-tr benchmark --target agent
127
+
128
+ # Ollama Modeli için
129
+ uv run needle-tr benchmark --target ollama --ollama-model needle-tr
130
+ ```
131
+
132
+ ## 🙏 Referanslar & Teşekkürler
133
+
134
+ - **[Cactus Compute - Needle](https://github.com/cactus-compute/needle):** Cihaz üzerinde (on-device) çalışan hafif ve verimli fonksiyon / araç çağırma kütüphanesi (`needle`).
@@ -0,0 +1,26 @@
1
+ [project]
2
+ name = "needle-tr"
3
+ version = "0.1.0"
4
+ description = "Türkçe Araç Çağırıcı ve Fine-Tuning Sistemi"
5
+ readme = "README.md"
6
+ requires-python = ">=3.14"
7
+ dependencies = [
8
+ "cactus-needle>=3.0.5",
9
+ "datasets>=5.0.1",
10
+ "peft>=0.21.0",
11
+ "torch>=2.14.0",
12
+ "transformers>=5.17.0",
13
+ "trl>=1.14.0",
14
+ ]
15
+
16
+ [[project.authors]]
17
+ name = "emrekayik"
18
+ email = "emrekayik1905@gmail.com"
19
+
20
+ [project.scripts]
21
+ needle-tr = "needle_tr.cli:main"
22
+ needle-agent = "needle_tr:main"
23
+
24
+ [build-system]
25
+ requires = ["uv_build>=0.12.5,<0.13.0"]
26
+ build-backend = "uv_build"
@@ -0,0 +1,26 @@
1
+ [project]
2
+ name = "needle-tr"
3
+ version = "0.1.0"
4
+ description = "Türkçe Araç Çağırıcı ve Fine-Tuning Sistemi"
5
+ readme = "README.md"
6
+ authors = [
7
+ { name = "emrekayik", email = "emrekayik1905@gmail.com" }
8
+ ]
9
+ requires-python = ">=3.14"
10
+ dependencies = [
11
+ "cactus-needle>=3.0.5",
12
+ "datasets>=5.0.1",
13
+ "peft>=0.21.0",
14
+ "torch>=2.14.0",
15
+ "transformers>=5.17.0",
16
+ "trl>=1.14.0",
17
+ ]
18
+
19
+ [project.scripts]
20
+ needle-tr = "needle_tr.cli:main"
21
+ needle-agent = "needle_tr:main"
22
+
23
+
24
+ [build-system]
25
+ requires = ["uv_build>=0.12.5,<0.13.0"]
26
+ build-backend = "uv_build"
@@ -0,0 +1,21 @@
1
+ import needle
2
+
3
+
4
+ from .tools import ACTIVE_TOOLS, calculate, get_weather, send_message, set_alarm
5
+
6
+ agent = needle.Needle(
7
+ tools=ACTIVE_TOOLS,
8
+ stateless=True,
9
+ )
10
+
11
+
12
+ def main():
13
+ print("Hava durumu:", agent.run("Lagos'ta hava nasıl?")["results"])
14
+ print("Mesaj gönderme:", agent.run("Ahmet'e 'Toplantı başladı' mesajı gönder")["results"])
15
+ print("Alarm kurma:", agent.run("Saat 07:30'a alarm kur")["results"])
16
+ print("Hesaplama:", agent.run("25 * 4 hesapla")["results"])
17
+
18
+
19
+ if __name__ == "__main__":
20
+ main()
21
+