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.
- needle_tr-0.1.0/PKG-INFO +149 -0
- needle_tr-0.1.0/README.md +134 -0
- needle_tr-0.1.0/pyproject.toml +26 -0
- needle_tr-0.1.0/pyproject.toml.orig +26 -0
- needle_tr-0.1.0/src/needle_tr/__init__.py +21 -0
- needle_tr-0.1.0/src/needle_tr/benchmark.py +565 -0
- needle_tr-0.1.0/src/needle_tr/cli.py +151 -0
- needle_tr-0.1.0/src/needle_tr/dataset_generator.py +302 -0
- needle_tr-0.1.0/src/needle_tr/export_ollama.py +90 -0
- needle_tr-0.1.0/src/needle_tr/tools.py +75 -0
- needle_tr-0.1.0/src/needle_tr/trainer.py +159 -0
needle_tr-0.1.0/PKG-INFO
ADDED
|
@@ -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
|
+

|
|
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
|
+

|
|
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
|
+
|