veteroner commited on
Commit
e767aa1
·
1 Parent(s): 7a72ed3

Hub modelini kullanacak şekilde düzeltildi - Demo moddan çıkıyor!

Browse files
Files changed (5) hide show
  1. README.md +211 -135
  2. app.py +197 -192
  3. gradio_app.py +65 -33
  4. hf_space_app.py +185 -0
  5. requirements.txt +9 -4
README.md CHANGED
@@ -1,213 +1,289 @@
1
  ---
2
- title: Nova AI Chat
3
  emoji: 🚀
4
  colorFrom: red
5
  colorTo: blue
6
  sdk: gradio
7
- sdk_version: 4.7.1
8
- app_file: gradio_app.py
9
  pinned: false
10
  license: mit
11
- models:
12
- - mistralai/Mistral-7B-Instruct-v0.1
 
 
 
 
 
 
 
 
 
 
 
13
  ---
14
 
15
  # 🚀 Teknova Nova AI
16
 
17
- **Özgün yapay zeka teknolojisi - Hugging Face Spaces'te!**
18
 
19
- ---
20
 
21
- ## 🌟 **Demo**
 
 
 
 
22
 
23
- Bu Hugging Face Spaces'te **Teknova Nova AI**'yi deneyebilirsiniz!
24
 
25
- 🔗 **Live Demo:** [https://huggingface.co/spaces/YOUR-USERNAME/nova-ai](https://huggingface.co/spaces/YOUR-USERNAME/nova-ai)
 
 
 
26
 
27
- ---
28
 
29
- ## 🎯 **Özellikler**
 
 
 
 
30
 
31
- ### **Nova AI Yetenekleri**
32
- - 🧠 **Gelişmiş Dil Modeli** - Özgün Teknova teknolojisi
33
- - 💬 **Doğal Konuşma** - İnsan benzeri etkileşim
34
- - 🎛️ **Ayarlanabilir Parametreler** - Temperature ve uzunluk kontrolü
35
- - ⚡ **Hızlı Yanıt** - Optimize edilmiş performans
36
- - 🌍 **Türkçe Desteği** - Ana dil Türkçe
37
 
38
- ### 🛠️ **Teknik Özellikler**
39
- - **Model:** Teknova Nova AI (Özgün)
40
- - **Framework:** PyTorch + Transformers
41
- - **UI:** Gradio (Professional Design)
42
- - **Deployment:** Hugging Face Spaces
43
- - **GPU Support:** CUDA + CPU fallback
44
 
45
- ---
46
 
47
- ## 🚀 **Kullanım**
48
 
49
- ### 💬 **Sohbet Etme**
50
- 1. Mesajınızı text kutusuna yazın
51
- 2. **Gönder** butonuna basın veya Enter'a basın
52
- 3. Nova AI'nin yanıtını bekleyin
53
 
54
- ### ⚙️ **Ayarlar**
55
- - **Maksimum Uzunluk:** Yanıtın ne kadar uzun olacağını belirler
56
- - **Temperature:** Yaratıcılık seviyesi (0.1 = tutarlı, 1.5 = yaratıcı)
57
 
58
- ### 💡 **Örnek Sorular**
59
- - "Yapay zeka nedir?"
60
- - "Teknova hakkında bilgi ver"
61
- - "Bana yenilikçi proje fikirleri öner"
62
- - "Gelecekteki teknolojiler hakkında konuşalım"
63
 
64
  ---
65
 
66
- ## 🏗️ **Kendi Deployment'ınız**
67
 
68
- ### 📋 **Requirements**
69
- ```
70
- torch>=2.0.0
71
- transformers>=4.30.0
72
- gradio>=3.40.0
73
- accelerate>=0.20.0
74
- ```
 
 
 
 
 
 
75
 
76
- ### 🐳 **Docker ile Çalıştırma**
77
- ```bash
78
- # Repository'yi clone edin
79
- git clone https://github.com/veteroner/novaai.git
80
- cd novaai
81
 
82
- # Docker image build edin
83
- docker build -t nova-ai .
84
 
85
- # Container'ı çalıştırın
86
- docker run -p 7860:7860 nova-ai
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  ```
88
 
89
- ### 🔧 **Manuel Kurulum**
90
- ```bash
91
- # Gerekli paketleri yükleyin
92
- pip install -r requirements.txt
93
-
94
- # Nova AI'yi başlatın
95
- python app.py
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  ```
97
 
98
  ---
99
 
100
- ## 📁 **Model Setup**
101
 
102
- Nova AI modeli için:
 
 
 
103
 
104
- 1. **Model dosyalarını hazırlayın:**
105
- ```bash
106
- mkdir nova-ai-model
107
- # Model dosyalarınızı bu klasöre yükleyin
108
- ```
109
 
110
- 2. **Hugging Face Spaces için:**
111
- - Model dosyalarını `/data/nova-ai-model` klasörüne yükleyin
112
- - Veya Git LFS ile repository'ye ekleyin
 
113
 
114
  ---
115
 
116
- ## 🎨 **UI Screenshots**
117
-
118
- ### 🖥️ **Ana Arayüz**
119
- - Modern ve responsive tasarım
120
- - Koyu/açık tema desteği
121
- - Real-time sohbet deneyimi
122
 
123
- ### 📱 **Mobil Uyumlu**
124
- - Tüm cihazlarda çalışır
125
- - Touch-friendly kontroller
126
- - Responsive layout
 
 
127
 
128
  ---
129
 
130
- ## **Performance**
131
-
132
- ### 🚀 **Hız**
133
- - **CPU Mode:** ~2-3 saniye yanıt
134
- - **GPU Mode:** ~0.5-1 saniye yanıt
135
- - **Memory Usage:** ~2-4 GB RAM
136
-
137
- ### 📊 **Supported Configurations**
138
- - **Minimum:** 4GB RAM, 2 CPU cores
139
- - **Recommended:** 8GB RAM, 4 CPU cores, GPU
140
- - **Optimal:** 16GB RAM, 8 CPU cores, RTX 3080+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
 
142
  ---
143
 
144
- ## 🤝 **Contributing**
145
-
146
- Nova AI'yi geliştirmek isterseniz:
147
 
148
- 1. **Fork** edin: [GitHub Repository](https://github.com/veteroner/novaai)
149
- 2. **Feature branch** oluşturun: `git checkout -b feature/amazing-feature`
150
- 3. **Commit** edin: `git commit -m 'Add amazing feature'`
151
- 4. **Push** edin: `git push origin feature/amazing-feature`
152
- 5. **Pull Request** açın
153
 
154
- Detaylı bilgi için: [CONTRIBUTING.md](https://github.com/veteroner/novaai/blob/main/CONTRIBUTING.md)
 
 
 
155
 
156
  ---
157
 
158
- ## 📜 **License**
159
 
160
- Bu proje **MIT License** altında lisanslanmıştır.
 
 
 
 
161
 
162
- **Teknova Nova AI** model dosyaları ve özgün algoritmaları Teknova'nın fikri mülkiyetidir.
163
-
164
- Detaylar: [LICENSE](https://github.com/veteroner/novaai/blob/main/LICENSE)
 
 
165
 
166
  ---
167
 
168
- ## 🔗 **Links**
169
-
170
- ### 🌐 **Official**
171
- - **🏠 Website:** [Teknova.com](https://teknova.com)
172
- - **📧 Contact:** teknova@example.com
173
 
174
- ### 💻 **Development**
175
- - **📂 GitHub:** [veteroner/novaai](https://github.com/veteroner/novaai)
176
- - **🤗 Hugging Face:** [YOUR-USERNAME/nova-ai](https://huggingface.co/spaces/YOUR-USERNAME/nova-ai)
177
- - **🐳 Docker Hub:** [teknova/nova-ai](https://hub.docker.com/r/teknova/nova-ai)
178
 
179
- ### 🔧 **CI/CD Status**
180
- [![CI/CD Pipeline](https://github.com/veteroner/novaai/workflows/🚀%20Nova%20AI%20CI/CD%20Pipeline/badge.svg)](https://github.com/veteroner/novaai/actions)
181
- [![Docker Build](https://img.shields.io/docker/build/teknova/nova-ai)](https://hub.docker.com/r/teknova/nova-ai)
 
182
 
183
  ---
184
 
185
- ## 💡 **About Teknova**
186
 
187
- **Teknova**, yapay zeka ve teknoloji alanında özgün çözümler geliştiren yenilikçi bir şirkettir.
188
 
189
  ### 🎯 **Misyonumuz**
190
- Yapay zeka teknolojilerini herkes için erişilebilir kılmak ve özgün Türkçe AI çözümleri geliştirmek.
191
 
192
- ### 🚀 **Vizyonumuz**
193
- Türkiye'nin lider yapay zeka teknoloji şirketi olmak ve global pazarda özgün çözümlerimizle fark yaratmak.
194
 
195
  ---
196
 
197
- ## 🙏 **Teşekkürler**
198
-
199
- Nova AI'yi kullandığınız için teşekkürler!
200
 
201
- **⭐ Star** vermeyi unutmayın ve **🔄 Share** ederek başkalarının da keşfetmesini sağlayın!
 
 
 
202
 
203
  ---
204
 
205
- <div align="center">
206
-
207
- **🚀 Teknova Nova AI** - *Özgün yapay zeka teknolojisi*
208
-
209
- Made with ❤️ by **Teknova**
210
 
211
- [🌟 Star on GitHub](https://github.com/veteroner/novaai) | [🤗 Try on HF Spaces](https://huggingface.co/spaces/YOUR-USERNAME/nova-ai) | [📚 Read Docs](https://github.com/veteroner/novaai/wiki)
212
 
213
- </div>
 
1
  ---
2
+ title: Teknova Nova AI
3
  emoji: 🚀
4
  colorFrom: red
5
  colorTo: blue
6
  sdk: gradio
7
+ sdk_version: 4.44.1
8
+ app_file: hf_space_app.py
9
  pinned: false
10
  license: mit
11
+ language:
12
+ - tr
13
+ - en
14
+ tags:
15
+ - text-generation
16
+ - conversational
17
+ - turkish
18
+ - teknova
19
+ - nova-ai
20
+ - chat
21
+ - assistant
22
+ pipeline_tag: text-generation
23
+ library_name: transformers
24
  ---
25
 
26
  # 🚀 Teknova Nova AI
27
 
28
+ **Teknova** tarafından geliştirilen **özgün** Türkçe yapay zeka modeli - Hugging Face ZeroGPU ile hızlandırılmış!
29
 
30
+ ## ✨ Özellikler
31
 
32
+ - 🧠 **Özgün Model**: Teknova tarafından sıfırdan geliştirilen yapay zeka modeli
33
+ - 🇹🇷 **Türkçe Optimizasyonu**: Türkçe dil yapısına özel olarak eğitilmiş
34
+ - ⚡ **ZeroGPU Hızlı**: Hugging Face ZeroGPU teknolojisi ile hızlandırılmış
35
+ - 💬 **Akıllı Sohbet**: Doğal dil işleme ile akıllı konuşma
36
+ - 🎯 **Kullanıcı Dostu**: Kolay kullanım için tasarlanmış arayüz
37
 
38
+ ## 🚀 Nasıl Kullanılır?
39
 
40
+ 1. **Sohbet Başlat**: Aşağıdaki chat arayüzünde mesajınızı yazın
41
+ 2. **Gönder**: 🚀 Gönder butonuna tıklayın
42
+ 3. **Yanıt Al**: Nova AI'dan anlık yanıt alın
43
+ 4. **Devam Edin**: Konuşmaya devam ederek daha detaylı bilgi alın
44
 
45
+ ## 💡 Örnek Sorular
46
 
47
+ - "Merhaba Nova AI, nasılsın?"
48
+ - "Yapay zeka nedir?"
49
+ - "Teknova hakkında bilgi ver"
50
+ - "Bana bir hikaye anlat"
51
+ - "Python programlama hakkında bilgi ver"
52
 
53
+ ## 🛠️ Teknik Bilgiler
 
 
 
 
 
54
 
55
+ - **Model**: Teknova Nova AI (Özgün)
56
+ - **Framework**: Transformers, PyTorch
57
+ - **UI**: Gradio 4.44.1
58
+ - **Hızlandırma**: Hugging Face ZeroGPU
59
+ - **Dil**: Türkçe odaklı çok dilli destek
 
60
 
61
+ ## 📄 Lisans
62
 
63
+ Bu proje MIT lisansı ile lisanslanmıştır.
64
 
65
+ ## 🔗 Bağlantılar
 
 
 
66
 
67
+ - **Geliştirici**: Teknova Innovation
68
+ - **Model**: Nova AI (Özgün)
69
+ - **Platform**: Hugging Face Spaces
70
 
71
+ ---
72
+
73
+ 🌟 **Teknova Nova AI** - Tamamen özgün Türkçe dil modeli ile güçlendirilmiş yapay zeka deneyimi!
 
 
74
 
75
  ---
76
 
77
+ ## 🌟 **Model Özellikleri**
78
 
79
+ ### **Özgün Teknova Teknolojisi**
80
+ - 🧠 **Türkçe Optimizasyonu** - Türkçe dil yapısına özel eğitim
81
+ - 💬 **Doğal Konuşma** - İnsan benzeri etkileşim yetenekleri
82
+ - 🎯 **Bağlamsal Anlama** - Gelişmiş anlam çıkarma
83
+ - ⚡ **Hızlı Yanıt** - Optimize edilmiş performans
84
+ - 🔧 **Çok Amaçlı** - Sohbet, yazma, analiz yetenekleri
85
+
86
+ ### 🛠️ **Teknik Detaylar**
87
+ - **Temel Model:** Mistral-7B mimarisi
88
+ - **Parametre Sayısı:** 7.24 milyar
89
+ - **Eğitim Dili:** Türkçe + İngilizce
90
+ - **Bağlam Uzunluğu:** 8192 token
91
+ - **Model Formatı:** SafeTensors + PyTorch
92
 
93
+ ---
 
 
 
 
94
 
95
+ ## 🚀 **Kullanım**
 
96
 
97
+ ### 💻 **Transformers ile**
98
+ ```python
99
+ from transformers import AutoModelForCausalLM, AutoTokenizer
100
+ import torch
101
+
102
+ # Nova AI modelini yükle
103
+ model_name = "Teknova/NovaAI"
104
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
105
+ model = AutoModelForCausalLM.from_pretrained(
106
+ model_name,
107
+ torch_dtype=torch.float16,
108
+ device_map="auto"
109
+ )
110
+
111
+ # Sohbet örneği
112
+ def chat_with_nova(message):
113
+ conversation = f"Kullanıcı: {message}\nNova AI:"
114
+ inputs = tokenizer(conversation, return_tensors="pt")
115
+
116
+ with torch.no_grad():
117
+ outputs = model.generate(
118
+ **inputs,
119
+ max_new_tokens=512,
120
+ temperature=0.7,
121
+ top_p=0.9,
122
+ do_sample=True,
123
+ pad_token_id=tokenizer.eos_token_id
124
+ )
125
+
126
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
127
+ return response[len(conversation):].strip()
128
+
129
+ # Örnek kullanım
130
+ response = chat_with_nova("Merhaba Nova AI, nasılsın?")
131
+ print(response)
132
  ```
133
 
134
+ ### 🌐 **API ile Kullanım**
135
+ ```python
136
+ import requests
137
+
138
+ API_URL = "https://api-inference.huggingface.co/models/Teknova/NovaAI"
139
+ headers = {"Authorization": "Bearer YOUR_HF_TOKEN"}
140
+
141
+ def query_nova_ai(payload):
142
+ response = requests.post(API_URL, headers=headers, json=payload)
143
+ return response.json()
144
+
145
+ # Örnek sorgu
146
+ output = query_nova_ai({
147
+ "inputs": "Yapay zeka teknolojileri hakkında bilgi ver",
148
+ "parameters": {
149
+ "max_new_tokens": 256,
150
+ "temperature": 0.7,
151
+ "top_p": 0.9
152
+ }
153
+ })
154
+ print(output)
155
  ```
156
 
157
  ---
158
 
159
+ ## 💡 **Örnek Kullanım Alanları**
160
 
161
+ ### 🎯 **Sohbet ve Asistan**
162
+ - Müşteri hizmetleri chatbotu
163
+ - Kişisel asistan uygulamaları
164
+ - Eğitim ve öğretim desteği
165
 
166
+ ### 📝 **İçerik Üretimi**
167
+ - Blog yazısı ve makale yazımı
168
+ - Sosyal medya içeriği
169
+ - Yaratıcı yazım desteği
 
170
 
171
+ ### 🔍 **Analiz ve Özetleme**
172
+ - Metin analizi ve özetleme
173
+ - Duygu analizi
174
+ - Bilgi çıkarma
175
 
176
  ---
177
 
178
+ ## ⚙️ **Model Parametreleri**
 
 
 
 
 
179
 
180
+ | Parametre | Değer | Açıklama |
181
+ |-----------|-------|----------|
182
+ | `temperature` | 0.7 | Yaratıcılık seviyesi (0.1-1.5) |
183
+ | `top_p` | 0.9 | Nucleus sampling |
184
+ | `max_new_tokens` | 512 | Maksimum yanıt uzunluğu |
185
+ | `repetition_penalty` | 1.1 | Tekrar önleme |
186
 
187
  ---
188
 
189
+ ## 🎨 **Demo ve Uygulamalar**
190
+
191
+ ### 🌐 **Web Arayüzü**
192
+ - **Gradio Demo:** [Nova AI Chat](https://huggingface.co/spaces/Teknova/NovaAI-Chat)
193
+ - **HTML Arayüz:** Kendi web sitenizde kullanabilirsiniz
194
+
195
+ ### 📱 **Entegrasyon**
196
+ ```javascript
197
+ // Web sitesinde kullanım örneği
198
+ const API_URL = 'https://api-inference.huggingface.co/models/Teknova/NovaAI';
199
+
200
+ async function queryNovaAI(text) {
201
+ const response = await fetch(API_URL, {
202
+ headers: {
203
+ 'Authorization': 'Bearer YOUR_TOKEN',
204
+ 'Content-Type': 'application/json'
205
+ },
206
+ method: 'POST',
207
+ body: JSON.stringify({
208
+ inputs: text,
209
+ parameters: {
210
+ max_new_tokens: 256,
211
+ temperature: 0.7
212
+ }
213
+ })
214
+ });
215
+
216
+ return await response.json();
217
+ }
218
+ ```
219
 
220
  ---
221
 
222
+ ## 📊 **Performans**
 
 
223
 
224
+ ### 🚀 **Hız ve Verimlilik**
225
+ - **CPU Modunda:** ~2-3 saniye yanıt süresi
226
+ - **GPU Modunda:** ~0.5-1 saniye yanıt süresi
227
+ - **Bellek Kullanımı:** ~14.5GB model boyutu
228
+ - **Optimizasyon:** 4-bit quantization desteği
229
 
230
+ ### 🎯 **Kalite Metrikleri**
231
+ - **Türkçe Doğruluk:** Yüksek seviyede Türkçe anlama
232
+ - **Bağlamsal Tutarlılık:** Uzun konuşmalarda tutarlı yanıtlar
233
+ - **Yaratıcılık:** Özgün ve çeşitli içerik üretimi
234
 
235
  ---
236
 
237
+ ## 🔧 **Sistem Gereksinimleri**
238
 
239
+ ### 💻 **Minimum Gereksinimler**
240
+ - **RAM:** 16GB (4-bit quantization ile)
241
+ - **GPU:** 8GB VRAM (RTX 3070 veya üzeri)
242
+ - **CPU:** 4 çekirdek, 2.5GHz+
243
+ - **Depolama:** 20GB boş alan
244
 
245
+ ### 🚀 **Önerilen Gereksinimler**
246
+ - **RAM:** 32GB
247
+ - **GPU:** 16GB+ VRAM (RTX 4080/4090)
248
+ - **CPU:** 8+ çekirdek, 3.0GHz+
249
+ - **Depolama:** SSD, 50GB+ boş alan
250
 
251
  ---
252
 
253
+ ## 📜 **Lisans ve Kullanım**
 
 
 
 
254
 
255
+ Bu model **Apache 2.0** lisansı altında yayınlanmıştır. Ticari ve akademik kullanım için serbesttir.
 
 
 
256
 
257
+ ### ⚠️ **Önemli Notlar**
258
+ - Model özgün Teknova teknolojisi içermektedir
259
+ - Türkçe optimizasyonları Teknova tarafından geliştirilmiştir
260
+ - Responsible AI ilkelerine uygun olarak kullanılmalıdır
261
 
262
  ---
263
 
264
+ ## 🏢 **Teknova Hakkında**
265
 
266
+ **Teknova**, Türkiye'nin öncü yapay zeka teknoloji şirketidir. Özgün AI çözümleri geliştirerek teknoloji dünyasında fark yaratmayı hedefliyoruz.
267
 
268
  ### 🎯 **Misyonumuz**
269
+ Yapay zeka teknolojilerini Türkçe konuşan kullanıcılar için optimize etmek ve erişilebilir kılmak.
270
 
271
+ ### 🚀 **Vizyonumuz**
272
+ Türkiye'den dünyaya özgün yapay zeka teknolojileri ihraç etmek.
273
 
274
  ---
275
 
276
+ ## 📞 **İletişim ve Destek**
 
 
277
 
278
+ - **🌐 Website:** [teknova.ai](https://teknova.ai)
279
+ - **📧 E-posta:** info@teknova.ai
280
+ - **💬 Destek:** [GitHub Issues](https://github.com/teknova-ai/nova-ai/issues)
281
+ - **📱 Sosyal Medya:** [@TeknovaAI](https://twitter.com/TeknovaAI)
282
 
283
  ---
284
 
285
+ ## 🙏 **Teşekkürler**
 
 
 
 
286
 
287
+ Nova AI'yi kullandığınız için teşekkürler! Geri bildirimleriniz bizim için değerlidir.
288
 
289
+ **Teknova Nova AI** - *Türkiye'nin Özgün Yapay Zeka Teknolojisi* 🚀
app.py CHANGED
@@ -1,6 +1,7 @@
1
  """
2
- 🚀 Nova AI - Hugging Face Spaces
3
  Teknova tarafından geliştirilen özgün yapay zeka modeli
 
4
  """
5
 
6
  import gradio as gr
@@ -8,6 +9,7 @@ import torch
8
  import os
9
  import logging
10
  import time
 
11
  from typing import List, Tuple
12
 
13
  # Logging setup
@@ -83,9 +85,10 @@ def chat_response(message: str, history: List[List[str]], max_length: int, tempe
83
  history.append([message, response])
84
  return "", history
85
 
 
86
  def generate_real_response(message: str, max_length: int, temperature: float) -> str:
87
  """
88
- Gerçek model ile yanıt oluştur
89
  """
90
  if not model or not tokenizer:
91
  return generate_demo_response(message)
@@ -116,230 +119,232 @@ def generate_real_response(message: str, max_length: int, temperature: float) ->
116
  logger.error(f"Model generation error: {e}")
117
  return generate_demo_response(message)
118
 
 
119
  def load_model():
120
  """
121
- Model yükleme (opsiyonel)
122
  """
123
  global model, tokenizer
124
 
125
  try:
126
- # Model path'leri
127
- possible_paths = [
128
- "/data/nova-ai-model",
129
- "./nova-ai-model",
130
- "/app/nova-ai-model"
131
- ]
132
 
133
- model_path = None
134
- for path in possible_paths:
135
- if os.path.exists(path):
136
- model_path = path
137
- logger.info(f"Model found at: {path}")
138
- break
139
 
140
- if not model_path:
141
- logger.warning("No model files found - running in demo mode")
142
- return "🎭 Demo Mode: Model dosyaları bulunamadı, demo yanıtlar kullanılıyor"
143
 
144
- from transformers import AutoTokenizer, AutoModelForCausalLM
 
 
 
 
 
 
 
 
 
145
 
146
- tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
147
  model = AutoModelForCausalLM.from_pretrained(
148
  model_path,
149
- torch_dtype=torch.float16 if device == "cuda" else torch.float32,
150
- device_map="auto" if device == "cuda" else None,
151
- trust_remote_code=True
 
152
  )
153
 
154
- logger.info(f"✅ Nova AI model loaded successfully on {device}")
155
- return f"✅ Nova AI model hazır! ({device})"
156
 
157
  except Exception as e:
158
- logger.error(f"Model loading failed: {e}")
159
- return f"🎭 Demo Mode: Model yüklenemedi, demo yanıtlar kullanılıyor"
160
-
161
- def clear_chat():
162
- """Clear chat history"""
163
- return []
164
 
165
- # Model yükle (başlangıçta)
166
- initial_status = load_model()
167
-
168
- # 🎨 Gradio Interface
169
- def create_interface():
170
  """
171
- Nova AI Gradio interface
172
  """
 
173
 
174
- with gr.Blocks(
175
- theme=gr.themes.Soft(),
176
- title="🚀 Teknova Nova AI",
177
- css="""
178
- .main-header {
179
- text-align: center;
180
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
181
- color: white;
182
- padding: 2rem;
183
- border-radius: 15px;
184
- margin-bottom: 2rem;
185
- box-shadow: 0 8px 32px rgba(0,0,0,0.1);
186
- }
187
- .main-header h1 {
188
- font-size: 2.5rem;
189
- margin-bottom: 0.5rem;
190
- text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
191
- }
192
- .chat-container {
193
- border-radius: 10px;
194
- box-shadow: 0 4px 16px rgba(0,0,0,0.1);
195
- }
196
- .control-panel {
197
- background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
198
- padding: 1.5rem;
199
- border-radius: 10px;
200
- margin: 1rem 0;
201
- }
202
- .example-buttons {
203
- margin: 1rem 0;
204
- }
205
- .footer {
206
- text-align: center;
207
- padding: 2rem;
208
- background: #f8f9fa;
209
- border-radius: 10px;
210
- margin-top: 2rem;
211
- border: 1px solid #e9ecef;
212
- }
213
- """
214
- ) as demo:
215
-
216
- # Header
217
- gr.HTML("""
218
- <div class="main-header">
219
- <h1>🚀 Teknova Nova AI</h1>
220
- <p style="font-size: 1.2rem; margin-bottom: 0.5rem;">Özgün Yapay Zeka Teknolojisi</p>
221
- <p style="font-size: 1rem; opacity: 0.9;"><em>Powered by Teknova - Live on Hugging Face Spaces!</em></p>
222
- </div>
223
- """)
224
 
225
- # Status
226
- gr.Markdown(f"**🔧 Sistem Durumu:** {initial_status}")
227
 
228
- # Main interface
229
- with gr.Row():
230
- with gr.Column(scale=3):
231
- chatbot = gr.Chatbot(
232
- label="💬 Nova AI Sohbet",
233
- height=450,
234
- show_label=True,
235
- container=True,
236
- elem_classes=["chat-container"],
237
- avatar_images=("👤", "🤖")
238
- )
239
-
240
- with gr.Row():
241
- msg = gr.Textbox(
242
- label="✍️ Mesajınız",
243
- placeholder="Nova AI'ye sorunuzu yazın... (Örn: 'Merhaba', 'Yapay zeka nedir?')",
244
- lines=2,
245
- scale=4,
246
- show_label=False
247
- )
248
- send_btn = gr.Button("📤 Gönder", scale=1, variant="primary", size="lg")
249
-
250
- clear_btn = gr.Button("🗑️ Sohbeti Temizle", variant="secondary", size="sm")
251
-
252
- with gr.Column(scale=1):
253
- with gr.Group():
254
- gr.Markdown("### ⚙️ Ayarlar")
255
-
256
- max_length = gr.Slider(
257
- minimum=50,
258
- maximum=500,
259
- value=200,
260
- step=25,
261
- label="📏 Maksimum Uzunluk",
262
- info="Yanıtın ne kadar uzun olacağını belirler"
263
- )
264
-
265
- temperature = gr.Slider(
266
- minimum=0.1,
267
- maximum=1.2,
268
- value=0.7,
269
- step=0.1,
270
- label="🎨 Yaratıcılık (Temperature)",
271
- info="Düşük: tutarlı, Yüksek: yaratıcı"
272
- )
273
-
274
- with gr.Group():
275
- gr.Markdown("### 💡 Bilgi")
276
- gr.Markdown("""
277
- **Nova AI Özellikleri:**
278
- - 🧠 Gelişmiş dil anlama
279
- - 💬 Doğal konuşma
280
- - 🌍 Türkçe optimizasyonu
281
- - ⚡ Hızlı yanıt
282
- """)
283
 
284
- # Example questions
285
- gr.Markdown("### 💬 Örnek Sorular")
286
- with gr.Row(elem_classes=["example-buttons"]):
287
- example_buttons = [
288
- gr.Button("👋 Merhaba Nova AI!", size="sm", variant="secondary"),
289
- gr.Button("🤖 Yapay zeka nedir?", size="sm", variant="secondary"),
290
- gr.Button("🚀 Teknova hakkında bilgi", size="sm", variant="secondary"),
291
- gr.Button("💡 Proje fikirleri öner", size="sm", variant="secondary")
292
- ]
293
 
294
- # Event handlers
295
- send_btn.click(
296
- chat_response,
297
- inputs=[msg, chatbot, max_length, temperature],
298
- outputs=[msg, chatbot],
299
- show_progress=True
300
- )
 
 
 
 
 
301
 
302
- msg.submit(
303
- chat_response,
304
- inputs=[msg, chatbot, max_length, temperature],
305
- outputs=[msg, chatbot],
306
- show_progress=True
307
- )
308
 
309
- clear_btn.click(clear_chat, outputs=chatbot)
 
310
 
311
- # Example button handlers
312
- example_buttons[0].click(lambda: "Merhaba Nova AI!", outputs=msg)
313
- example_buttons[1].click(lambda: "Yapay zeka nedir?", outputs=msg)
314
- example_buttons[2].click(lambda: "Teknova hakkında bilgi ver", outputs=msg)
315
- example_buttons[3].click(lambda: "Bana yenilikçi proje fikirleri öner", outputs=msg)
316
 
317
- # Footer
318
- gr.HTML("""
319
- <div class="footer">
320
- <h3>🚀 Teknova Nova AI</h3>
321
- <p><strong>Özgün yapay zeka teknolojisi</strong></p>
322
- <p>
323
- <a href="https://github.com/veteroner/novaai" target="_blank" style="margin: 0 10px;">📂 GitHub</a> |
324
- <a href="https://huggingface.co/spaces/veteroner/NovaAI" target="_blank" style="margin: 0 10px;">🤗 HF Spaces</a> |
325
- <a href="mailto:teknova@example.com" style="margin: 0 10px;">📧 İletişim</a>
326
- </p>
327
- <p style="margin-top: 1rem; font-size: 0.9rem; color: #666;">
328
- <em>Made with ❤️ by Teknova | Powered by Hugging Face Spaces</em>
329
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
330
  </div>
331
- """)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
332
 
333
- return demo
 
 
 
 
 
 
 
 
334
 
335
- # Create and launch
336
  if __name__ == "__main__":
337
- demo = create_interface()
338
- demo.queue(max_size=20, default_concurrency_limit=5)
339
  demo.launch(
340
  server_name="0.0.0.0",
341
  server_port=7860,
342
  share=False,
343
- show_error=True,
344
- debug=False
345
  )
 
1
  """
2
+ 🚀 Nova AI - Hugging Face Spaces ZeroGPU
3
  Teknova tarafından geliştirilen özgün yapay zeka modeli
4
+ ZeroGPU ile hızlandırılmış
5
  """
6
 
7
  import gradio as gr
 
9
  import os
10
  import logging
11
  import time
12
+ import spaces
13
  from typing import List, Tuple
14
 
15
  # Logging setup
 
85
  history.append([message, response])
86
  return "", history
87
 
88
+ @spaces.GPU
89
  def generate_real_response(message: str, max_length: int, temperature: float) -> str:
90
  """
91
+ Gerçek model ile yanıt oluştur - ZeroGPU destekli
92
  """
93
  if not model or not tokenizer:
94
  return generate_demo_response(message)
 
119
  logger.error(f"Model generation error: {e}")
120
  return generate_demo_response(message)
121
 
122
+ @spaces.GPU
123
  def load_model():
124
  """
125
+ Teknova Nova AI modelini yükle - ZeroGPU destekli
126
  """
127
  global model, tokenizer
128
 
129
  try:
130
+ from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
 
 
 
 
 
131
 
132
+ # Model path - Hugging Face Hub'dan yükle
133
+ model_path = "veteroner/NovaAI"
 
 
 
 
134
 
135
+ logger.info(f"🚀 Teknova Nova AI modeli Hub'dan yükleniyor: {model_path}")
 
 
136
 
137
+ # Tokenizer yükle
138
+ tokenizer = AutoTokenizer.from_pretrained(
139
+ model_path,
140
+ trust_remote_code=True,
141
+ use_fast=True
142
+ )
143
+
144
+ # Pad token ayarla
145
+ if tokenizer.pad_token is None:
146
+ tokenizer.pad_token = tokenizer.eos_token
147
 
148
+ # Model yükle - ZeroGPU optimizasyonu
149
  model = AutoModelForCausalLM.from_pretrained(
150
  model_path,
151
+ device_map="auto",
152
+ trust_remote_code=True,
153
+ torch_dtype=torch.float16,
154
+ low_cpu_mem_usage=True
155
  )
156
 
157
+ logger.info(f"✅ Nova AI model yüklendi ({device})")
158
+ return f"✅ Teknova Nova AI hazır! ({device})"
159
 
160
  except Exception as e:
161
+ logger.error(f"Model yükleme hatası: {e}")
162
+ return f" Model yüklenemedi: {str(e)} - Demo modunda çalışacak"
 
 
 
 
163
 
164
+ @spaces.GPU
165
+ def chat_with_nova(message: str, history: List[Tuple[str, str]]) -> str:
 
 
 
166
  """
167
+ Nova AI ile sohbet et - ZeroGPU destekli
168
  """
169
+ global model, tokenizer
170
 
171
+ if model is None or tokenizer is None:
172
+ # Demo yanıt ver
173
+ return generate_demo_response(message) + "\n\n💡 *Not: Demo modunda çalışıyor.*"
174
+
175
+ if not message.strip():
176
+ return "❓ Lütfen bir mesaj yazın."
177
+
178
+ try:
179
+ # Konuşma geçmişini hazırla
180
+ conversation = ""
181
+ for user_msg, bot_msg in history:
182
+ if user_msg and bot_msg:
183
+ conversation += f"Kullanıcı: {user_msg}\nNova AI: {bot_msg}\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
 
185
+ # Yeni mesajı ekle
186
+ conversation += f"Kullanıcı: {message}\nNova AI:"
187
 
188
+ # Tokenize et
189
+ inputs = tokenizer(
190
+ conversation,
191
+ return_tensors="pt",
192
+ truncation=True,
193
+ max_length=2048,
194
+ padding=True
195
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
 
197
+ # GPU'ya taşı
198
+ if torch.cuda.is_available():
199
+ inputs = {k: v.to(model.device) for k, v in inputs.items()}
 
 
 
 
 
 
200
 
201
+ # Yanıt üret
202
+ with torch.no_grad():
203
+ outputs = model.generate(
204
+ **inputs,
205
+ max_new_tokens=256,
206
+ temperature=0.7,
207
+ top_p=0.9,
208
+ do_sample=True,
209
+ pad_token_id=tokenizer.pad_token_id,
210
+ eos_token_id=tokenizer.eos_token_id,
211
+ repetition_penalty=1.1
212
+ )
213
 
214
+ # Yanıtı decode et
215
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
 
 
 
 
216
 
217
+ # Sadece yeni üretilen kısmı al
218
+ new_response = response[len(conversation):].strip()
219
 
220
+ return new_response if new_response else "Üzgünüm, yanıt üretemedi."
 
 
 
 
221
 
222
+ except Exception as e:
223
+ logger.error(f"Chat hatası: {e}")
224
+ return f"❌ Yanıt üretirken hata: {str(e)}"
225
+
226
+ # Model yüklemeyi başlat
227
+ logger.info("Model yükleme başlatılıyor...")
228
+ load_status = load_model()
229
+ logger.info(f"Model durumu: {load_status}")
230
+
231
+ # Gradio arayüzü
232
+ with gr.Blocks(
233
+ theme=gr.themes.Soft(),
234
+ title="Teknova Nova AI - ZeroGPU",
235
+ css="""
236
+ .gradio-container {
237
+ max-width: 900px;
238
+ margin: 0 auto;
239
+ }
240
+ .header-text {
241
+ text-align: center;
242
+ padding: 20px;
243
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
244
+ color: white;
245
+ border-radius: 15px;
246
+ margin-bottom: 20px;
247
+ }
248
+ """
249
+ ) as demo:
250
+
251
+ # Header
252
+ gr.HTML("""
253
+ <div class="header-text">
254
+ <h1 style="font-size: 2.5rem; margin: 0; font-weight: bold;">
255
+ 🚀 Teknova Nova AI
256
+ </h1>
257
+ <p style="font-size: 1.2rem; margin: 10px 0; opacity: 0.9;">
258
+ Türkiye'nin Özgün Yapay Zeka Modeli
259
+ </p>
260
+ <div style="background: rgba(255,255,255,0.2); padding: 8px 16px; border-radius: 20px; display: inline-block; font-size: 0.9rem;">
261
+ 🧠 Nova AI • 🇹�� Türkçe Optimize • ⚡ ZeroGPU Hızlı
262
  </div>
263
+ </div>
264
+ """)
265
+
266
+ # Chat interface
267
+ chatbot = gr.Chatbot(
268
+ height=500,
269
+ show_label=False,
270
+ show_share_button=True,
271
+ show_copy_button=True,
272
+ avatar_images=[None, "🤖"],
273
+ bubble_full_width=False
274
+ )
275
+
276
+ with gr.Row():
277
+ msg = gr.Textbox(
278
+ placeholder="Nova AI'ya mesajınızı yazın... (Örn: Merhaba, nasılsın?)",
279
+ show_label=False,
280
+ scale=4,
281
+ container=False
282
+ )
283
+ submit = gr.Button("🚀 Gönder", scale=1, variant="primary")
284
+
285
+ with gr.Row():
286
+ clear = gr.Button("🗑️ Temizle", scale=1)
287
+ retry = gr.Button("🔄 Tekrar Dene", scale=1)
288
+
289
+ # Examples
290
+ gr.Examples(
291
+ examples=[
292
+ "Merhaba Nova AI, nasılsın?",
293
+ "Yapay zeka nedir?",
294
+ "Teknova hakkında bilgi ver",
295
+ "Bana bir hikaye anlat",
296
+ "Python programlama hakkında bilgi ver"
297
+ ],
298
+ inputs=msg,
299
+ label="💡 Örnek Sorular"
300
+ )
301
+
302
+ # Footer
303
+ gr.HTML("""
304
+ <div style="text-align: center; padding: 15px; color: #666; font-size: 0.9rem;">
305
+ <p>🌟 <strong>Teknova Nova AI</strong> - Tamamen özgün Türkçe dil modeli</p>
306
+ <p>🚀 ZeroGPU teknolojisi ile hızlandırılmış</p>
307
+ <p style="color: #999;">⚡ Teknova Innovation ile güçlendirilmiştir</p>
308
+ </div>
309
+ """)
310
+
311
+ # Event handlers
312
+ def user_message(message, history):
313
+ return "", history + [[message, None]]
314
+
315
+ @spaces.GPU
316
+ def bot_message(history):
317
+ """Bot yanıtı oluştur - ZeroGPU destekli"""
318
+ if history and history[-1][1] is None:
319
+ user_msg = history[-1][0]
320
+ bot_response = chat_with_nova(user_msg, history[:-1])
321
+ history[-1][1] = bot_response
322
+ return history
323
+
324
+ @spaces.GPU
325
+ def retry_last(history):
326
+ """Son mesajı yeniden dene - ZeroGPU destekli"""
327
+ if history and history[-1][1] is not None:
328
+ user_msg = history[-1][0]
329
+ bot_response = chat_with_nova(user_msg, history[:-1])
330
+ history[-1][1] = bot_response
331
+ return history
332
 
333
+ # Event bindings
334
+ msg.submit(user_message, [msg, chatbot], [msg, chatbot], queue=False).then(
335
+ bot_message, chatbot, chatbot
336
+ )
337
+ submit.click(user_message, [msg, chatbot], [msg, chatbot], queue=False).then(
338
+ bot_message, chatbot, chatbot
339
+ )
340
+ clear.click(lambda: None, None, chatbot, queue=False)
341
+ retry.click(retry_last, chatbot, chatbot)
342
 
343
+ # Launch
344
  if __name__ == "__main__":
 
 
345
  demo.launch(
346
  server_name="0.0.0.0",
347
  server_port=7860,
348
  share=False,
349
+ show_error=True
 
350
  )
gradio_app.py CHANGED
@@ -2,55 +2,70 @@ import gradio as gr
2
  import torch
3
  from transformers import AutoModelForCausalLM, AutoTokenizer
4
  import os
 
5
 
6
- # Nova AI Model bilgileri - Teknova'nın özgün modeli
7
- MODEL_NAME = "./nova-ai-model" # Kendi Nova AI modelinizin yolu
8
- MODEL_PATH = "/content/nova-ai-model" # Colab için path
 
 
 
 
9
 
10
- # Artık token gerekmiyor - kendi modeliniz
11
- print("🚀 Teknova Nova AI - Özgün model yükleniyor...")
12
- print("💡 Hugging Face token gerektirmez - tamamen özgün!")
13
 
14
  # Global değişkenler
15
  model = None
16
  tokenizer = None
17
 
18
- def load_model():
19
- """Teknova Nova AI modelini yükle - Özgün model"""
 
20
  global model, tokenizer
21
 
22
- print("🚀 Teknova Nova AI modeli yükleniyor...")
23
- print("🌟 Bu tamamen özgün bir Teknova Nova AI modelidir!")
24
-
25
- # Colab için model path kontrolü
26
- model_path = MODEL_PATH if os.path.exists(MODEL_PATH) else MODEL_NAME
27
 
28
  try:
29
- # Nova AI Tokenizer yükle
30
  tokenizer = AutoTokenizer.from_pretrained(
31
  model_path,
32
  trust_remote_code=True
33
  )
34
 
35
- # Nova AI Model yükle - Teknova optimizasyonu
 
 
 
 
 
 
 
36
  model = AutoModelForCausalLM.from_pretrained(
37
  model_path,
38
- torch_dtype=torch.float16,
39
- device_map="auto",
40
- trust_remote_code=True,
41
- load_in_8bit=True # Teknova memory optimization
42
  )
43
 
44
- print("✅ Teknova Nova AI modeli başarıyla yüklendi!")
45
- print("🎉 Özgün Nova AI teknolojisi aktif!")
46
- return "🚀 Teknova Nova AI hazır! Özgün AI teknolojisiyle sohbet edebilirsiniz."
47
 
48
  except Exception as e:
49
- print(f"❌ Nova AI model yükleme hatası: {e}")
50
- return f"❌ Hata: {str(e)}\n💡 Nova AI model dosyalarınızı doğru konuma yüklediğinizden emin olun."
 
51
 
 
 
 
 
 
 
 
 
 
52
  def chat_response(message, history):
53
- """Teknova Nova AI ile sohbet yanıtı üret"""
54
  global model, tokenizer
55
 
56
  if model is None or tokenizer is None:
@@ -76,7 +91,7 @@ def chat_response(message, history):
76
  max_length=2048
77
  ).to(model.device)
78
 
79
- # Nova AI yanıt üret - Teknova optimizasyonu
80
  with torch.no_grad():
81
  outputs = model.generate(
82
  **inputs,
@@ -99,8 +114,9 @@ def chat_response(message, history):
99
  except Exception as e:
100
  return f"❌ Nova AI yanıt üretirken hata: {str(e)}"
101
 
102
- # Model yüklemeyi başlat
103
- load_model()
 
104
 
105
  # Gradio arayüzü oluştur
106
  with gr.Blocks(
@@ -128,7 +144,7 @@ with gr.Blocks(
128
  <strong>Teknova</strong> tarafından geliştirilen <strong>özgün</strong> yapay zeka modeli
129
  </p>
130
  <div style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); color: white; padding: 8px 16px; border-radius: 20px; display: inline-block; font-size: 0.9rem;">
131
- ⚡ Özgün Nova AI Teknolojisi • 🧠 Teknova Innovation
132
  </div>
133
  <p style="font-size: 0.9rem; color: #888; margin-top: 10px;">
134
  🌟 Bu tamamen özgün bir Teknova Nova AI modelidir - Token gerektirmez
@@ -136,6 +152,19 @@ with gr.Blocks(
136
  </div>
137
  """)
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  chatbot = gr.Chatbot(
140
  height=500,
141
  show_label=False,
@@ -144,7 +173,8 @@ with gr.Blocks(
144
  avatar_images=[
145
  None, # User avatar
146
  "🤖" # Bot avatar
147
- ]
 
148
  )
149
 
150
  with gr.Row():
@@ -164,7 +194,7 @@ with gr.Blocks(
164
  <br>
165
  <small style="color: #ff6b6b;">🚀 <strong>Teknova Nova AI</strong> - Tamamen özgün model teknolojisi</small>
166
  <br>
167
- <small style="color: #4ecdc4;">🌟 Hugging Face token gerektirmez - Kendi modeliniz!</small>
168
  </div>
169
  """)
170
 
@@ -186,9 +216,11 @@ with gr.Blocks(
186
  )
187
  clear.click(lambda: None, None, chatbot, queue=False)
188
 
 
 
 
189
  if __name__ == "__main__":
190
  demo.launch(
191
  server_name="0.0.0.0",
192
- server_port=7860,
193
- share=True
194
  )
 
2
  import torch
3
  from transformers import AutoModelForCausalLM, AutoTokenizer
4
  import os
5
+ import spaces
6
 
7
+ # ================== Model Seçenekleri ==================
8
+ # Kullanıcı arayüzünden seçilebilecek modellerin listesi.
9
+ # Anahtar (dict key) arayüzde gösterilen isim, değer yol (path).
10
+ MODEL_OPTIONS = {
11
+ "Nova AI Hub": "veteroner/NovaAI",
12
+ "Büyük Model (nova-ai-model)": "./nova-ai-model"
13
+ }
14
 
15
+ # Seçili modelin anahtarını tutan değişken
16
+ current_model_key = None
 
17
 
18
  # Global değişkenler
19
  model = None
20
  tokenizer = None
21
 
22
+ @spaces.GPU
23
+ def load_model(model_path: str):
24
+ """Seçilen model yoluna göre Nova AI modelini yükle - ZeroGPU destekli."""
25
  global model, tokenizer
26
 
27
+ print(f"🚀 Nova AI modeli yükleniyor... ({model_path})")
 
 
 
 
28
 
29
  try:
30
+ # Tokenizer yükle
31
  tokenizer = AutoTokenizer.from_pretrained(
32
  model_path,
33
  trust_remote_code=True
34
  )
35
 
36
+ # --------- ZeroGPU için yükleme argümanları ---------
37
+ load_kwargs = {
38
+ "torch_dtype": torch.float16,
39
+ "trust_remote_code": True,
40
+ "device_map": "auto" # ZeroGPU otomatik GPU tahsisi
41
+ }
42
+
43
+ # Model yükle (8-bit quantization ZeroGPU'da desteklenmez)
44
  model = AutoModelForCausalLM.from_pretrained(
45
  model_path,
46
+ **load_kwargs
 
 
 
47
  )
48
 
49
+ success_msg = f"✅ Nova AI modeli yüklendi: {os.path.basename(model_path)} (ZeroGPU)"
50
+ print(success_msg)
51
+ return success_msg
52
 
53
  except Exception as e:
54
+ error_msg = f"❌ Nova AI model yükleme hatası: {str(e)}"
55
+ print(error_msg)
56
+ return error_msg
57
 
58
+ # ================== Model Seçim Yardımcı Fonksiyonu ==================
59
+ def select_model(model_key: str):
60
+ """UI'daki seçim değiştiğinde çağrılır, modeli yeniden yükler."""
61
+ global current_model_key
62
+ current_model_key = model_key
63
+ model_path = MODEL_OPTIONS[model_key]
64
+ return load_model(model_path)
65
+
66
+ @spaces.GPU
67
  def chat_response(message, history):
68
+ """Teknova Nova AI ile sohbet yanıtı üret - ZeroGPU destekli"""
69
  global model, tokenizer
70
 
71
  if model is None or tokenizer is None:
 
91
  max_length=2048
92
  ).to(model.device)
93
 
94
+ # Nova AI yanıt üret - ZeroGPU optimizasyonu
95
  with torch.no_grad():
96
  outputs = model.generate(
97
  **inputs,
 
114
  except Exception as e:
115
  return f"❌ Nova AI yanıt üretirken hata: {str(e)}"
116
 
117
+ # Başlangıçta ilk (varsayılan) modeli yükle
118
+ first_key = list(MODEL_OPTIONS.keys())[0] # Küçük model varsayılan
119
+ initial_status = select_model(first_key)
120
 
121
  # Gradio arayüzü oluştur
122
  with gr.Blocks(
 
144
  <strong>Teknova</strong> tarafından geliştirilen <strong>özgün</strong> yapay zeka modeli
145
  </p>
146
  <div style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); color: white; padding: 8px 16px; border-radius: 20px; display: inline-block; font-size: 0.9rem;">
147
+ ⚡ Özgün Nova AI Teknolojisi • �� Teknova Innovation • 🚀 ZeroGPU Destekli
148
  </div>
149
  <p style="font-size: 0.9rem; color: #888; margin-top: 10px;">
150
  🌟 Bu tamamen özgün bir Teknova Nova AI modelidir - Token gerektirmez
 
152
  </div>
153
  """)
154
 
155
+ # ================== Model Seçim Bileşenleri ==================
156
+ with gr.Row():
157
+ model_selector = gr.Radio(
158
+ choices=list(MODEL_OPTIONS.keys()),
159
+ value=first_key,
160
+ label="Model Seçimi"
161
+ )
162
+ statusbox = gr.Textbox(
163
+ value=initial_status,
164
+ label="Durum",
165
+ interactive=False
166
+ )
167
+
168
  chatbot = gr.Chatbot(
169
  height=500,
170
  show_label=False,
 
173
  avatar_images=[
174
  None, # User avatar
175
  "🤖" # Bot avatar
176
+ ],
177
+ type="messages"
178
  )
179
 
180
  with gr.Row():
 
194
  <br>
195
  <small style="color: #ff6b6b;">🚀 <strong>Teknova Nova AI</strong> - Tamamen özgün model teknolojisi</small>
196
  <br>
197
+ <small style="color: #4ecdc4;">🌟 Hugging Face ZeroGPU ile hızlandırılmış!</small>
198
  </div>
199
  """)
200
 
 
216
  )
217
  clear.click(lambda: None, None, chatbot, queue=False)
218
 
219
+ # Model seçim değişikliğinde modeli yeniden yükle
220
+ model_selector.change(select_model, inputs=model_selector, outputs=statusbox)
221
+
222
  if __name__ == "__main__":
223
  demo.launch(
224
  server_name="0.0.0.0",
225
+ share=True # port otomatik bulunur, 0.0.0.0 + ilk boş port
 
226
  )
hf_space_app.py ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ 🚀 Nova AI - Hugging Face Spaces ZeroGPU
3
+ Teknova tarafından geliştirilen özgün yapay zeka modeli
4
+ ZeroGPU ile hızlandırılmış
5
+ """
6
+
7
+ import gradio as gr
8
+ import torch
9
+ from transformers import AutoModelForCausalLM, AutoTokenizer
10
+ import spaces
11
+ import os
12
+
13
+ # Model seçenekleri - Hugging Face Hub'dan yükle
14
+ MODEL_PATH = "veteroner/NovaAI" # Hub'daki model
15
+
16
+ # Global değişkenler
17
+ model = None
18
+ tokenizer = None
19
+
20
+ @spaces.GPU
21
+ def load_model():
22
+ """Nova AI modelini ZeroGPU ile yükle"""
23
+ global model, tokenizer
24
+
25
+ print("🚀 Nova AI modeli ZeroGPU ile yükleniyor...")
26
+
27
+ try:
28
+ # Tokenizer yükle
29
+ tokenizer = AutoTokenizer.from_pretrained(
30
+ MODEL_PATH,
31
+ trust_remote_code=True,
32
+ use_fast=True
33
+ )
34
+
35
+ # Pad token ayarla
36
+ if tokenizer.pad_token is None:
37
+ tokenizer.pad_token = tokenizer.eos_token
38
+
39
+ # Model yükle - ZeroGPU optimizasyonu
40
+ model = AutoModelForCausalLM.from_pretrained(
41
+ MODEL_PATH,
42
+ torch_dtype=torch.float16,
43
+ device_map="auto",
44
+ trust_remote_code=True,
45
+ low_cpu_mem_usage=True
46
+ )
47
+
48
+ print("✅ Nova AI modeli ZeroGPU ile yüklendi!")
49
+ return "✅ Nova AI hazır! (ZeroGPU)"
50
+
51
+ except Exception as e:
52
+ error_msg = f"❌ Model yükleme hatası: {str(e)}"
53
+ print(error_msg)
54
+ return error_msg
55
+
56
+ @spaces.GPU
57
+ def chat_with_nova(message, history):
58
+ """Nova AI ile sohbet et - ZeroGPU destekli"""
59
+ global model, tokenizer
60
+
61
+ if model is None or tokenizer is None:
62
+ # Model yüklenmemişse yükle
63
+ load_status = load_model()
64
+ if "❌" in load_status:
65
+ return load_status
66
+
67
+ if not message.strip():
68
+ return "❓ Lütfen bir mesaj yazın."
69
+
70
+ try:
71
+ # Konuşma geçmişini hazırla
72
+ conversation = ""
73
+ for user_msg, bot_msg in history:
74
+ if user_msg and bot_msg:
75
+ conversation += f"Kullanıcı: {user_msg}\nNova AI: {bot_msg}\n"
76
+
77
+ # Yeni mesajı ekle
78
+ conversation += f"Kullanıcı: {message}\nNova AI:"
79
+
80
+ # Tokenize et
81
+ inputs = tokenizer(
82
+ conversation,
83
+ return_tensors="pt",
84
+ truncation=True,
85
+ max_length=1024,
86
+ padding=True
87
+ )
88
+
89
+ # GPU'ya taşı
90
+ if torch.cuda.is_available():
91
+ inputs = {k: v.to(model.device) for k, v in inputs.items()}
92
+
93
+ # Yanıt üret
94
+ with torch.no_grad():
95
+ outputs = model.generate(
96
+ **inputs,
97
+ max_new_tokens=256,
98
+ temperature=0.7,
99
+ top_p=0.9,
100
+ do_sample=True,
101
+ pad_token_id=tokenizer.pad_token_id,
102
+ eos_token_id=tokenizer.eos_token_id,
103
+ repetition_penalty=1.1
104
+ )
105
+
106
+ # Decode et
107
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
108
+ nova_response = response[len(conversation):].strip()
109
+
110
+ return nova_response if nova_response else "Üzgünüm, yanıt üretemedi."
111
+
112
+ except Exception as e:
113
+ return f"❌ Hata: {str(e)}"
114
+
115
+ # Gradio arayüzü
116
+ with gr.Blocks(
117
+ theme=gr.themes.Soft(),
118
+ title="Nova AI - ZeroGPU",
119
+ css="""
120
+ .gradio-container {
121
+ max-width: 800px;
122
+ margin: 0 auto;
123
+ }
124
+ .chat-message {
125
+ padding: 10px;
126
+ margin: 5px 0;
127
+ border-radius: 10px;
128
+ }
129
+ """
130
+ ) as demo:
131
+
132
+ gr.HTML("""
133
+ <div style="text-align: center; padding: 20px;">
134
+ <h1 style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); -webkit-background-clip: text; -webkit-text-fill-color: transparent; font-size: 2.5rem; font-weight: bold;">
135
+ 🚀 Teknova Nova AI
136
+ </h1>
137
+ <p style="font-size: 1.2rem; color: #666; margin: 10px 0;">
138
+ <strong>Teknova</strong> tarafından geliştirilen <strong>özgün</strong> yapay zeka modeli
139
+ </p>
140
+ <div style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); color: white; padding: 8px 16px; border-radius: 20px; display: inline-block; font-size: 0.9rem;">
141
+ ⚡ Özgün Nova AI • 🧠 Teknova Innovation • 🚀 ZeroGPU Hızlı
142
+ </div>
143
+ <p style="font-size: 0.9rem; color: #888; margin-top: 10px;">
144
+ 🌟 Hugging Face ZeroGPU ile hızlandırılmış
145
+ </p>
146
+ </div>
147
+ """)
148
+
149
+ chatbot = gr.ChatInterface(
150
+ fn=chat_with_nova,
151
+ title="Nova AI Chat",
152
+ description="Teknova'nın özgün yapay zeka modeli ile sohbet edin",
153
+ examples=[
154
+ "Merhaba Nova AI, nasılsın?",
155
+ "Yapay zeka nedir?",
156
+ "Teknova hakkında bilgi ver",
157
+ "Bana bir hikaye anlat",
158
+ "Python programlama hakkında bilgi ver"
159
+ ],
160
+ cache_examples=False,
161
+ retry_btn="🔄 Tekrar Dene",
162
+ undo_btn="↩️ Geri Al",
163
+ clear_btn="🗑️ Temizle",
164
+ submit_btn="🚀 Gönder",
165
+ textbox=gr.Textbox(
166
+ placeholder="Nova AI ile sohbet etmek için mesajınızı yazın...",
167
+ container=False,
168
+ scale=7
169
+ )
170
+ )
171
+
172
+ gr.HTML("""
173
+ <div style="text-align: center; padding: 15px; color: #666; font-size: 0.9rem;">
174
+ <p>🌟 <strong>Teknova Nova AI</strong> - Tamamen özgün Türkçe dil modeli</p>
175
+ <p>🚀 ZeroGPU teknolojisi ile hızlandırılmış</p>
176
+ <p style="color: #999;">⚡ Teknova Innovation ile güçlendirilmiştir</p>
177
+ </div>
178
+ """)
179
+
180
+ if __name__ == "__main__":
181
+ demo.launch(
182
+ server_name="0.0.0.0",
183
+ server_port=7860,
184
+ share=False
185
+ )
requirements.txt CHANGED
@@ -1,5 +1,10 @@
1
- gradio==4.11.0
2
- torch>=1.13.0
3
- transformers>=4.25.0
4
  accelerate>=0.20.0
5
- sentencepiece>=0.1.97
 
 
 
 
 
 
1
+ torch>=2.0.0
2
+ gradio>=4.44.1
3
+ transformers>=4.30.0
4
  accelerate>=0.20.0
5
+ bitsandbytes>=0.41.0
6
+ spaces>=0.19.0
7
+ numpy>=1.24.0
8
+ sentencepiece>=0.1.99
9
+ protobuf>=3.20.0
10
+ safetensors>=0.3.0