Upload 18 files
Browse files- .gitignore +166 -166
- CONTRIBUTING.md +285 -285
- DEPLOY_REHBERI.md +156 -156
- Dockerfile +44 -44
- LICENSE +30 -30
- MODEL_SETUP.md +77 -77
- README.md +289 -289
- app.py +359 -359
- basit_konsol.py +174 -174
- baslat_api.bat +34 -34
- baslat_basit_konsol.bat +49 -49
- baslat_gradio.bat +50 -50
- baslat_konsol.bat +32 -32
- gradio_app.py +218 -218
- hf_space_app.py +194 -194
- requirements.txt +9 -9
.gitignore
CHANGED
|
@@ -1,167 +1,167 @@
|
|
| 1 |
-
# 🚀 Teknova Nova AI - Git Ignore File
|
| 2 |
-
|
| 3 |
-
# 🧠 AI Model Files (çok büyük oldukları için)
|
| 4 |
-
nova-ai-model/
|
| 5 |
-
/nova-ai-model/
|
| 6 |
-
./nova-ai-model/
|
| 7 |
-
/content/nova-ai-model/
|
| 8 |
-
/data/nova-ai-model/
|
| 9 |
-
|
| 10 |
-
# 🐍 Python
|
| 11 |
-
__pycache__/
|
| 12 |
-
*.py[cod]
|
| 13 |
-
*$py.class
|
| 14 |
-
*.so
|
| 15 |
-
.Python
|
| 16 |
-
build/
|
| 17 |
-
develop-eggs/
|
| 18 |
-
dist/
|
| 19 |
-
downloads/
|
| 20 |
-
eggs/
|
| 21 |
-
.eggs/
|
| 22 |
-
lib/
|
| 23 |
-
lib64/
|
| 24 |
-
parts/
|
| 25 |
-
sdist/
|
| 26 |
-
var/
|
| 27 |
-
wheels/
|
| 28 |
-
pip-wheel-metadata/
|
| 29 |
-
share/python-wheels/
|
| 30 |
-
*.egg-info/
|
| 31 |
-
.installed.cfg
|
| 32 |
-
*.egg
|
| 33 |
-
MANIFEST
|
| 34 |
-
|
| 35 |
-
# 🧪 Testing
|
| 36 |
-
.pytest_cache/
|
| 37 |
-
.coverage
|
| 38 |
-
htmlcov/
|
| 39 |
-
.tox/
|
| 40 |
-
.nox/
|
| 41 |
-
.coverage.*
|
| 42 |
-
.cache
|
| 43 |
-
nosetests.xml
|
| 44 |
-
coverage.xml
|
| 45 |
-
*.cover
|
| 46 |
-
*.py,cover
|
| 47 |
-
.hypothesis/
|
| 48 |
-
|
| 49 |
-
# 🌐 Web
|
| 50 |
-
.env
|
| 51 |
-
.venv
|
| 52 |
-
env/
|
| 53 |
-
venv/
|
| 54 |
-
ENV/
|
| 55 |
-
env.bak/
|
| 56 |
-
venv.bak/
|
| 57 |
-
|
| 58 |
-
# 📓 Jupyter Notebook
|
| 59 |
-
.ipynb_checkpoints
|
| 60 |
-
*/.ipynb_checkpoints/*
|
| 61 |
-
|
| 62 |
-
# 🔧 IDEs
|
| 63 |
-
.vscode/
|
| 64 |
-
.idea/
|
| 65 |
-
*.swp
|
| 66 |
-
*.swo
|
| 67 |
-
*~
|
| 68 |
-
|
| 69 |
-
# 🏠 OS
|
| 70 |
-
.DS_Store
|
| 71 |
-
.DS_Store?
|
| 72 |
-
._*
|
| 73 |
-
.Spotlight-V100
|
| 74 |
-
.Trashes
|
| 75 |
-
ehthumbs.db
|
| 76 |
-
Thumbs.db
|
| 77 |
-
|
| 78 |
-
# 📊 Logs
|
| 79 |
-
*.log
|
| 80 |
-
logs/
|
| 81 |
-
*.out
|
| 82 |
-
|
| 83 |
-
# 🤗 Hugging Face
|
| 84 |
-
.huggingface/
|
| 85 |
-
huggingface_hub/
|
| 86 |
-
|
| 87 |
-
# 🐳 Docker
|
| 88 |
-
.dockerignore
|
| 89 |
-
|
| 90 |
-
# 📦 Node.js (eğer varsa)
|
| 91 |
-
node_modules/
|
| 92 |
-
npm-debug.log*
|
| 93 |
-
yarn-debug.log*
|
| 94 |
-
yarn-error.log*
|
| 95 |
-
|
| 96 |
-
# 🔐 Secrets
|
| 97 |
-
.env.local
|
| 98 |
-
.env.production
|
| 99 |
-
.env.staging
|
| 100 |
-
config.json
|
| 101 |
-
secrets.json
|
| 102 |
-
|
| 103 |
-
# 📊 Model Artifacts
|
| 104 |
-
*.bin
|
| 105 |
-
*.safetensors
|
| 106 |
-
*.pt
|
| 107 |
-
*.pth
|
| 108 |
-
model.bin
|
| 109 |
-
pytorch_model.bin
|
| 110 |
-
tf_model.h5
|
| 111 |
-
|
| 112 |
-
# 🚀 Gradio
|
| 113 |
-
gradio_cached_examples/
|
| 114 |
-
flagged/
|
| 115 |
-
|
| 116 |
-
# 🧠 AI/ML temporary files
|
| 117 |
-
wandb/
|
| 118 |
-
mlruns/
|
| 119 |
-
.tensorboard/
|
| 120 |
-
|
| 121 |
-
# Virtual Environment
|
| 122 |
-
venv/
|
| 123 |
-
venv311/
|
| 124 |
-
env/
|
| 125 |
-
ENV/
|
| 126 |
-
env.bak/
|
| 127 |
-
venv.bak/
|
| 128 |
-
|
| 129 |
-
# IDE
|
| 130 |
-
.vscode/
|
| 131 |
-
.idea/
|
| 132 |
-
*.swp
|
| 133 |
-
*.swo
|
| 134 |
-
*~
|
| 135 |
-
|
| 136 |
-
# OS
|
| 137 |
-
.DS_Store
|
| 138 |
-
.DS_Store?
|
| 139 |
-
._*
|
| 140 |
-
.Spotlight-V100
|
| 141 |
-
.Trashes
|
| 142 |
-
ehthumbs.db
|
| 143 |
-
Thumbs.db
|
| 144 |
-
|
| 145 |
-
# Nova AI Model Files (Entire folder - too large for GitHub)
|
| 146 |
-
mistral-7b/
|
| 147 |
-
|
| 148 |
-
# Logs
|
| 149 |
-
*.log
|
| 150 |
-
logs/
|
| 151 |
-
|
| 152 |
-
# Environment variables
|
| 153 |
-
.env
|
| 154 |
-
.env.local
|
| 155 |
-
|
| 156 |
-
# Gradio temporary files
|
| 157 |
-
gradio_cached_examples/
|
| 158 |
-
flagged/
|
| 159 |
-
|
| 160 |
-
# FastAPI
|
| 161 |
-
.pytest_cache/
|
| 162 |
-
|
| 163 |
-
# Temporary files
|
| 164 |
-
*.tmp
|
| 165 |
-
*.temp
|
| 166 |
-
temp/
|
| 167 |
tmp/
|
|
|
|
| 1 |
+
# 🚀 Teknova Nova AI - Git Ignore File
|
| 2 |
+
|
| 3 |
+
# 🧠 AI Model Files (çok büyük oldukları için)
|
| 4 |
+
nova-ai-model/
|
| 5 |
+
/nova-ai-model/
|
| 6 |
+
./nova-ai-model/
|
| 7 |
+
/content/nova-ai-model/
|
| 8 |
+
/data/nova-ai-model/
|
| 9 |
+
|
| 10 |
+
# 🐍 Python
|
| 11 |
+
__pycache__/
|
| 12 |
+
*.py[cod]
|
| 13 |
+
*$py.class
|
| 14 |
+
*.so
|
| 15 |
+
.Python
|
| 16 |
+
build/
|
| 17 |
+
develop-eggs/
|
| 18 |
+
dist/
|
| 19 |
+
downloads/
|
| 20 |
+
eggs/
|
| 21 |
+
.eggs/
|
| 22 |
+
lib/
|
| 23 |
+
lib64/
|
| 24 |
+
parts/
|
| 25 |
+
sdist/
|
| 26 |
+
var/
|
| 27 |
+
wheels/
|
| 28 |
+
pip-wheel-metadata/
|
| 29 |
+
share/python-wheels/
|
| 30 |
+
*.egg-info/
|
| 31 |
+
.installed.cfg
|
| 32 |
+
*.egg
|
| 33 |
+
MANIFEST
|
| 34 |
+
|
| 35 |
+
# 🧪 Testing
|
| 36 |
+
.pytest_cache/
|
| 37 |
+
.coverage
|
| 38 |
+
htmlcov/
|
| 39 |
+
.tox/
|
| 40 |
+
.nox/
|
| 41 |
+
.coverage.*
|
| 42 |
+
.cache
|
| 43 |
+
nosetests.xml
|
| 44 |
+
coverage.xml
|
| 45 |
+
*.cover
|
| 46 |
+
*.py,cover
|
| 47 |
+
.hypothesis/
|
| 48 |
+
|
| 49 |
+
# 🌐 Web
|
| 50 |
+
.env
|
| 51 |
+
.venv
|
| 52 |
+
env/
|
| 53 |
+
venv/
|
| 54 |
+
ENV/
|
| 55 |
+
env.bak/
|
| 56 |
+
venv.bak/
|
| 57 |
+
|
| 58 |
+
# 📓 Jupyter Notebook
|
| 59 |
+
.ipynb_checkpoints
|
| 60 |
+
*/.ipynb_checkpoints/*
|
| 61 |
+
|
| 62 |
+
# 🔧 IDEs
|
| 63 |
+
.vscode/
|
| 64 |
+
.idea/
|
| 65 |
+
*.swp
|
| 66 |
+
*.swo
|
| 67 |
+
*~
|
| 68 |
+
|
| 69 |
+
# 🏠 OS
|
| 70 |
+
.DS_Store
|
| 71 |
+
.DS_Store?
|
| 72 |
+
._*
|
| 73 |
+
.Spotlight-V100
|
| 74 |
+
.Trashes
|
| 75 |
+
ehthumbs.db
|
| 76 |
+
Thumbs.db
|
| 77 |
+
|
| 78 |
+
# 📊 Logs
|
| 79 |
+
*.log
|
| 80 |
+
logs/
|
| 81 |
+
*.out
|
| 82 |
+
|
| 83 |
+
# 🤗 Hugging Face
|
| 84 |
+
.huggingface/
|
| 85 |
+
huggingface_hub/
|
| 86 |
+
|
| 87 |
+
# 🐳 Docker
|
| 88 |
+
.dockerignore
|
| 89 |
+
|
| 90 |
+
# 📦 Node.js (eğer varsa)
|
| 91 |
+
node_modules/
|
| 92 |
+
npm-debug.log*
|
| 93 |
+
yarn-debug.log*
|
| 94 |
+
yarn-error.log*
|
| 95 |
+
|
| 96 |
+
# 🔐 Secrets
|
| 97 |
+
.env.local
|
| 98 |
+
.env.production
|
| 99 |
+
.env.staging
|
| 100 |
+
config.json
|
| 101 |
+
secrets.json
|
| 102 |
+
|
| 103 |
+
# 📊 Model Artifacts
|
| 104 |
+
*.bin
|
| 105 |
+
*.safetensors
|
| 106 |
+
*.pt
|
| 107 |
+
*.pth
|
| 108 |
+
model.bin
|
| 109 |
+
pytorch_model.bin
|
| 110 |
+
tf_model.h5
|
| 111 |
+
|
| 112 |
+
# 🚀 Gradio
|
| 113 |
+
gradio_cached_examples/
|
| 114 |
+
flagged/
|
| 115 |
+
|
| 116 |
+
# 🧠 AI/ML temporary files
|
| 117 |
+
wandb/
|
| 118 |
+
mlruns/
|
| 119 |
+
.tensorboard/
|
| 120 |
+
|
| 121 |
+
# Virtual Environment
|
| 122 |
+
venv/
|
| 123 |
+
venv311/
|
| 124 |
+
env/
|
| 125 |
+
ENV/
|
| 126 |
+
env.bak/
|
| 127 |
+
venv.bak/
|
| 128 |
+
|
| 129 |
+
# IDE
|
| 130 |
+
.vscode/
|
| 131 |
+
.idea/
|
| 132 |
+
*.swp
|
| 133 |
+
*.swo
|
| 134 |
+
*~
|
| 135 |
+
|
| 136 |
+
# OS
|
| 137 |
+
.DS_Store
|
| 138 |
+
.DS_Store?
|
| 139 |
+
._*
|
| 140 |
+
.Spotlight-V100
|
| 141 |
+
.Trashes
|
| 142 |
+
ehthumbs.db
|
| 143 |
+
Thumbs.db
|
| 144 |
+
|
| 145 |
+
# Nova AI Model Files (Entire folder - too large for GitHub)
|
| 146 |
+
mistral-7b/
|
| 147 |
+
|
| 148 |
+
# Logs
|
| 149 |
+
*.log
|
| 150 |
+
logs/
|
| 151 |
+
|
| 152 |
+
# Environment variables
|
| 153 |
+
.env
|
| 154 |
+
.env.local
|
| 155 |
+
|
| 156 |
+
# Gradio temporary files
|
| 157 |
+
gradio_cached_examples/
|
| 158 |
+
flagged/
|
| 159 |
+
|
| 160 |
+
# FastAPI
|
| 161 |
+
.pytest_cache/
|
| 162 |
+
|
| 163 |
+
# Temporary files
|
| 164 |
+
*.tmp
|
| 165 |
+
*.temp
|
| 166 |
+
temp/
|
| 167 |
tmp/
|
CONTRIBUTING.md
CHANGED
|
@@ -1,286 +1,286 @@
|
|
| 1 |
-
# 🤝 Nova AI'ya Katkıda Bulunma Rehberi
|
| 2 |
-
|
| 3 |
-
**Teknova Nova AI** projesine katkıda bulunmak istediğiniz için teşekkürler! Bu rehber, katkı sürecini kolaylaştırmak için hazırlanmıştır.
|
| 4 |
-
|
| 5 |
-
## 🎯 Katkı Türleri
|
| 6 |
-
|
| 7 |
-
### 🐛 **Bug Reports (Hata Bildirimi)**
|
| 8 |
-
- Detaylı hata açıklaması
|
| 9 |
-
- Tekrar edilebilir adımlar
|
| 10 |
-
- Sistem bilgileri (OS, Python version)
|
| 11 |
-
- Error logs ve screenshots
|
| 12 |
-
|
| 13 |
-
### ✨ **Feature Requests (Özellik İstekleri)**
|
| 14 |
-
- Özelliğin amacını açıklayın
|
| 15 |
-
- Kullanım senaryolarını belirtin
|
| 16 |
-
- Mevcut alternatiflerle karşılaştırın
|
| 17 |
-
|
| 18 |
-
### 🔧 **Code Contributions (Kod Katkıları)**
|
| 19 |
-
- Bug fixes
|
| 20 |
-
- Performance improvements
|
| 21 |
-
- New features
|
| 22 |
-
- Documentation updates
|
| 23 |
-
|
| 24 |
-
### 📚 **Documentation**
|
| 25 |
-
- README improvements
|
| 26 |
-
- Code comments
|
| 27 |
-
- Tutorial yazıları
|
| 28 |
-
- API documentation
|
| 29 |
-
|
| 30 |
-
## 🚀 Başlangıç Adımları
|
| 31 |
-
|
| 32 |
-
### 1️⃣ **Repository'yi Fork Edin**
|
| 33 |
-
```bash
|
| 34 |
-
# GitHub'da Fork butonuna tıklayın
|
| 35 |
-
# Sonra local'e clone edin:
|
| 36 |
-
git clone https://github.com/YOUR-USERNAME/novaai.git
|
| 37 |
-
cd novaai
|
| 38 |
-
```
|
| 39 |
-
|
| 40 |
-
### 2️⃣ **Development Environment Kurun**
|
| 41 |
-
```bash
|
| 42 |
-
# Virtual environment oluşturun
|
| 43 |
-
python -m venv venv
|
| 44 |
-
source venv/bin/activate # Linux/Mac
|
| 45 |
-
# venv\Scripts\activate # Windows
|
| 46 |
-
|
| 47 |
-
# Dependencies yükleyin
|
| 48 |
-
pip install -r requirements.txt
|
| 49 |
-
pip install -r requirements-dev.txt # Dev dependencies
|
| 50 |
-
```
|
| 51 |
-
|
| 52 |
-
### 3️⃣ **Model Dosyalarını Hazırlayın**
|
| 53 |
-
```bash
|
| 54 |
-
# MODEL_SETUP.md rehberini takip edin
|
| 55 |
-
mkdir nova-ai-model
|
| 56 |
-
# Model dosyalarınızı bu klasöre yerleştirin
|
| 57 |
-
```
|
| 58 |
-
|
| 59 |
-
## 📋 Development Workflow
|
| 60 |
-
|
| 61 |
-
### 🌿 **Branch Oluşturma**
|
| 62 |
-
```bash
|
| 63 |
-
# Main branch'ten yeni branch oluşturun
|
| 64 |
-
git checkout main
|
| 65 |
-
git pull origin main
|
| 66 |
-
git checkout -b feature/amazing-feature
|
| 67 |
-
|
| 68 |
-
# Veya bug fix için:
|
| 69 |
-
git checkout -b fix/bug-description
|
| 70 |
-
```
|
| 71 |
-
|
| 72 |
-
### 💻 **Code Style**
|
| 73 |
-
```python
|
| 74 |
-
# Python kod standartları:
|
| 75 |
-
# - PEP 8 compliance
|
| 76 |
-
# - Type hints kullanın
|
| 77 |
-
# - Docstrings ekleyin
|
| 78 |
-
|
| 79 |
-
def nova_chat(message: str, history: List[Dict]) -> str:
|
| 80 |
-
"""
|
| 81 |
-
Nova AI ile sohbet fonksiyonu.
|
| 82 |
-
|
| 83 |
-
Args:
|
| 84 |
-
message: Kullanıcı mesajı
|
| 85 |
-
history: Sohbet geçmişi
|
| 86 |
-
|
| 87 |
-
Returns:
|
| 88 |
-
Nova AI yanıtı
|
| 89 |
-
"""
|
| 90 |
-
# Implementation here
|
| 91 |
-
pass
|
| 92 |
-
```
|
| 93 |
-
|
| 94 |
-
### 🧪 **Testing**
|
| 95 |
-
```bash
|
| 96 |
-
# Testleri çalıştırın
|
| 97 |
-
python -m pytest tests/
|
| 98 |
-
|
| 99 |
-
# Linting kontrolleri
|
| 100 |
-
flake8 .
|
| 101 |
-
black --check .
|
| 102 |
-
mypy .
|
| 103 |
-
|
| 104 |
-
# Security check
|
| 105 |
-
bandit -r .
|
| 106 |
-
```
|
| 107 |
-
|
| 108 |
-
### 📝 **Commit Messages**
|
| 109 |
-
```bash
|
| 110 |
-
# Anlamlı commit messages yazın:
|
| 111 |
-
git commit -m "✨ Add: Nova AI temperature control feature
|
| 112 |
-
|
| 113 |
-
- Add temperature parameter to chat function
|
| 114 |
-
- Update Gradio interface with slider
|
| 115 |
-
- Add tests for temperature validation
|
| 116 |
-
- Update documentation
|
| 117 |
-
|
| 118 |
-
Fixes #123"
|
| 119 |
-
```
|
| 120 |
-
|
| 121 |
-
## 🔍 Code Review Süreci
|
| 122 |
-
|
| 123 |
-
### 📋 **Pull Request Checklist**
|
| 124 |
-
- [ ] Code changes test edildi
|
| 125 |
-
- [ ] Yeni features için testler eklendi
|
| 126 |
-
- [ ] Documentation güncellendi
|
| 127 |
-
- [ ] Commit messages açıklayıcı
|
| 128 |
-
- [ ] Code style check'leri geçiyor
|
| 129 |
-
- [ ] No breaking changes (veya belirtildi)
|
| 130 |
-
|
| 131 |
-
### 🎯 **Pull Request Template**
|
| 132 |
-
```markdown
|
| 133 |
-
## 📝 Description
|
| 134 |
-
Brief description of changes
|
| 135 |
-
|
| 136 |
-
## 🔧 Type of Change
|
| 137 |
-
- [ ] Bug fix
|
| 138 |
-
- [ ] New feature
|
| 139 |
-
- [ ] Breaking change
|
| 140 |
-
- [ ] Documentation update
|
| 141 |
-
|
| 142 |
-
## 🧪 Testing
|
| 143 |
-
- [ ] Tests pass locally
|
| 144 |
-
- [ ] Added tests for new features
|
| 145 |
-
- [ ] Manual testing completed
|
| 146 |
-
|
| 147 |
-
## 📋 Checklist
|
| 148 |
-
- [ ] Code follows style guidelines
|
| 149 |
-
- [ ] Self-review completed
|
| 150 |
-
- [ ] Documentation updated
|
| 151 |
-
- [ ] No conflicts with main branch
|
| 152 |
-
```
|
| 153 |
-
|
| 154 |
-
## 🛠️ Development Guidelines
|
| 155 |
-
|
| 156 |
-
### 🎯 **Nova AI Specific Guidelines**
|
| 157 |
-
|
| 158 |
-
#### 🧠 **Model Integration**
|
| 159 |
-
```python
|
| 160 |
-
# Model loading best practices:
|
| 161 |
-
def load_nova_model(model_path: str) -> Tuple[Any, Any]:
|
| 162 |
-
"""Load Nova AI model with error handling."""
|
| 163 |
-
try:
|
| 164 |
-
tokenizer = AutoTokenizer.from_pretrained(model_path)
|
| 165 |
-
model = AutoModelForCausalLM.from_pretrained(
|
| 166 |
-
model_path,
|
| 167 |
-
torch_dtype=torch.float16,
|
| 168 |
-
device_map="auto"
|
| 169 |
-
)
|
| 170 |
-
return model, tokenizer
|
| 171 |
-
except Exception as e:
|
| 172 |
-
logger.error(f"Model loading failed: {e}")
|
| 173 |
-
raise
|
| 174 |
-
```
|
| 175 |
-
|
| 176 |
-
#### 🌐 **API Design**
|
| 177 |
-
```python
|
| 178 |
-
# FastAPI endpoint conventions:
|
| 179 |
-
@app.post("/chat", response_model=ChatResponse)
|
| 180 |
-
async def chat_endpoint(request: ChatRequest) -> ChatResponse:
|
| 181 |
-
"""Nova AI chat endpoint with proper error handling."""
|
| 182 |
-
try:
|
| 183 |
-
# Validate input
|
| 184 |
-
if not request.message.strip():
|
| 185 |
-
raise HTTPException(400, "Message cannot be empty")
|
| 186 |
-
|
| 187 |
-
# Process with Nova AI
|
| 188 |
-
response = await nova_chat(request.message, request.history)
|
| 189 |
-
|
| 190 |
-
return ChatResponse(
|
| 191 |
-
response=response,
|
| 192 |
-
model="Teknova Nova AI",
|
| 193 |
-
timestamp=datetime.utcnow()
|
| 194 |
-
)
|
| 195 |
-
except Exception as e:
|
| 196 |
-
logger.error(f"Chat error: {e}")
|
| 197 |
-
raise HTTPException(500, "Internal server error")
|
| 198 |
-
```
|
| 199 |
-
|
| 200 |
-
#### 🎨 **UI/UX Standards**
|
| 201 |
-
```python
|
| 202 |
-
# Gradio interface guidelines:
|
| 203 |
-
with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
| 204 |
-
gr.HTML("""
|
| 205 |
-
<div style="text-align: center; padding: 20px;">
|
| 206 |
-
<h1>🚀 Teknova Nova AI</h1>
|
| 207 |
-
<p>Özgün yapay zeka teknolojisi</p>
|
| 208 |
-
</div>
|
| 209 |
-
""")
|
| 210 |
-
|
| 211 |
-
# Always include:
|
| 212 |
-
# - Clear labeling
|
| 213 |
-
# - Error handling
|
| 214 |
-
# - Loading states
|
| 215 |
-
# - Responsive design
|
| 216 |
-
```
|
| 217 |
-
|
| 218 |
-
## 🏗️ Project Structure
|
| 219 |
-
|
| 220 |
-
```
|
| 221 |
-
novaai/
|
| 222 |
-
├── 📁 .github/
|
| 223 |
-
│ ├── workflows/ # GitHub Actions
|
| 224 |
-
│ ├── ISSUE_TEMPLATE/ # Issue templates
|
| 225 |
-
│ └── PULL_REQUEST_TEMPLATE.md
|
| 226 |
-
├── 📁 src/
|
| 227 |
-
│ ├── nova_ai/ # Main package
|
| 228 |
-
│ ├── api/ # API endpoints
|
| 229 |
-
│ ├── ui/ # User interfaces
|
| 230 |
-
│ └── utils/ # Utilities
|
| 231 |
-
├── 📁 tests/ # Test files
|
| 232 |
-
├── 📁 docs/ # Documentation
|
| 233 |
-
├── 📁 scripts/ # Build/deploy scripts
|
| 234 |
-
├── 🔧 requirements.txt
|
| 235 |
-
├── 🔧 requirements-dev.txt
|
| 236 |
-
├── 📋 pyproject.toml
|
| 237 |
-
└── 📖 README.md
|
| 238 |
-
```
|
| 239 |
-
|
| 240 |
-
## 🎯 Öncelikli Katkı Alanları
|
| 241 |
-
|
| 242 |
-
### 🔥 **High Priority**
|
| 243 |
-
- [ ] **Performance optimization** - Model inference speed
|
| 244 |
-
- [ ] **Memory management** - RAM kullanımı iyileştirmeleri
|
| 245 |
-
- [ ] **Error handling** - Robust error recovery
|
| 246 |
-
- [ ] **Testing coverage** - Unit ve integration testler
|
| 247 |
-
|
| 248 |
-
### 🌟 **Medium Priority**
|
| 249 |
-
- [ ] **New UI features** - Advanced chat options
|
| 250 |
-
- [ ] **API extensions** - Batch processing
|
| 251 |
-
- [ ] **Documentation** - Tutorial videos
|
| 252 |
-
- [ ] **Localization** - Multi-language support
|
| 253 |
-
|
| 254 |
-
### 💡 **Nice to Have**
|
| 255 |
-
- [ ] **Mobile optimization** - Responsive design
|
| 256 |
-
- [ ] **Plugin system** - Extensible architecture
|
| 257 |
-
- [ ] **Analytics** - Usage metrics
|
| 258 |
-
- [ ] **Deployment tools** - Docker, K8s support
|
| 259 |
-
|
| 260 |
-
## 🤔 Sorularınız mı Var?
|
| 261 |
-
|
| 262 |
-
### 💬 **İletişim Kanalları**
|
| 263 |
-
- **GitHub Discussions**: Genel sorular için
|
| 264 |
-
- **GitHub Issues**: Bug reports ve feature requests
|
| 265 |
-
- **Email**: teknova@example.com (teknik destek)
|
| 266 |
-
- **Discord**: Nova AI Community Server
|
| 267 |
-
|
| 268 |
-
### 📚 **Yararlı Kaynaklar**
|
| 269 |
-
- [Python Style Guide](https://pep8.org/)
|
| 270 |
-
- [Transformers Documentation](https://huggingface.co/docs/transformers)
|
| 271 |
-
- [FastAPI Best Practices](https://fastapi.tiangolo.com/tutorial/)
|
| 272 |
-
- [Gradio Documentation](https://gradio.app/docs/)
|
| 273 |
-
|
| 274 |
-
## 🙏 Teşekkürler
|
| 275 |
-
|
| 276 |
-
Nova AI projesine katkıda bulunan herkese teşekkür ederiz! Sizin katkılarınız Nova AI'yi daha da güçlü kılıyor.
|
| 277 |
-
|
| 278 |
-
### 🏆 **Katkıda Bulunanlar**
|
| 279 |
-
- **Teknova Team** - Proje kurucu ekibi
|
| 280 |
-
- **Community Contributors** - Açık kaynak katkıları
|
| 281 |
-
|
| 282 |
-
---
|
| 283 |
-
|
| 284 |
-
🚀 **Teknova Nova AI** - Birlikte daha güçlüyüz!
|
| 285 |
-
|
| 286 |
*Bu rehber sürekli güncellenmektedir. Önerilerinizi GitHub Discussions'ta paylaşabilirsiniz.*
|
|
|
|
| 1 |
+
# 🤝 Nova AI'ya Katkıda Bulunma Rehberi
|
| 2 |
+
|
| 3 |
+
**Teknova Nova AI** projesine katkıda bulunmak istediğiniz için teşekkürler! Bu rehber, katkı sürecini kolaylaştırmak için hazırlanmıştır.
|
| 4 |
+
|
| 5 |
+
## 🎯 Katkı Türleri
|
| 6 |
+
|
| 7 |
+
### 🐛 **Bug Reports (Hata Bildirimi)**
|
| 8 |
+
- Detaylı hata açıklaması
|
| 9 |
+
- Tekrar edilebilir adımlar
|
| 10 |
+
- Sistem bilgileri (OS, Python version)
|
| 11 |
+
- Error logs ve screenshots
|
| 12 |
+
|
| 13 |
+
### ✨ **Feature Requests (Özellik İstekleri)**
|
| 14 |
+
- Özelliğin amacını açıklayın
|
| 15 |
+
- Kullanım senaryolarını belirtin
|
| 16 |
+
- Mevcut alternatiflerle karşılaştırın
|
| 17 |
+
|
| 18 |
+
### 🔧 **Code Contributions (Kod Katkıları)**
|
| 19 |
+
- Bug fixes
|
| 20 |
+
- Performance improvements
|
| 21 |
+
- New features
|
| 22 |
+
- Documentation updates
|
| 23 |
+
|
| 24 |
+
### 📚 **Documentation**
|
| 25 |
+
- README improvements
|
| 26 |
+
- Code comments
|
| 27 |
+
- Tutorial yazıları
|
| 28 |
+
- API documentation
|
| 29 |
+
|
| 30 |
+
## 🚀 Başlangıç Adımları
|
| 31 |
+
|
| 32 |
+
### 1️⃣ **Repository'yi Fork Edin**
|
| 33 |
+
```bash
|
| 34 |
+
# GitHub'da Fork butonuna tıklayın
|
| 35 |
+
# Sonra local'e clone edin:
|
| 36 |
+
git clone https://github.com/YOUR-USERNAME/novaai.git
|
| 37 |
+
cd novaai
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
### 2️⃣ **Development Environment Kurun**
|
| 41 |
+
```bash
|
| 42 |
+
# Virtual environment oluşturun
|
| 43 |
+
python -m venv venv
|
| 44 |
+
source venv/bin/activate # Linux/Mac
|
| 45 |
+
# venv\Scripts\activate # Windows
|
| 46 |
+
|
| 47 |
+
# Dependencies yükleyin
|
| 48 |
+
pip install -r requirements.txt
|
| 49 |
+
pip install -r requirements-dev.txt # Dev dependencies
|
| 50 |
+
```
|
| 51 |
+
|
| 52 |
+
### 3️⃣ **Model Dosyalarını Hazırlayın**
|
| 53 |
+
```bash
|
| 54 |
+
# MODEL_SETUP.md rehberini takip edin
|
| 55 |
+
mkdir nova-ai-model
|
| 56 |
+
# Model dosyalarınızı bu klasöre yerleştirin
|
| 57 |
+
```
|
| 58 |
+
|
| 59 |
+
## 📋 Development Workflow
|
| 60 |
+
|
| 61 |
+
### 🌿 **Branch Oluşturma**
|
| 62 |
+
```bash
|
| 63 |
+
# Main branch'ten yeni branch oluşturun
|
| 64 |
+
git checkout main
|
| 65 |
+
git pull origin main
|
| 66 |
+
git checkout -b feature/amazing-feature
|
| 67 |
+
|
| 68 |
+
# Veya bug fix için:
|
| 69 |
+
git checkout -b fix/bug-description
|
| 70 |
+
```
|
| 71 |
+
|
| 72 |
+
### 💻 **Code Style**
|
| 73 |
+
```python
|
| 74 |
+
# Python kod standartları:
|
| 75 |
+
# - PEP 8 compliance
|
| 76 |
+
# - Type hints kullanın
|
| 77 |
+
# - Docstrings ekleyin
|
| 78 |
+
|
| 79 |
+
def nova_chat(message: str, history: List[Dict]) -> str:
|
| 80 |
+
"""
|
| 81 |
+
Nova AI ile sohbet fonksiyonu.
|
| 82 |
+
|
| 83 |
+
Args:
|
| 84 |
+
message: Kullanıcı mesajı
|
| 85 |
+
history: Sohbet geçmişi
|
| 86 |
+
|
| 87 |
+
Returns:
|
| 88 |
+
Nova AI yanıtı
|
| 89 |
+
"""
|
| 90 |
+
# Implementation here
|
| 91 |
+
pass
|
| 92 |
+
```
|
| 93 |
+
|
| 94 |
+
### 🧪 **Testing**
|
| 95 |
+
```bash
|
| 96 |
+
# Testleri çalıştırın
|
| 97 |
+
python -m pytest tests/
|
| 98 |
+
|
| 99 |
+
# Linting kontrolleri
|
| 100 |
+
flake8 .
|
| 101 |
+
black --check .
|
| 102 |
+
mypy .
|
| 103 |
+
|
| 104 |
+
# Security check
|
| 105 |
+
bandit -r .
|
| 106 |
+
```
|
| 107 |
+
|
| 108 |
+
### 📝 **Commit Messages**
|
| 109 |
+
```bash
|
| 110 |
+
# Anlamlı commit messages yazın:
|
| 111 |
+
git commit -m "✨ Add: Nova AI temperature control feature
|
| 112 |
+
|
| 113 |
+
- Add temperature parameter to chat function
|
| 114 |
+
- Update Gradio interface with slider
|
| 115 |
+
- Add tests for temperature validation
|
| 116 |
+
- Update documentation
|
| 117 |
+
|
| 118 |
+
Fixes #123"
|
| 119 |
+
```
|
| 120 |
+
|
| 121 |
+
## 🔍 Code Review Süreci
|
| 122 |
+
|
| 123 |
+
### 📋 **Pull Request Checklist**
|
| 124 |
+
- [ ] Code changes test edildi
|
| 125 |
+
- [ ] Yeni features için testler eklendi
|
| 126 |
+
- [ ] Documentation güncellendi
|
| 127 |
+
- [ ] Commit messages açıklayıcı
|
| 128 |
+
- [ ] Code style check'leri geçiyor
|
| 129 |
+
- [ ] No breaking changes (veya belirtildi)
|
| 130 |
+
|
| 131 |
+
### 🎯 **Pull Request Template**
|
| 132 |
+
```markdown
|
| 133 |
+
## 📝 Description
|
| 134 |
+
Brief description of changes
|
| 135 |
+
|
| 136 |
+
## 🔧 Type of Change
|
| 137 |
+
- [ ] Bug fix
|
| 138 |
+
- [ ] New feature
|
| 139 |
+
- [ ] Breaking change
|
| 140 |
+
- [ ] Documentation update
|
| 141 |
+
|
| 142 |
+
## 🧪 Testing
|
| 143 |
+
- [ ] Tests pass locally
|
| 144 |
+
- [ ] Added tests for new features
|
| 145 |
+
- [ ] Manual testing completed
|
| 146 |
+
|
| 147 |
+
## 📋 Checklist
|
| 148 |
+
- [ ] Code follows style guidelines
|
| 149 |
+
- [ ] Self-review completed
|
| 150 |
+
- [ ] Documentation updated
|
| 151 |
+
- [ ] No conflicts with main branch
|
| 152 |
+
```
|
| 153 |
+
|
| 154 |
+
## 🛠️ Development Guidelines
|
| 155 |
+
|
| 156 |
+
### 🎯 **Nova AI Specific Guidelines**
|
| 157 |
+
|
| 158 |
+
#### 🧠 **Model Integration**
|
| 159 |
+
```python
|
| 160 |
+
# Model loading best practices:
|
| 161 |
+
def load_nova_model(model_path: str) -> Tuple[Any, Any]:
|
| 162 |
+
"""Load Nova AI model with error handling."""
|
| 163 |
+
try:
|
| 164 |
+
tokenizer = AutoTokenizer.from_pretrained(model_path)
|
| 165 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 166 |
+
model_path,
|
| 167 |
+
torch_dtype=torch.float16,
|
| 168 |
+
device_map="auto"
|
| 169 |
+
)
|
| 170 |
+
return model, tokenizer
|
| 171 |
+
except Exception as e:
|
| 172 |
+
logger.error(f"Model loading failed: {e}")
|
| 173 |
+
raise
|
| 174 |
+
```
|
| 175 |
+
|
| 176 |
+
#### 🌐 **API Design**
|
| 177 |
+
```python
|
| 178 |
+
# FastAPI endpoint conventions:
|
| 179 |
+
@app.post("/chat", response_model=ChatResponse)
|
| 180 |
+
async def chat_endpoint(request: ChatRequest) -> ChatResponse:
|
| 181 |
+
"""Nova AI chat endpoint with proper error handling."""
|
| 182 |
+
try:
|
| 183 |
+
# Validate input
|
| 184 |
+
if not request.message.strip():
|
| 185 |
+
raise HTTPException(400, "Message cannot be empty")
|
| 186 |
+
|
| 187 |
+
# Process with Nova AI
|
| 188 |
+
response = await nova_chat(request.message, request.history)
|
| 189 |
+
|
| 190 |
+
return ChatResponse(
|
| 191 |
+
response=response,
|
| 192 |
+
model="Teknova Nova AI",
|
| 193 |
+
timestamp=datetime.utcnow()
|
| 194 |
+
)
|
| 195 |
+
except Exception as e:
|
| 196 |
+
logger.error(f"Chat error: {e}")
|
| 197 |
+
raise HTTPException(500, "Internal server error")
|
| 198 |
+
```
|
| 199 |
+
|
| 200 |
+
#### 🎨 **UI/UX Standards**
|
| 201 |
+
```python
|
| 202 |
+
# Gradio interface guidelines:
|
| 203 |
+
with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
| 204 |
+
gr.HTML("""
|
| 205 |
+
<div style="text-align: center; padding: 20px;">
|
| 206 |
+
<h1>🚀 Teknova Nova AI</h1>
|
| 207 |
+
<p>Özgün yapay zeka teknolojisi</p>
|
| 208 |
+
</div>
|
| 209 |
+
""")
|
| 210 |
+
|
| 211 |
+
# Always include:
|
| 212 |
+
# - Clear labeling
|
| 213 |
+
# - Error handling
|
| 214 |
+
# - Loading states
|
| 215 |
+
# - Responsive design
|
| 216 |
+
```
|
| 217 |
+
|
| 218 |
+
## 🏗️ Project Structure
|
| 219 |
+
|
| 220 |
+
```
|
| 221 |
+
novaai/
|
| 222 |
+
├── 📁 .github/
|
| 223 |
+
│ ├── workflows/ # GitHub Actions
|
| 224 |
+
│ ├── ISSUE_TEMPLATE/ # Issue templates
|
| 225 |
+
│ └── PULL_REQUEST_TEMPLATE.md
|
| 226 |
+
├── 📁 src/
|
| 227 |
+
│ ├── nova_ai/ # Main package
|
| 228 |
+
│ ├── api/ # API endpoints
|
| 229 |
+
│ ├── ui/ # User interfaces
|
| 230 |
+
│ └── utils/ # Utilities
|
| 231 |
+
├── 📁 tests/ # Test files
|
| 232 |
+
├── 📁 docs/ # Documentation
|
| 233 |
+
├── 📁 scripts/ # Build/deploy scripts
|
| 234 |
+
├── 🔧 requirements.txt
|
| 235 |
+
├── 🔧 requirements-dev.txt
|
| 236 |
+
├── 📋 pyproject.toml
|
| 237 |
+
└── 📖 README.md
|
| 238 |
+
```
|
| 239 |
+
|
| 240 |
+
## 🎯 Öncelikli Katkı Alanları
|
| 241 |
+
|
| 242 |
+
### 🔥 **High Priority**
|
| 243 |
+
- [ ] **Performance optimization** - Model inference speed
|
| 244 |
+
- [ ] **Memory management** - RAM kullanımı iyileştirmeleri
|
| 245 |
+
- [ ] **Error handling** - Robust error recovery
|
| 246 |
+
- [ ] **Testing coverage** - Unit ve integration testler
|
| 247 |
+
|
| 248 |
+
### 🌟 **Medium Priority**
|
| 249 |
+
- [ ] **New UI features** - Advanced chat options
|
| 250 |
+
- [ ] **API extensions** - Batch processing
|
| 251 |
+
- [ ] **Documentation** - Tutorial videos
|
| 252 |
+
- [ ] **Localization** - Multi-language support
|
| 253 |
+
|
| 254 |
+
### 💡 **Nice to Have**
|
| 255 |
+
- [ ] **Mobile optimization** - Responsive design
|
| 256 |
+
- [ ] **Plugin system** - Extensible architecture
|
| 257 |
+
- [ ] **Analytics** - Usage metrics
|
| 258 |
+
- [ ] **Deployment tools** - Docker, K8s support
|
| 259 |
+
|
| 260 |
+
## 🤔 Sorularınız mı Var?
|
| 261 |
+
|
| 262 |
+
### 💬 **İletişim Kanalları**
|
| 263 |
+
- **GitHub Discussions**: Genel sorular için
|
| 264 |
+
- **GitHub Issues**: Bug reports ve feature requests
|
| 265 |
+
- **Email**: teknova@example.com (teknik destek)
|
| 266 |
+
- **Discord**: Nova AI Community Server
|
| 267 |
+
|
| 268 |
+
### 📚 **Yararlı Kaynaklar**
|
| 269 |
+
- [Python Style Guide](https://pep8.org/)
|
| 270 |
+
- [Transformers Documentation](https://huggingface.co/docs/transformers)
|
| 271 |
+
- [FastAPI Best Practices](https://fastapi.tiangolo.com/tutorial/)
|
| 272 |
+
- [Gradio Documentation](https://gradio.app/docs/)
|
| 273 |
+
|
| 274 |
+
## 🙏 Teşekkürler
|
| 275 |
+
|
| 276 |
+
Nova AI projesine katkıda bulunan herkese teşekkür ederiz! Sizin katkılarınız Nova AI'yi daha da güçlü kılıyor.
|
| 277 |
+
|
| 278 |
+
### 🏆 **Katkıda Bulunanlar**
|
| 279 |
+
- **Teknova Team** - Proje kurucu ekibi
|
| 280 |
+
- **Community Contributors** - Açık kaynak katkıları
|
| 281 |
+
|
| 282 |
+
---
|
| 283 |
+
|
| 284 |
+
🚀 **Teknova Nova AI** - Birlikte daha güçlüyüz!
|
| 285 |
+
|
| 286 |
*Bu rehber sürekli güncellenmektedir. Önerilerinizi GitHub Discussions'ta paylaşabilirsiniz.*
|
DEPLOY_REHBERI.md
CHANGED
|
@@ -1,157 +1,157 @@
|
|
| 1 |
-
# 🚀 Nova AI Chat - Web Deploy Rehberi
|
| 2 |
-
|
| 3 |
-
**Teknova**'nın Nova AI'sını bilgisayarınızda yavaş çalışması yerine, web'de hızlı bir şekilde kullanmanın 3 farklı yolu:
|
| 4 |
-
|
| 5 |
-
---
|
| 6 |
-
|
| 7 |
-
## 🥇 Seçenek 1: Google Colab (Önerilen - En Kolay)
|
| 8 |
-
|
| 9 |
-
### ✅ Avantajlar:
|
| 10 |
-
- **Ücretsiz** GPU (T4)
|
| 11 |
-
- **Anında** kullanıma hazır
|
| 12 |
-
- **Setup gerektirmez**
|
| 13 |
-
- **Paylaşılabilir** link
|
| 14 |
-
|
| 15 |
-
### 📋 Adımlar:
|
| 16 |
-
1. `Nova_AI_Chat.ipynb` dosyasını [Google Colab'da](https://colab.research.google.com) açın
|
| 17 |
-
2. Runtime > Change runtime type > **GPU** seçin
|
| 18 |
-
3. Tüm hücreleri sırayla çalıştırın
|
| 19 |
-
4. Çıkan public link'i kullanın
|
| 20 |
-
|
| 21 |
-
### ⏱️ Süre:
|
| 22 |
-
- **Setup**: 5 dakika
|
| 23 |
-
- **Model yükleme**: 2-3 dakika
|
| 24 |
-
- **Yanıt süresi**: 5-10 saniye
|
| 25 |
-
|
| 26 |
-
---
|
| 27 |
-
|
| 28 |
-
## 🥈 Seçenek 2: Hugging Face Spaces (Kalıcı)
|
| 29 |
-
|
| 30 |
-
### ✅ Avantajlar:
|
| 31 |
-
- **Kalıcı** URL
|
| 32 |
-
- **Ücretsiz** CPU/GPU
|
| 33 |
-
- **Otomatik** deploy
|
| 34 |
-
- **24/7** aktif
|
| 35 |
-
|
| 36 |
-
### 📋 Adımlar:
|
| 37 |
-
1. [Hugging Face](https://huggingface.co)'da hesap açın
|
| 38 |
-
2. **New Space** oluşturun:
|
| 39 |
-
- **Space name**: `nova-ai-chat`
|
| 40 |
-
- **SDK**: Gradio
|
| 41 |
-
- **Hardware**: CPU Basic (ücretsiz)
|
| 42 |
-
3. Dosyaları yükleyin:
|
| 43 |
-
```
|
| 44 |
-
gradio_app.py
|
| 45 |
-
requirements.txt
|
| 46 |
-
README.md
|
| 47 |
-
```
|
| 48 |
-
4. Space otomatik deploy olur
|
| 49 |
-
|
| 50 |
-
### 🔗 Örnek URL:
|
| 51 |
-
`https://huggingface.co/spaces/KULLANICI_ADI/nova-ai-chat`
|
| 52 |
-
|
| 53 |
-
### ⏱️ Süre:
|
| 54 |
-
- **Setup**: 10 dakika
|
| 55 |
-
- **Deploy**: 5-10 dakika
|
| 56 |
-
- **Yanıt süresi**: 15-30 saniye (CPU)
|
| 57 |
-
|
| 58 |
-
---
|
| 59 |
-
|
| 60 |
-
## 🥉 Seçenek 3: Render/Railway (Gelişmiş)
|
| 61 |
-
|
| 62 |
-
### ✅ Avantajlar:
|
| 63 |
-
- **Özel domain**
|
| 64 |
-
- **Production ready**
|
| 65 |
-
- **Scaling** desteği
|
| 66 |
-
|
| 67 |
-
### 📋 Railway Adımları:
|
| 68 |
-
1. [Railway.app](https://railway.app)'da hesap açın
|
| 69 |
-
2. **Deploy from GitHub** seçin
|
| 70 |
-
3. Repository'yi bağlayın
|
| 71 |
-
4. Environment variables ekleyin:
|
| 72 |
-
```
|
| 73 |
-
PORT=8000
|
| 74 |
-
```
|
| 75 |
-
5. Deploy başlar
|
| 76 |
-
|
| 77 |
-
### 💰 Maliyet:
|
| 78 |
-
- İlk $5 ücretsiz
|
| 79 |
-
- Sonrasında kullanım bazlı
|
| 80 |
-
|
| 81 |
-
---
|
| 82 |
-
|
| 83 |
-
## 📊 Karşılaştırma
|
| 84 |
-
|
| 85 |
-
| Platform | Hız | Maliyet | Kalıcılık | Kurulum |
|
| 86 |
-
|----------|-----|---------|-----------|---------|
|
| 87 |
-
| **Google Colab** | ⚡⚡⚡ | Ücretsiz | 12 saat | Çok Kolay |
|
| 88 |
-
| **HF Spaces** | ⚡⚡ | Ücretsiz | Kalıcı | Kolay |
|
| 89 |
-
| **Railway** | ⚡⚡ | $5+ | Kalıcı | Orta |
|
| 90 |
-
|
| 91 |
-
---
|
| 92 |
-
|
| 93 |
-
## 🎯 Hangi Seçeneği Seçmeli?
|
| 94 |
-
|
| 95 |
-
### 🔥 **Hızlı Test** için: Google Colab
|
| 96 |
-
- 5 dakikada çalışır
|
| 97 |
-
- En hızlı GPU
|
| 98 |
-
- Geçici kullanım
|
| 99 |
-
|
| 100 |
-
### 🌍 **Paylaşım** için: Hugging Face Spaces
|
| 101 |
-
- Herkesle paylaşılabilir
|
| 102 |
-
- Kalıcı URL
|
| 103 |
-
- Ücretsiz hosting
|
| 104 |
-
|
| 105 |
-
### 🏢 **Production** için: Railway
|
| 106 |
-
- Özel domain
|
| 107 |
-
- Güvenilir uptime
|
| 108 |
-
- Ölçeklenebilir
|
| 109 |
-
|
| 110 |
-
---
|
| 111 |
-
|
| 112 |
-
## 🛠️ Hazır Dosyalar
|
| 113 |
-
|
| 114 |
-
**Teknova Nova AI** projenizdeki dosyalar:
|
| 115 |
-
|
| 116 |
-
```
|
| 117 |
-
📁 NovaAI/
|
| 118 |
-
├── 🐍 gradio_app.py # Hugging Face Spaces için
|
| 119 |
-
├── 📓 Nova_AI_Chat.ipynb # Google Colab için
|
| 120 |
-
├── 📋 requirements.txt # Paket listesi
|
| 121 |
-
├── 📄 README.md # HF Spaces metadata
|
| 122 |
-
├── 🌐 chat.html # Web arayüzü
|
| 123 |
-
├── 🚀 app.py # FastAPI uygulaması
|
| 124 |
-
├── ⚡ api.py # API servisi
|
| 125 |
-
├── 🖥️ main.py # Konsol uygulaması
|
| 126 |
-
├── 📂 mistral-7b/ # Model dosyaları
|
| 127 |
-
├── 🔧 baslat_api.bat # Web başlatıcı
|
| 128 |
-
├── 🖱️ baslat_konsol.bat # Konsol başlatıcı
|
| 129 |
-
└── 📋 DEPLOY_REHBERI.md # Bu rehber
|
| 130 |
-
```
|
| 131 |
-
|
| 132 |
-
---
|
| 133 |
-
|
| 134 |
-
## 🚀 Teknova Nova AI Özellikleri
|
| 135 |
-
|
| 136 |
-
- 🧠 **Gelişmiş AI**: Son teknoloji modellerle
|
| 137 |
-
- 🇹🇷 **Türkçe Desteği**: Mükemmel dil anlayışı
|
| 138 |
-
- ⚡ **Hızlı Yanıt**: GPU optimizasyonu
|
| 139 |
-
- 🎨 **Modern Arayüz**: ChatGPT benzeri UX
|
| 140 |
-
- 🔒 **Güvenli**: Verileriniz güvende
|
| 141 |
-
|
| 142 |
-
---
|
| 143 |
-
|
| 144 |
-
## 🤝 Yardım
|
| 145 |
-
|
| 146 |
-
Deploy sırasında sorun yaşarsanız:
|
| 147 |
-
|
| 148 |
-
1. **Error loglara** bakın
|
| 149 |
-
2. **Requirements** güncel mi kontrol edin
|
| 150 |
-
3. **GPU memory** yetersizse 8-bit quantization kullanın
|
| 151 |
-
4. **Model path** doğru mu kontrol edin
|
| 152 |
-
|
| 153 |
-
**Teknova Destek**: AI konularında professional destek
|
| 154 |
-
|
| 155 |
-
---
|
| 156 |
-
|
| 157 |
*🚀 **Teknova Nova AI** ile geleceğin teknolojisini bugün deneyimleyin!* 🎉
|
|
|
|
| 1 |
+
# 🚀 Nova AI Chat - Web Deploy Rehberi
|
| 2 |
+
|
| 3 |
+
**Teknova**'nın Nova AI'sını bilgisayarınızda yavaş çalışması yerine, web'de hızlı bir şekilde kullanmanın 3 farklı yolu:
|
| 4 |
+
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
## 🥇 Seçenek 1: Google Colab (Önerilen - En Kolay)
|
| 8 |
+
|
| 9 |
+
### ✅ Avantajlar:
|
| 10 |
+
- **Ücretsiz** GPU (T4)
|
| 11 |
+
- **Anında** kullanıma hazır
|
| 12 |
+
- **Setup gerektirmez**
|
| 13 |
+
- **Paylaşılabilir** link
|
| 14 |
+
|
| 15 |
+
### 📋 Adımlar:
|
| 16 |
+
1. `Nova_AI_Chat.ipynb` dosyasını [Google Colab'da](https://colab.research.google.com) açın
|
| 17 |
+
2. Runtime > Change runtime type > **GPU** seçin
|
| 18 |
+
3. Tüm hücreleri sırayla çalıştırın
|
| 19 |
+
4. Çıkan public link'i kullanın
|
| 20 |
+
|
| 21 |
+
### ⏱️ Süre:
|
| 22 |
+
- **Setup**: 5 dakika
|
| 23 |
+
- **Model yükleme**: 2-3 dakika
|
| 24 |
+
- **Yanıt süresi**: 5-10 saniye
|
| 25 |
+
|
| 26 |
+
---
|
| 27 |
+
|
| 28 |
+
## 🥈 Seçenek 2: Hugging Face Spaces (Kalıcı)
|
| 29 |
+
|
| 30 |
+
### ✅ Avantajlar:
|
| 31 |
+
- **Kalıcı** URL
|
| 32 |
+
- **Ücretsiz** CPU/GPU
|
| 33 |
+
- **Otomatik** deploy
|
| 34 |
+
- **24/7** aktif
|
| 35 |
+
|
| 36 |
+
### 📋 Adımlar:
|
| 37 |
+
1. [Hugging Face](https://huggingface.co)'da hesap açın
|
| 38 |
+
2. **New Space** oluşturun:
|
| 39 |
+
- **Space name**: `nova-ai-chat`
|
| 40 |
+
- **SDK**: Gradio
|
| 41 |
+
- **Hardware**: CPU Basic (ücretsiz)
|
| 42 |
+
3. Dosyaları yükleyin:
|
| 43 |
+
```
|
| 44 |
+
gradio_app.py
|
| 45 |
+
requirements.txt
|
| 46 |
+
README.md
|
| 47 |
+
```
|
| 48 |
+
4. Space otomatik deploy olur
|
| 49 |
+
|
| 50 |
+
### 🔗 Örnek URL:
|
| 51 |
+
`https://huggingface.co/spaces/KULLANICI_ADI/nova-ai-chat`
|
| 52 |
+
|
| 53 |
+
### ⏱️ Süre:
|
| 54 |
+
- **Setup**: 10 dakika
|
| 55 |
+
- **Deploy**: 5-10 dakika
|
| 56 |
+
- **Yanıt süresi**: 15-30 saniye (CPU)
|
| 57 |
+
|
| 58 |
+
---
|
| 59 |
+
|
| 60 |
+
## 🥉 Seçenek 3: Render/Railway (Gelişmiş)
|
| 61 |
+
|
| 62 |
+
### ✅ Avantajlar:
|
| 63 |
+
- **Özel domain**
|
| 64 |
+
- **Production ready**
|
| 65 |
+
- **Scaling** desteği
|
| 66 |
+
|
| 67 |
+
### 📋 Railway Adımları:
|
| 68 |
+
1. [Railway.app](https://railway.app)'da hesap açın
|
| 69 |
+
2. **Deploy from GitHub** seçin
|
| 70 |
+
3. Repository'yi bağlayın
|
| 71 |
+
4. Environment variables ekleyin:
|
| 72 |
+
```
|
| 73 |
+
PORT=8000
|
| 74 |
+
```
|
| 75 |
+
5. Deploy başlar
|
| 76 |
+
|
| 77 |
+
### 💰 Maliyet:
|
| 78 |
+
- İlk $5 ücretsiz
|
| 79 |
+
- Sonrasında kullanım bazlı
|
| 80 |
+
|
| 81 |
+
---
|
| 82 |
+
|
| 83 |
+
## 📊 Karşılaştırma
|
| 84 |
+
|
| 85 |
+
| Platform | Hız | Maliyet | Kalıcılık | Kurulum |
|
| 86 |
+
|----------|-----|---------|-----------|---------|
|
| 87 |
+
| **Google Colab** | ⚡⚡⚡ | Ücretsiz | 12 saat | Çok Kolay |
|
| 88 |
+
| **HF Spaces** | ⚡⚡ | Ücretsiz | Kalıcı | Kolay |
|
| 89 |
+
| **Railway** | ⚡⚡ | $5+ | Kalıcı | Orta |
|
| 90 |
+
|
| 91 |
+
---
|
| 92 |
+
|
| 93 |
+
## 🎯 Hangi Seçeneği Seçmeli?
|
| 94 |
+
|
| 95 |
+
### 🔥 **Hızlı Test** için: Google Colab
|
| 96 |
+
- 5 dakikada çalışır
|
| 97 |
+
- En hızlı GPU
|
| 98 |
+
- Geçici kullanım
|
| 99 |
+
|
| 100 |
+
### 🌍 **Paylaşım** için: Hugging Face Spaces
|
| 101 |
+
- Herkesle paylaşılabilir
|
| 102 |
+
- Kalıcı URL
|
| 103 |
+
- Ücretsiz hosting
|
| 104 |
+
|
| 105 |
+
### 🏢 **Production** için: Railway
|
| 106 |
+
- Özel domain
|
| 107 |
+
- Güvenilir uptime
|
| 108 |
+
- Ölçeklenebilir
|
| 109 |
+
|
| 110 |
+
---
|
| 111 |
+
|
| 112 |
+
## 🛠️ Hazır Dosyalar
|
| 113 |
+
|
| 114 |
+
**Teknova Nova AI** projenizdeki dosyalar:
|
| 115 |
+
|
| 116 |
+
```
|
| 117 |
+
📁 NovaAI/
|
| 118 |
+
├── 🐍 gradio_app.py # Hugging Face Spaces için
|
| 119 |
+
├── 📓 Nova_AI_Chat.ipynb # Google Colab için
|
| 120 |
+
├── 📋 requirements.txt # Paket listesi
|
| 121 |
+
├── 📄 README.md # HF Spaces metadata
|
| 122 |
+
├── 🌐 chat.html # Web arayüzü
|
| 123 |
+
├── 🚀 app.py # FastAPI uygulaması
|
| 124 |
+
├── ⚡ api.py # API servisi
|
| 125 |
+
├── 🖥️ main.py # Konsol uygulaması
|
| 126 |
+
├── 📂 mistral-7b/ # Model dosyaları
|
| 127 |
+
├── 🔧 baslat_api.bat # Web başlatıcı
|
| 128 |
+
├── 🖱️ baslat_konsol.bat # Konsol başlatıcı
|
| 129 |
+
└── 📋 DEPLOY_REHBERI.md # Bu rehber
|
| 130 |
+
```
|
| 131 |
+
|
| 132 |
+
---
|
| 133 |
+
|
| 134 |
+
## 🚀 Teknova Nova AI Özellikleri
|
| 135 |
+
|
| 136 |
+
- 🧠 **Gelişmiş AI**: Son teknoloji modellerle
|
| 137 |
+
- 🇹🇷 **Türkçe Desteği**: Mükemmel dil anlayışı
|
| 138 |
+
- ⚡ **Hızlı Yanıt**: GPU optimizasyonu
|
| 139 |
+
- 🎨 **Modern Arayüz**: ChatGPT benzeri UX
|
| 140 |
+
- 🔒 **Güvenli**: Verileriniz güvende
|
| 141 |
+
|
| 142 |
+
---
|
| 143 |
+
|
| 144 |
+
## 🤝 Yardım
|
| 145 |
+
|
| 146 |
+
Deploy sırasında sorun yaşarsanız:
|
| 147 |
+
|
| 148 |
+
1. **Error loglara** bakın
|
| 149 |
+
2. **Requirements** güncel mi kontrol edin
|
| 150 |
+
3. **GPU memory** yetersizse 8-bit quantization kullanın
|
| 151 |
+
4. **Model path** doğru mu kontrol edin
|
| 152 |
+
|
| 153 |
+
**Teknova Destek**: AI konularında professional destek
|
| 154 |
+
|
| 155 |
+
---
|
| 156 |
+
|
| 157 |
*🚀 **Teknova Nova AI** ile geleceğin teknolojisini bugün deneyimleyin!* 🎉
|
Dockerfile
CHANGED
|
@@ -1,45 +1,45 @@
|
|
| 1 |
-
# 🚀 Nova AI Docker Image
|
| 2 |
-
FROM python:3.9-slim
|
| 3 |
-
|
| 4 |
-
# 📋 Metadata
|
| 5 |
-
LABEL maintainer="Teknova <teknova@example.com>"
|
| 6 |
-
LABEL description="Teknova Nova AI - Özgün yapay zeka teknolojisi"
|
| 7 |
-
LABEL version="1.0.0"
|
| 8 |
-
|
| 9 |
-
# 🔧 Environment variables
|
| 10 |
-
ENV PYTHONUNBUFFERED=1
|
| 11 |
-
ENV PYTHONDONTWRITEBYTECODE=1
|
| 12 |
-
ENV PIP_NO_CACHE_DIR=1
|
| 13 |
-
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
|
| 14 |
-
|
| 15 |
-
# 📂 Working directory
|
| 16 |
-
WORKDIR /app
|
| 17 |
-
|
| 18 |
-
# 🔧 System dependencies
|
| 19 |
-
RUN apt-get update && apt-get install -y \
|
| 20 |
-
gcc \
|
| 21 |
-
g++ \
|
| 22 |
-
&& rm -rf /var/lib/apt/lists/*
|
| 23 |
-
|
| 24 |
-
# 📦 Copy requirements first (for better caching)
|
| 25 |
-
COPY requirements.txt .
|
| 26 |
-
|
| 27 |
-
# 🐍 Install Python dependencies
|
| 28 |
-
RUN pip install --no-cache-dir -r requirements.txt
|
| 29 |
-
|
| 30 |
-
# 📁 Copy application code
|
| 31 |
-
COPY . .
|
| 32 |
-
|
| 33 |
-
# 👤 Create non-root user
|
| 34 |
-
RUN useradd -m -u 1000 novaai && chown -R novaai:novaai /app
|
| 35 |
-
USER novaai
|
| 36 |
-
|
| 37 |
-
# 🌐 Expose port
|
| 38 |
-
EXPOSE 8000
|
| 39 |
-
|
| 40 |
-
# 🚀 Health check
|
| 41 |
-
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
|
| 42 |
-
CMD curl -f http://localhost:8000/ || exit 1
|
| 43 |
-
|
| 44 |
-
# 🏃 Run application
|
| 45 |
CMD ["python", "app.py"]
|
|
|
|
| 1 |
+
# 🚀 Nova AI Docker Image
|
| 2 |
+
FROM python:3.9-slim
|
| 3 |
+
|
| 4 |
+
# 📋 Metadata
|
| 5 |
+
LABEL maintainer="Teknova <teknova@example.com>"
|
| 6 |
+
LABEL description="Teknova Nova AI - Özgün yapay zeka teknolojisi"
|
| 7 |
+
LABEL version="1.0.0"
|
| 8 |
+
|
| 9 |
+
# 🔧 Environment variables
|
| 10 |
+
ENV PYTHONUNBUFFERED=1
|
| 11 |
+
ENV PYTHONDONTWRITEBYTECODE=1
|
| 12 |
+
ENV PIP_NO_CACHE_DIR=1
|
| 13 |
+
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
|
| 14 |
+
|
| 15 |
+
# 📂 Working directory
|
| 16 |
+
WORKDIR /app
|
| 17 |
+
|
| 18 |
+
# 🔧 System dependencies
|
| 19 |
+
RUN apt-get update && apt-get install -y \
|
| 20 |
+
gcc \
|
| 21 |
+
g++ \
|
| 22 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 23 |
+
|
| 24 |
+
# 📦 Copy requirements first (for better caching)
|
| 25 |
+
COPY requirements.txt .
|
| 26 |
+
|
| 27 |
+
# 🐍 Install Python dependencies
|
| 28 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
| 29 |
+
|
| 30 |
+
# 📁 Copy application code
|
| 31 |
+
COPY . .
|
| 32 |
+
|
| 33 |
+
# 👤 Create non-root user
|
| 34 |
+
RUN useradd -m -u 1000 novaai && chown -R novaai:novaai /app
|
| 35 |
+
USER novaai
|
| 36 |
+
|
| 37 |
+
# 🌐 Expose port
|
| 38 |
+
EXPOSE 8000
|
| 39 |
+
|
| 40 |
+
# 🚀 Health check
|
| 41 |
+
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
|
| 42 |
+
CMD curl -f http://localhost:8000/ || exit 1
|
| 43 |
+
|
| 44 |
+
# 🏃 Run application
|
| 45 |
CMD ["python", "app.py"]
|
LICENSE
CHANGED
|
@@ -1,31 +1,31 @@
|
|
| 1 |
-
MIT License
|
| 2 |
-
|
| 3 |
-
Copyright (c) 2024 Teknova - Nova AI
|
| 4 |
-
|
| 5 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
-
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
-
in the Software without restriction, including without limitation the rights
|
| 8 |
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
-
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
-
furnished to do so, subject to the following conditions:
|
| 11 |
-
|
| 12 |
-
The above copyright notice and this permission notice shall be included in all
|
| 13 |
-
copies or substantial portions of the Software.
|
| 14 |
-
|
| 15 |
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
-
SOFTWARE.
|
| 22 |
-
|
| 23 |
-
---
|
| 24 |
-
|
| 25 |
-
🚀 Teknova Nova AI - Özgün Yapay Zeka Teknolojisi
|
| 26 |
-
|
| 27 |
-
Bu proje Teknova tarafından geliştirilmiştir ve açık kaynak topluluk için
|
| 28 |
-
MIT lisansı altında sunulmaktadır.
|
| 29 |
-
|
| 30 |
-
Nova AI'nin model dosyaları ve özgün algoritmaları Teknova'nın fikri mülkiyetidir.
|
| 31 |
Ticari kullanım için lütfen bizimle iletişime geçin.
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2024 Teknova - Nova AI
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in all
|
| 13 |
+
copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
+
SOFTWARE.
|
| 22 |
+
|
| 23 |
+
---
|
| 24 |
+
|
| 25 |
+
🚀 Teknova Nova AI - Özgün Yapay Zeka Teknolojisi
|
| 26 |
+
|
| 27 |
+
Bu proje Teknova tarafından geliştirilmiştir ve açık kaynak topluluk için
|
| 28 |
+
MIT lisansı altında sunulmaktadır.
|
| 29 |
+
|
| 30 |
+
Nova AI'nin model dosyaları ve özgün algoritmaları Teknova'nın fikri mülkiyetidir.
|
| 31 |
Ticari kullanım için lütfen bizimle iletişime geçin.
|
MODEL_SETUP.md
CHANGED
|
@@ -1,78 +1,78 @@
|
|
| 1 |
-
# 🚀 Nova AI Model Kurulum Rehberi
|
| 2 |
-
|
| 3 |
-
## 📂 Model Dosyalarını Hazırlama
|
| 4 |
-
|
| 5 |
-
Model dosyaları GitHub'a yüklenemez (çok büyük). İki seçeneğiniz var:
|
| 6 |
-
|
| 7 |
-
### 🔥 Seçenek 1: Yerel Model Klasörü Oluşturma
|
| 8 |
-
|
| 9 |
-
```bash
|
| 10 |
-
# 1. Nova AI model klasörünü oluşturun
|
| 11 |
-
mkdir nova-ai-model
|
| 12 |
-
|
| 13 |
-
# 2. Model dosyalarınızı bu klasöre kopyalayın:
|
| 14 |
-
nova-ai-model/
|
| 15 |
-
├── config.json
|
| 16 |
-
├── tokenizer.json
|
| 17 |
-
├── tokenizer.model
|
| 18 |
-
├── tokenizer_config.json
|
| 19 |
-
├── special_tokens_map.json
|
| 20 |
-
├── generation_config.json
|
| 21 |
-
├── pytorch_model.bin (veya .safetensors dosyaları)
|
| 22 |
-
└── model.safetensors.index.json
|
| 23 |
-
```
|
| 24 |
-
|
| 25 |
-
### 🌐 Seçenek 2: Hugging Face'den İndirme
|
| 26 |
-
|
| 27 |
-
```python
|
| 28 |
-
# download_mistral.py dosyasını düzenleyin:
|
| 29 |
-
MODEL_NAME = "your-username/your-nova-ai-model" # Kendi modeliniz
|
| 30 |
-
LOCAL_DIR = "nova-ai-model"
|
| 31 |
-
|
| 32 |
-
# Sonra çalıştırın:
|
| 33 |
-
python download_mistral.py
|
| 34 |
-
```
|
| 35 |
-
|
| 36 |
-
### 📱 Seçenek 3: Google Colab
|
| 37 |
-
|
| 38 |
-
```python
|
| 39 |
-
# Nova_AI_Colab.py dosyasını kullanın
|
| 40 |
-
# Model dosyalarınızı ZIP olarak yükleyin
|
| 41 |
-
# Otomatik olarak /content/nova-ai-model'e çıkartılır
|
| 42 |
-
```
|
| 43 |
-
|
| 44 |
-
## 🔧 Kurulum Tamamlandıktan Sonra
|
| 45 |
-
|
| 46 |
-
```bash
|
| 47 |
-
# Web arayüzünü başlatın
|
| 48 |
-
python app.py
|
| 49 |
-
|
| 50 |
-
# Veya Gradio arayüzünü
|
| 51 |
-
python gradio_app.py
|
| 52 |
-
|
| 53 |
-
# Veya konsol modunu
|
| 54 |
-
python main.py
|
| 55 |
-
```
|
| 56 |
-
|
| 57 |
-
## 🎯 Model Dosya Formatları
|
| 58 |
-
|
| 59 |
-
Nova AI şu formatları destekler:
|
| 60 |
-
- ✅ PyTorch (.bin)
|
| 61 |
-
- ✅ SafeTensors (.safetensors)
|
| 62 |
-
- ✅ Hugging Face format
|
| 63 |
-
- ✅ Transformers uyumlu
|
| 64 |
-
|
| 65 |
-
## 💡 İpuçları
|
| 66 |
-
|
| 67 |
-
- 🔸 Model dosyaları toplam ~13GB boyutunda
|
| 68 |
-
- 🔸 SSD'de saklayın (daha hızlı)
|
| 69 |
-
- 🔸 GPU için CUDA kurulu olmalı
|
| 70 |
-
- 🔸 En az 16GB RAM önerili
|
| 71 |
-
|
| 72 |
-
## 🚀 Teknova Nova AI
|
| 73 |
-
|
| 74 |
-
Model dosyalarınızı hazırladıktan sonra Nova AI tamamen çalışır durumda olacak!
|
| 75 |
-
|
| 76 |
-
---
|
| 77 |
-
|
| 78 |
**Not:** Bu repository kod dosyalarını içerir. Model dosyalarını ayrıca indirmeniz gerekir.
|
|
|
|
| 1 |
+
# 🚀 Nova AI Model Kurulum Rehberi
|
| 2 |
+
|
| 3 |
+
## 📂 Model Dosyalarını Hazırlama
|
| 4 |
+
|
| 5 |
+
Model dosyaları GitHub'a yüklenemez (çok büyük). İki seçeneğiniz var:
|
| 6 |
+
|
| 7 |
+
### 🔥 Seçenek 1: Yerel Model Klasörü Oluşturma
|
| 8 |
+
|
| 9 |
+
```bash
|
| 10 |
+
# 1. Nova AI model klasörünü oluşturun
|
| 11 |
+
mkdir nova-ai-model
|
| 12 |
+
|
| 13 |
+
# 2. Model dosyalarınızı bu klasöre kopyalayın:
|
| 14 |
+
nova-ai-model/
|
| 15 |
+
├── config.json
|
| 16 |
+
├── tokenizer.json
|
| 17 |
+
├── tokenizer.model
|
| 18 |
+
├── tokenizer_config.json
|
| 19 |
+
├── special_tokens_map.json
|
| 20 |
+
├── generation_config.json
|
| 21 |
+
├── pytorch_model.bin (veya .safetensors dosyaları)
|
| 22 |
+
└── model.safetensors.index.json
|
| 23 |
+
```
|
| 24 |
+
|
| 25 |
+
### 🌐 Seçenek 2: Hugging Face'den İndirme
|
| 26 |
+
|
| 27 |
+
```python
|
| 28 |
+
# download_mistral.py dosyasını düzenleyin:
|
| 29 |
+
MODEL_NAME = "your-username/your-nova-ai-model" # Kendi modeliniz
|
| 30 |
+
LOCAL_DIR = "nova-ai-model"
|
| 31 |
+
|
| 32 |
+
# Sonra çalıştırın:
|
| 33 |
+
python download_mistral.py
|
| 34 |
+
```
|
| 35 |
+
|
| 36 |
+
### 📱 Seçenek 3: Google Colab
|
| 37 |
+
|
| 38 |
+
```python
|
| 39 |
+
# Nova_AI_Colab.py dosyasını kullanın
|
| 40 |
+
# Model dosyalarınızı ZIP olarak yükleyin
|
| 41 |
+
# Otomatik olarak /content/nova-ai-model'e çıkartılır
|
| 42 |
+
```
|
| 43 |
+
|
| 44 |
+
## 🔧 Kurulum Tamamlandıktan Sonra
|
| 45 |
+
|
| 46 |
+
```bash
|
| 47 |
+
# Web arayüzünü başlatın
|
| 48 |
+
python app.py
|
| 49 |
+
|
| 50 |
+
# Veya Gradio arayüzünü
|
| 51 |
+
python gradio_app.py
|
| 52 |
+
|
| 53 |
+
# Veya konsol modunu
|
| 54 |
+
python main.py
|
| 55 |
+
```
|
| 56 |
+
|
| 57 |
+
## 🎯 Model Dosya Formatları
|
| 58 |
+
|
| 59 |
+
Nova AI şu formatları destekler:
|
| 60 |
+
- ✅ PyTorch (.bin)
|
| 61 |
+
- ✅ SafeTensors (.safetensors)
|
| 62 |
+
- ✅ Hugging Face format
|
| 63 |
+
- ✅ Transformers uyumlu
|
| 64 |
+
|
| 65 |
+
## 💡 İpuçları
|
| 66 |
+
|
| 67 |
+
- 🔸 Model dosyaları toplam ~13GB boyutunda
|
| 68 |
+
- 🔸 SSD'de saklayın (daha hızlı)
|
| 69 |
+
- 🔸 GPU için CUDA kurulu olmalı
|
| 70 |
+
- 🔸 En az 16GB RAM önerili
|
| 71 |
+
|
| 72 |
+
## 🚀 Teknova Nova AI
|
| 73 |
+
|
| 74 |
+
Model dosyalarınızı hazırladıktan sonra Nova AI tamamen çalışır durumda olacak!
|
| 75 |
+
|
| 76 |
+
---
|
| 77 |
+
|
| 78 |
**Not:** Bu repository kod dosyalarını içerir. Model dosyalarını ayrıca indirmeniz gerekir.
|
README.md
CHANGED
|
@@ -1,289 +1,289 @@
|
|
| 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: gradio_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* 🚀
|
|
|
|
| 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: gradio_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,360 +1,360 @@
|
|
| 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 |
-
import os
|
| 10 |
-
import logging
|
| 11 |
-
import time
|
| 12 |
-
from typing import List, Tuple
|
| 13 |
-
|
| 14 |
-
# Spaces import - sadece Hugging Face Spaces'te mevcut
|
| 15 |
-
try:
|
| 16 |
-
import spaces
|
| 17 |
-
HAS_SPACES = True
|
| 18 |
-
except ImportError:
|
| 19 |
-
HAS_SPACES = False
|
| 20 |
-
# Spaces decorator'ı için dummy fonksiyon
|
| 21 |
-
def spaces_gpu(func):
|
| 22 |
-
return func
|
| 23 |
-
spaces = type('spaces', (), {'GPU': spaces_gpu})()
|
| 24 |
-
|
| 25 |
-
# Logging setup
|
| 26 |
-
logging.basicConfig(level=logging.INFO)
|
| 27 |
-
logger = logging.getLogger(__name__)
|
| 28 |
-
|
| 29 |
-
# Global variables
|
| 30 |
-
model = None
|
| 31 |
-
tokenizer = None
|
| 32 |
-
device = "cuda" if torch.cuda.is_available() else "cpu"
|
| 33 |
-
|
| 34 |
-
def load_demo_responses():
|
| 35 |
-
"""
|
| 36 |
-
Demo yanıtları - model yokken kullanılacak
|
| 37 |
-
"""
|
| 38 |
-
demo_responses = {
|
| 39 |
-
"merhaba": "Merhaba! Ben Nova AI, Teknova'nın özgün yapay zeka teknolojisi. Size nasıl yardımcı olabilirim?",
|
| 40 |
-
"nasılsın": "Ben Nova AI'yım ve harika hissediyorum! Sizinle sohbet etmek için buradayım. Ne konuşmak istersiniz?",
|
| 41 |
-
"nova ai nedir": "Nova AI, Teknova tarafından geliştirilen özgün bir yapay zeka modelidir. Türkçe konuşabilir ve çeşitli konularda yardımcı olabilirim.",
|
| 42 |
-
"teknova": "Teknova, Türkiye'nin öncü yapay zeka teknoloji şirketidir. Özgün AI çözümleri geliştiriyoruz.",
|
| 43 |
-
"yapay zeka": "Yapay zeka, bilgisayarların insan benzeri düşünme ve öğrenme yetenekleri göstermesidir. Ben de bir yapay zeka örneğiyim!",
|
| 44 |
-
"projeler": "Size yenilikçi proje fikirleri önerebilirim: AI chatbot, veri analizi, web uygulaması, mobil uygulama gibi...",
|
| 45 |
-
"gelecek": "Gelecekte yapay zeka, otonom araçlar, akıllı şehirler ve personalize eğitim gibi alanlarda devrim yaratacak!"
|
| 46 |
-
}
|
| 47 |
-
return demo_responses
|
| 48 |
-
|
| 49 |
-
def generate_demo_response(message: str) -> str:
|
| 50 |
-
"""
|
| 51 |
-
Demo yanıt oluştur (model olmadığında)
|
| 52 |
-
"""
|
| 53 |
-
message_lower = message.lower().strip()
|
| 54 |
-
demo_responses = load_demo_responses()
|
| 55 |
-
|
| 56 |
-
# Exact match
|
| 57 |
-
if message_lower in demo_responses:
|
| 58 |
-
return demo_responses[message_lower]
|
| 59 |
-
|
| 60 |
-
# Partial match
|
| 61 |
-
for key, response in demo_responses.items():
|
| 62 |
-
if key in message_lower:
|
| 63 |
-
return response
|
| 64 |
-
|
| 65 |
-
# Default responses
|
| 66 |
-
if "?" in message:
|
| 67 |
-
return f"'{message}' hakkında çok ilginç bir soru sordunuz! Nova AI olarak elimden geldiğince yardımcı olmaya çalışırım. Bu konuda daha spesifik sorular sorabilirsiniz."
|
| 68 |
-
|
| 69 |
-
return f"Nova AI burada! '{message}' konusunda konuşmak güzel. Size nasıl yardımcı olabilirim? Daha detaylı sorular sorabilirsiniz."
|
| 70 |
-
|
| 71 |
-
def chat_response(message: str, history: List[List[str]], max_length: int, temperature: float) -> Tuple[str, List[List[str]]]:
|
| 72 |
-
"""
|
| 73 |
-
Chat response function
|
| 74 |
-
"""
|
| 75 |
-
if not message.strip():
|
| 76 |
-
return "", history
|
| 77 |
-
|
| 78 |
-
# Simulate thinking time
|
| 79 |
-
time.sleep(0.5)
|
| 80 |
-
|
| 81 |
-
# Generate response
|
| 82 |
-
if model and tokenizer:
|
| 83 |
-
# Gerçek model ile yanıt (model yüklü ise)
|
| 84 |
-
try:
|
| 85 |
-
response = generate_real_response(message, max_length, temperature)
|
| 86 |
-
except Exception as e:
|
| 87 |
-
response = f"Model hatası: {str(e)} - Demo moduna geçiliyor..."
|
| 88 |
-
response += "\n\n" + generate_demo_response(message)
|
| 89 |
-
else:
|
| 90 |
-
# Demo yanıt
|
| 91 |
-
response = generate_demo_response(message)
|
| 92 |
-
response += "\n\n💡 *Not: Bu demo modunda çalışıyor. Gerçek Nova AI modeli yüklendiğinde daha gelişmiş yanıtlar alacaksınız.*"
|
| 93 |
-
|
| 94 |
-
# Add to history
|
| 95 |
-
history.append([message, response])
|
| 96 |
-
return "", history
|
| 97 |
-
|
| 98 |
-
@spaces.GPU
|
| 99 |
-
def generate_real_response(message: str, max_length: int, temperature: float) -> str:
|
| 100 |
-
"""
|
| 101 |
-
Gerçek model ile yanıt oluştur - ZeroGPU destekli
|
| 102 |
-
"""
|
| 103 |
-
if not model or not tokenizer:
|
| 104 |
-
return generate_demo_response(message)
|
| 105 |
-
|
| 106 |
-
try:
|
| 107 |
-
inputs = tokenizer.encode(message, return_tensors="pt")
|
| 108 |
-
if device == "cuda":
|
| 109 |
-
inputs = inputs.to(device)
|
| 110 |
-
|
| 111 |
-
with torch.no_grad():
|
| 112 |
-
outputs = model.generate(
|
| 113 |
-
inputs,
|
| 114 |
-
max_length=max_length,
|
| 115 |
-
temperature=temperature,
|
| 116 |
-
do_sample=True,
|
| 117 |
-
pad_token_id=tokenizer.eos_token_id,
|
| 118 |
-
no_repeat_ngram_size=3,
|
| 119 |
-
top_p=0.9
|
| 120 |
-
)
|
| 121 |
-
|
| 122 |
-
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 123 |
-
if message in response:
|
| 124 |
-
response = response.replace(message, "").strip()
|
| 125 |
-
|
| 126 |
-
return response if response else generate_demo_response(message)
|
| 127 |
-
|
| 128 |
-
except Exception as e:
|
| 129 |
-
logger.error(f"Model generation error: {e}")
|
| 130 |
-
return generate_demo_response(message)
|
| 131 |
-
|
| 132 |
-
@spaces.GPU
|
| 133 |
-
def load_model():
|
| 134 |
-
"""
|
| 135 |
-
Teknova Nova AI modelini yükle - ZeroGPU destekli
|
| 136 |
-
"""
|
| 137 |
-
global model, tokenizer
|
| 138 |
-
|
| 139 |
-
try:
|
| 140 |
-
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
|
| 141 |
-
|
| 142 |
-
# Model path - Hugging Face Hub'dan yükle
|
| 143 |
-
model_path = "veteroner/NovaAI"
|
| 144 |
-
|
| 145 |
-
logger.info(f"🚀 Teknova Nova AI modeli Hub'dan yükleniyor: {model_path}")
|
| 146 |
-
|
| 147 |
-
# Tokenizer yükle
|
| 148 |
-
tokenizer = AutoTokenizer.from_pretrained(
|
| 149 |
-
model_path,
|
| 150 |
-
trust_remote_code=True,
|
| 151 |
-
use_fast=True
|
| 152 |
-
)
|
| 153 |
-
|
| 154 |
-
# Pad token ayarla
|
| 155 |
-
if tokenizer.pad_token is None:
|
| 156 |
-
tokenizer.pad_token = tokenizer.eos_token
|
| 157 |
-
|
| 158 |
-
# Model yükle - ZeroGPU optimizasyonu
|
| 159 |
-
model = AutoModelForCausalLM.from_pretrained(
|
| 160 |
-
model_path,
|
| 161 |
-
device_map="auto",
|
| 162 |
-
trust_remote_code=True,
|
| 163 |
-
torch_dtype=torch.float16,
|
| 164 |
-
low_cpu_mem_usage=True
|
| 165 |
-
)
|
| 166 |
-
|
| 167 |
-
logger.info(f"✅ Nova AI model yüklendi ({device})")
|
| 168 |
-
return f"✅ Teknova Nova AI hazır! ({device})"
|
| 169 |
-
|
| 170 |
-
except Exception as e:
|
| 171 |
-
logger.error(f"Model yükleme hatası: {e}")
|
| 172 |
-
return f"❌ Model yüklenemedi: {str(e)} - Demo modunda çalışacak"
|
| 173 |
-
|
| 174 |
-
@spaces.GPU
|
| 175 |
-
def chat_with_nova(message: str, history: List[Tuple[str, str]]) -> str:
|
| 176 |
-
"""
|
| 177 |
-
Nova AI ile sohbet et - ZeroGPU destekli
|
| 178 |
-
"""
|
| 179 |
-
global model, tokenizer
|
| 180 |
-
|
| 181 |
-
if model is None or tokenizer is None:
|
| 182 |
-
# Demo yanıt ver
|
| 183 |
-
return generate_demo_response(message) + "\n\n💡 *Not: Demo modunda çalışıyor.*"
|
| 184 |
-
|
| 185 |
-
if not message.strip():
|
| 186 |
-
return "❓ Lütfen bir mesaj yazın."
|
| 187 |
-
|
| 188 |
-
try:
|
| 189 |
-
# Konuşma geçmişini hazırla
|
| 190 |
-
conversation = ""
|
| 191 |
-
for user_msg, bot_msg in history:
|
| 192 |
-
if user_msg and bot_msg:
|
| 193 |
-
conversation += f"Kullanıcı: {user_msg}\nNova AI: {bot_msg}\n"
|
| 194 |
-
|
| 195 |
-
# Yeni mesajı ekle
|
| 196 |
-
conversation += f"Kullanıcı: {message}\nNova AI:"
|
| 197 |
-
|
| 198 |
-
# Tokenize et
|
| 199 |
-
inputs = tokenizer(
|
| 200 |
-
conversation,
|
| 201 |
-
return_tensors="pt",
|
| 202 |
-
truncation=True,
|
| 203 |
-
max_length=2048,
|
| 204 |
-
padding=True
|
| 205 |
-
)
|
| 206 |
-
|
| 207 |
-
# GPU'ya taşı
|
| 208 |
-
if torch.cuda.is_available():
|
| 209 |
-
inputs = {k: v.to(model.device) for k, v in inputs.items()}
|
| 210 |
-
|
| 211 |
-
# Yanıt üret
|
| 212 |
-
with torch.no_grad():
|
| 213 |
-
outputs = model.generate(
|
| 214 |
-
**inputs,
|
| 215 |
-
max_new_tokens=256,
|
| 216 |
-
temperature=0.7,
|
| 217 |
-
top_p=0.9,
|
| 218 |
-
do_sample=True,
|
| 219 |
-
pad_token_id=tokenizer.pad_token_id,
|
| 220 |
-
eos_token_id=tokenizer.eos_token_id,
|
| 221 |
-
repetition_penalty=1.1
|
| 222 |
-
)
|
| 223 |
-
|
| 224 |
-
# Yanıtı decode et
|
| 225 |
-
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 226 |
-
|
| 227 |
-
# Sadece yeni üretilen kısmı al
|
| 228 |
-
new_response = response[len(conversation):].strip()
|
| 229 |
-
|
| 230 |
-
return new_response if new_response else "Üzgünüm, yanıt üretemedi."
|
| 231 |
-
|
| 232 |
-
except Exception as e:
|
| 233 |
-
logger.error(f"Chat hatası: {e}")
|
| 234 |
-
return f"❌ Yanıt üretirken hata: {str(e)}"
|
| 235 |
-
|
| 236 |
-
# Model yüklemeyi başlat
|
| 237 |
-
logger.info("Model yükleme başlatılıyor...")
|
| 238 |
-
load_status = load_model()
|
| 239 |
-
logger.info(f"Model durumu: {load_status}")
|
| 240 |
-
|
| 241 |
-
# Gradio arayüzü
|
| 242 |
-
with gr.Blocks(
|
| 243 |
-
theme=gr.themes.Soft(),
|
| 244 |
-
title="Teknova Nova AI - ZeroGPU",
|
| 245 |
-
css="""
|
| 246 |
-
.gradio-container {
|
| 247 |
-
max-width: 900px;
|
| 248 |
-
margin: 0 auto;
|
| 249 |
-
}
|
| 250 |
-
.header-text {
|
| 251 |
-
text-align: center;
|
| 252 |
-
padding: 20px;
|
| 253 |
-
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
| 254 |
-
color: white;
|
| 255 |
-
border-radius: 15px;
|
| 256 |
-
margin-bottom: 20px;
|
| 257 |
-
}
|
| 258 |
-
"""
|
| 259 |
-
) as demo:
|
| 260 |
-
|
| 261 |
-
# Header
|
| 262 |
-
gr.HTML("""
|
| 263 |
-
<div class="header-text">
|
| 264 |
-
<h1 style="font-size: 2.5rem; margin: 0; font-weight: bold;">
|
| 265 |
-
🚀 Teknova Nova AI
|
| 266 |
-
</h1>
|
| 267 |
-
<p style="font-size: 1.2rem; margin: 10px 0; opacity: 0.9;">
|
| 268 |
-
Türkiye'nin Özgün Yapay Zeka Modeli
|
| 269 |
-
</p>
|
| 270 |
-
<div style="background: rgba(255,255,255,0.2); padding: 8px 16px; border-radius: 20px; display: inline-block; font-size: 0.9rem;">
|
| 271 |
-
🧠 Nova AI • 🇹�� Türkçe Optimize • ⚡ ZeroGPU Hızlı
|
| 272 |
-
</div>
|
| 273 |
-
</div>
|
| 274 |
-
""")
|
| 275 |
-
|
| 276 |
-
# Chat interface
|
| 277 |
-
chatbot = gr.Chatbot(
|
| 278 |
-
height=500,
|
| 279 |
-
show_label=False,
|
| 280 |
-
show_share_button=True,
|
| 281 |
-
show_copy_button=True,
|
| 282 |
-
avatar_images=[None, "🤖"],
|
| 283 |
-
bubble_full_width=False
|
| 284 |
-
)
|
| 285 |
-
|
| 286 |
-
with gr.Row():
|
| 287 |
-
msg = gr.Textbox(
|
| 288 |
-
placeholder="Nova AI'ya mesajınızı yazın... (Örn: Merhaba, nasılsın?)",
|
| 289 |
-
show_label=False,
|
| 290 |
-
scale=4,
|
| 291 |
-
container=False
|
| 292 |
-
)
|
| 293 |
-
submit = gr.Button("🚀 Gönder", scale=1, variant="primary")
|
| 294 |
-
|
| 295 |
-
with gr.Row():
|
| 296 |
-
clear = gr.Button("🗑️ Temizle", scale=1)
|
| 297 |
-
retry = gr.Button("🔄 Tekrar Dene", scale=1)
|
| 298 |
-
|
| 299 |
-
# Examples
|
| 300 |
-
gr.Examples(
|
| 301 |
-
examples=[
|
| 302 |
-
"Merhaba Nova AI, nasılsın?",
|
| 303 |
-
"Yapay zeka nedir?",
|
| 304 |
-
"Teknova hakkında bilgi ver",
|
| 305 |
-
"Bana bir hikaye anlat",
|
| 306 |
-
"Python programlama hakkında bilgi ver"
|
| 307 |
-
],
|
| 308 |
-
inputs=msg,
|
| 309 |
-
label="💡 Örnek Sorular"
|
| 310 |
-
)
|
| 311 |
-
|
| 312 |
-
# Footer
|
| 313 |
-
gr.HTML("""
|
| 314 |
-
<div style="text-align: center; padding: 15px; color: #666; font-size: 0.9rem;">
|
| 315 |
-
<p>🌟 <strong>Teknova Nova AI</strong> - Tamamen özgün Türkçe dil modeli</p>
|
| 316 |
-
<p>🚀 ZeroGPU teknolojisi ile hızlandırılmış</p>
|
| 317 |
-
<p style="color: #999;">⚡ Teknova Innovation ile güçlendirilmiştir</p>
|
| 318 |
-
</div>
|
| 319 |
-
""")
|
| 320 |
-
|
| 321 |
-
# Event handlers
|
| 322 |
-
def user_message(message, history):
|
| 323 |
-
return "", history + [[message, None]]
|
| 324 |
-
|
| 325 |
-
@spaces.GPU
|
| 326 |
-
def bot_message(history):
|
| 327 |
-
"""Bot yanıtı oluştur - ZeroGPU destekli"""
|
| 328 |
-
if history and history[-1][1] is None:
|
| 329 |
-
user_msg = history[-1][0]
|
| 330 |
-
bot_response = chat_with_nova(user_msg, history[:-1])
|
| 331 |
-
history[-1][1] = bot_response
|
| 332 |
-
return history
|
| 333 |
-
|
| 334 |
-
@spaces.GPU
|
| 335 |
-
def retry_last(history):
|
| 336 |
-
"""Son mesajı yeniden dene - ZeroGPU destekli"""
|
| 337 |
-
if history and history[-1][1] is not None:
|
| 338 |
-
user_msg = history[-1][0]
|
| 339 |
-
bot_response = chat_with_nova(user_msg, history[:-1])
|
| 340 |
-
history[-1][1] = bot_response
|
| 341 |
-
return history
|
| 342 |
-
|
| 343 |
-
# Event bindings
|
| 344 |
-
msg.submit(user_message, [msg, chatbot], [msg, chatbot], queue=False).then(
|
| 345 |
-
bot_message, chatbot, chatbot
|
| 346 |
-
)
|
| 347 |
-
submit.click(user_message, [msg, chatbot], [msg, chatbot], queue=False).then(
|
| 348 |
-
bot_message, chatbot, chatbot
|
| 349 |
-
)
|
| 350 |
-
clear.click(lambda: None, None, chatbot, queue=False)
|
| 351 |
-
retry.click(retry_last, chatbot, chatbot)
|
| 352 |
-
|
| 353 |
-
# Launch
|
| 354 |
-
if __name__ == "__main__":
|
| 355 |
-
demo.launch(
|
| 356 |
-
server_name="0.0.0.0",
|
| 357 |
-
server_port=7860,
|
| 358 |
-
share=False,
|
| 359 |
-
show_error=True
|
| 360 |
)
|
|
|
|
| 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 |
+
import os
|
| 10 |
+
import logging
|
| 11 |
+
import time
|
| 12 |
+
from typing import List, Tuple
|
| 13 |
+
|
| 14 |
+
# Spaces import - sadece Hugging Face Spaces'te mevcut
|
| 15 |
+
try:
|
| 16 |
+
import spaces
|
| 17 |
+
HAS_SPACES = True
|
| 18 |
+
except ImportError:
|
| 19 |
+
HAS_SPACES = False
|
| 20 |
+
# Spaces decorator'ı için dummy fonksiyon
|
| 21 |
+
def spaces_gpu(func):
|
| 22 |
+
return func
|
| 23 |
+
spaces = type('spaces', (), {'GPU': spaces_gpu})()
|
| 24 |
+
|
| 25 |
+
# Logging setup
|
| 26 |
+
logging.basicConfig(level=logging.INFO)
|
| 27 |
+
logger = logging.getLogger(__name__)
|
| 28 |
+
|
| 29 |
+
# Global variables
|
| 30 |
+
model = None
|
| 31 |
+
tokenizer = None
|
| 32 |
+
device = "cuda" if torch.cuda.is_available() else "cpu"
|
| 33 |
+
|
| 34 |
+
def load_demo_responses():
|
| 35 |
+
"""
|
| 36 |
+
Demo yanıtları - model yokken kullanılacak
|
| 37 |
+
"""
|
| 38 |
+
demo_responses = {
|
| 39 |
+
"merhaba": "Merhaba! Ben Nova AI, Teknova'nın özgün yapay zeka teknolojisi. Size nasıl yardımcı olabilirim?",
|
| 40 |
+
"nasılsın": "Ben Nova AI'yım ve harika hissediyorum! Sizinle sohbet etmek için buradayım. Ne konuşmak istersiniz?",
|
| 41 |
+
"nova ai nedir": "Nova AI, Teknova tarafından geliştirilen özgün bir yapay zeka modelidir. Türkçe konuşabilir ve çeşitli konularda yardımcı olabilirim.",
|
| 42 |
+
"teknova": "Teknova, Türkiye'nin öncü yapay zeka teknoloji şirketidir. Özgün AI çözümleri geliştiriyoruz.",
|
| 43 |
+
"yapay zeka": "Yapay zeka, bilgisayarların insan benzeri düşünme ve öğrenme yetenekleri göstermesidir. Ben de bir yapay zeka örneğiyim!",
|
| 44 |
+
"projeler": "Size yenilikçi proje fikirleri önerebilirim: AI chatbot, veri analizi, web uygulaması, mobil uygulama gibi...",
|
| 45 |
+
"gelecek": "Gelecekte yapay zeka, otonom araçlar, akıllı şehirler ve personalize eğitim gibi alanlarda devrim yaratacak!"
|
| 46 |
+
}
|
| 47 |
+
return demo_responses
|
| 48 |
+
|
| 49 |
+
def generate_demo_response(message: str) -> str:
|
| 50 |
+
"""
|
| 51 |
+
Demo yanıt oluştur (model olmadığında)
|
| 52 |
+
"""
|
| 53 |
+
message_lower = message.lower().strip()
|
| 54 |
+
demo_responses = load_demo_responses()
|
| 55 |
+
|
| 56 |
+
# Exact match
|
| 57 |
+
if message_lower in demo_responses:
|
| 58 |
+
return demo_responses[message_lower]
|
| 59 |
+
|
| 60 |
+
# Partial match
|
| 61 |
+
for key, response in demo_responses.items():
|
| 62 |
+
if key in message_lower:
|
| 63 |
+
return response
|
| 64 |
+
|
| 65 |
+
# Default responses
|
| 66 |
+
if "?" in message:
|
| 67 |
+
return f"'{message}' hakkında çok ilginç bir soru sordunuz! Nova AI olarak elimden geldiğince yardımcı olmaya çalışırım. Bu konuda daha spesifik sorular sorabilirsiniz."
|
| 68 |
+
|
| 69 |
+
return f"Nova AI burada! '{message}' konusunda konuşmak güzel. Size nasıl yardımcı olabilirim? Daha detaylı sorular sorabilirsiniz."
|
| 70 |
+
|
| 71 |
+
def chat_response(message: str, history: List[List[str]], max_length: int, temperature: float) -> Tuple[str, List[List[str]]]:
|
| 72 |
+
"""
|
| 73 |
+
Chat response function
|
| 74 |
+
"""
|
| 75 |
+
if not message.strip():
|
| 76 |
+
return "", history
|
| 77 |
+
|
| 78 |
+
# Simulate thinking time
|
| 79 |
+
time.sleep(0.5)
|
| 80 |
+
|
| 81 |
+
# Generate response
|
| 82 |
+
if model and tokenizer:
|
| 83 |
+
# Gerçek model ile yanıt (model yüklü ise)
|
| 84 |
+
try:
|
| 85 |
+
response = generate_real_response(message, max_length, temperature)
|
| 86 |
+
except Exception as e:
|
| 87 |
+
response = f"Model hatası: {str(e)} - Demo moduna geçiliyor..."
|
| 88 |
+
response += "\n\n" + generate_demo_response(message)
|
| 89 |
+
else:
|
| 90 |
+
# Demo yanıt
|
| 91 |
+
response = generate_demo_response(message)
|
| 92 |
+
response += "\n\n💡 *Not: Bu demo modunda çalışıyor. Gerçek Nova AI modeli yüklendiğinde daha gelişmiş yanıtlar alacaksınız.*"
|
| 93 |
+
|
| 94 |
+
# Add to history
|
| 95 |
+
history.append([message, response])
|
| 96 |
+
return "", history
|
| 97 |
+
|
| 98 |
+
@spaces.GPU
|
| 99 |
+
def generate_real_response(message: str, max_length: int, temperature: float) -> str:
|
| 100 |
+
"""
|
| 101 |
+
Gerçek model ile yanıt oluştur - ZeroGPU destekli
|
| 102 |
+
"""
|
| 103 |
+
if not model or not tokenizer:
|
| 104 |
+
return generate_demo_response(message)
|
| 105 |
+
|
| 106 |
+
try:
|
| 107 |
+
inputs = tokenizer.encode(message, return_tensors="pt")
|
| 108 |
+
if device == "cuda":
|
| 109 |
+
inputs = inputs.to(device)
|
| 110 |
+
|
| 111 |
+
with torch.no_grad():
|
| 112 |
+
outputs = model.generate(
|
| 113 |
+
inputs,
|
| 114 |
+
max_length=max_length,
|
| 115 |
+
temperature=temperature,
|
| 116 |
+
do_sample=True,
|
| 117 |
+
pad_token_id=tokenizer.eos_token_id,
|
| 118 |
+
no_repeat_ngram_size=3,
|
| 119 |
+
top_p=0.9
|
| 120 |
+
)
|
| 121 |
+
|
| 122 |
+
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 123 |
+
if message in response:
|
| 124 |
+
response = response.replace(message, "").strip()
|
| 125 |
+
|
| 126 |
+
return response if response else generate_demo_response(message)
|
| 127 |
+
|
| 128 |
+
except Exception as e:
|
| 129 |
+
logger.error(f"Model generation error: {e}")
|
| 130 |
+
return generate_demo_response(message)
|
| 131 |
+
|
| 132 |
+
@spaces.GPU
|
| 133 |
+
def load_model():
|
| 134 |
+
"""
|
| 135 |
+
Teknova Nova AI modelini yükle - ZeroGPU destekli
|
| 136 |
+
"""
|
| 137 |
+
global model, tokenizer
|
| 138 |
+
|
| 139 |
+
try:
|
| 140 |
+
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
|
| 141 |
+
|
| 142 |
+
# Model path - Hugging Face Hub'dan yükle
|
| 143 |
+
model_path = "veteroner/NovaAI"
|
| 144 |
+
|
| 145 |
+
logger.info(f"🚀 Teknova Nova AI modeli Hub'dan yükleniyor: {model_path}")
|
| 146 |
+
|
| 147 |
+
# Tokenizer yükle
|
| 148 |
+
tokenizer = AutoTokenizer.from_pretrained(
|
| 149 |
+
model_path,
|
| 150 |
+
trust_remote_code=True,
|
| 151 |
+
use_fast=True
|
| 152 |
+
)
|
| 153 |
+
|
| 154 |
+
# Pad token ayarla
|
| 155 |
+
if tokenizer.pad_token is None:
|
| 156 |
+
tokenizer.pad_token = tokenizer.eos_token
|
| 157 |
+
|
| 158 |
+
# Model yükle - ZeroGPU optimizasyonu
|
| 159 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 160 |
+
model_path,
|
| 161 |
+
device_map="auto",
|
| 162 |
+
trust_remote_code=True,
|
| 163 |
+
torch_dtype=torch.float16,
|
| 164 |
+
low_cpu_mem_usage=True
|
| 165 |
+
)
|
| 166 |
+
|
| 167 |
+
logger.info(f"✅ Nova AI model yüklendi ({device})")
|
| 168 |
+
return f"✅ Teknova Nova AI hazır! ({device})"
|
| 169 |
+
|
| 170 |
+
except Exception as e:
|
| 171 |
+
logger.error(f"Model yükleme hatası: {e}")
|
| 172 |
+
return f"❌ Model yüklenemedi: {str(e)} - Demo modunda çalışacak"
|
| 173 |
+
|
| 174 |
+
@spaces.GPU
|
| 175 |
+
def chat_with_nova(message: str, history: List[Tuple[str, str]]) -> str:
|
| 176 |
+
"""
|
| 177 |
+
Nova AI ile sohbet et - ZeroGPU destekli
|
| 178 |
+
"""
|
| 179 |
+
global model, tokenizer
|
| 180 |
+
|
| 181 |
+
if model is None or tokenizer is None:
|
| 182 |
+
# Demo yanıt ver
|
| 183 |
+
return generate_demo_response(message) + "\n\n💡 *Not: Demo modunda çalışıyor.*"
|
| 184 |
+
|
| 185 |
+
if not message.strip():
|
| 186 |
+
return "❓ Lütfen bir mesaj yazın."
|
| 187 |
+
|
| 188 |
+
try:
|
| 189 |
+
# Konuşma geçmişini hazırla
|
| 190 |
+
conversation = ""
|
| 191 |
+
for user_msg, bot_msg in history:
|
| 192 |
+
if user_msg and bot_msg:
|
| 193 |
+
conversation += f"Kullanıcı: {user_msg}\nNova AI: {bot_msg}\n"
|
| 194 |
+
|
| 195 |
+
# Yeni mesajı ekle
|
| 196 |
+
conversation += f"Kullanıcı: {message}\nNova AI:"
|
| 197 |
+
|
| 198 |
+
# Tokenize et
|
| 199 |
+
inputs = tokenizer(
|
| 200 |
+
conversation,
|
| 201 |
+
return_tensors="pt",
|
| 202 |
+
truncation=True,
|
| 203 |
+
max_length=2048,
|
| 204 |
+
padding=True
|
| 205 |
+
)
|
| 206 |
+
|
| 207 |
+
# GPU'ya taşı
|
| 208 |
+
if torch.cuda.is_available():
|
| 209 |
+
inputs = {k: v.to(model.device) for k, v in inputs.items()}
|
| 210 |
+
|
| 211 |
+
# Yanıt üret
|
| 212 |
+
with torch.no_grad():
|
| 213 |
+
outputs = model.generate(
|
| 214 |
+
**inputs,
|
| 215 |
+
max_new_tokens=256,
|
| 216 |
+
temperature=0.7,
|
| 217 |
+
top_p=0.9,
|
| 218 |
+
do_sample=True,
|
| 219 |
+
pad_token_id=tokenizer.pad_token_id,
|
| 220 |
+
eos_token_id=tokenizer.eos_token_id,
|
| 221 |
+
repetition_penalty=1.1
|
| 222 |
+
)
|
| 223 |
+
|
| 224 |
+
# Yanıtı decode et
|
| 225 |
+
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 226 |
+
|
| 227 |
+
# Sadece yeni üretilen kısmı al
|
| 228 |
+
new_response = response[len(conversation):].strip()
|
| 229 |
+
|
| 230 |
+
return new_response if new_response else "Üzgünüm, yanıt üretemedi."
|
| 231 |
+
|
| 232 |
+
except Exception as e:
|
| 233 |
+
logger.error(f"Chat hatası: {e}")
|
| 234 |
+
return f"❌ Yanıt üretirken hata: {str(e)}"
|
| 235 |
+
|
| 236 |
+
# Model yüklemeyi başlat
|
| 237 |
+
logger.info("Model yükleme başlatılıyor...")
|
| 238 |
+
load_status = load_model()
|
| 239 |
+
logger.info(f"Model durumu: {load_status}")
|
| 240 |
+
|
| 241 |
+
# Gradio arayüzü
|
| 242 |
+
with gr.Blocks(
|
| 243 |
+
theme=gr.themes.Soft(),
|
| 244 |
+
title="Teknova Nova AI - ZeroGPU",
|
| 245 |
+
css="""
|
| 246 |
+
.gradio-container {
|
| 247 |
+
max-width: 900px;
|
| 248 |
+
margin: 0 auto;
|
| 249 |
+
}
|
| 250 |
+
.header-text {
|
| 251 |
+
text-align: center;
|
| 252 |
+
padding: 20px;
|
| 253 |
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
| 254 |
+
color: white;
|
| 255 |
+
border-radius: 15px;
|
| 256 |
+
margin-bottom: 20px;
|
| 257 |
+
}
|
| 258 |
+
"""
|
| 259 |
+
) as demo:
|
| 260 |
+
|
| 261 |
+
# Header
|
| 262 |
+
gr.HTML("""
|
| 263 |
+
<div class="header-text">
|
| 264 |
+
<h1 style="font-size: 2.5rem; margin: 0; font-weight: bold;">
|
| 265 |
+
🚀 Teknova Nova AI
|
| 266 |
+
</h1>
|
| 267 |
+
<p style="font-size: 1.2rem; margin: 10px 0; opacity: 0.9;">
|
| 268 |
+
Türkiye'nin Özgün Yapay Zeka Modeli
|
| 269 |
+
</p>
|
| 270 |
+
<div style="background: rgba(255,255,255,0.2); padding: 8px 16px; border-radius: 20px; display: inline-block; font-size: 0.9rem;">
|
| 271 |
+
🧠 Nova AI • 🇹�� Türkçe Optimize • ⚡ ZeroGPU Hızlı
|
| 272 |
+
</div>
|
| 273 |
+
</div>
|
| 274 |
+
""")
|
| 275 |
+
|
| 276 |
+
# Chat interface
|
| 277 |
+
chatbot = gr.Chatbot(
|
| 278 |
+
height=500,
|
| 279 |
+
show_label=False,
|
| 280 |
+
show_share_button=True,
|
| 281 |
+
show_copy_button=True,
|
| 282 |
+
avatar_images=[None, "🤖"],
|
| 283 |
+
bubble_full_width=False
|
| 284 |
+
)
|
| 285 |
+
|
| 286 |
+
with gr.Row():
|
| 287 |
+
msg = gr.Textbox(
|
| 288 |
+
placeholder="Nova AI'ya mesajınızı yazın... (Örn: Merhaba, nasılsın?)",
|
| 289 |
+
show_label=False,
|
| 290 |
+
scale=4,
|
| 291 |
+
container=False
|
| 292 |
+
)
|
| 293 |
+
submit = gr.Button("🚀 Gönder", scale=1, variant="primary")
|
| 294 |
+
|
| 295 |
+
with gr.Row():
|
| 296 |
+
clear = gr.Button("🗑️ Temizle", scale=1)
|
| 297 |
+
retry = gr.Button("🔄 Tekrar Dene", scale=1)
|
| 298 |
+
|
| 299 |
+
# Examples
|
| 300 |
+
gr.Examples(
|
| 301 |
+
examples=[
|
| 302 |
+
"Merhaba Nova AI, nasılsın?",
|
| 303 |
+
"Yapay zeka nedir?",
|
| 304 |
+
"Teknova hakkında bilgi ver",
|
| 305 |
+
"Bana bir hikaye anlat",
|
| 306 |
+
"Python programlama hakkında bilgi ver"
|
| 307 |
+
],
|
| 308 |
+
inputs=msg,
|
| 309 |
+
label="💡 Örnek Sorular"
|
| 310 |
+
)
|
| 311 |
+
|
| 312 |
+
# Footer
|
| 313 |
+
gr.HTML("""
|
| 314 |
+
<div style="text-align: center; padding: 15px; color: #666; font-size: 0.9rem;">
|
| 315 |
+
<p>🌟 <strong>Teknova Nova AI</strong> - Tamamen özgün Türkçe dil modeli</p>
|
| 316 |
+
<p>🚀 ZeroGPU teknolojisi ile hızlandırılmış</p>
|
| 317 |
+
<p style="color: #999;">⚡ Teknova Innovation ile güçlendirilmiştir</p>
|
| 318 |
+
</div>
|
| 319 |
+
""")
|
| 320 |
+
|
| 321 |
+
# Event handlers
|
| 322 |
+
def user_message(message, history):
|
| 323 |
+
return "", history + [[message, None]]
|
| 324 |
+
|
| 325 |
+
@spaces.GPU
|
| 326 |
+
def bot_message(history):
|
| 327 |
+
"""Bot yanıtı oluştur - ZeroGPU destekli"""
|
| 328 |
+
if history and history[-1][1] is None:
|
| 329 |
+
user_msg = history[-1][0]
|
| 330 |
+
bot_response = chat_with_nova(user_msg, history[:-1])
|
| 331 |
+
history[-1][1] = bot_response
|
| 332 |
+
return history
|
| 333 |
+
|
| 334 |
+
@spaces.GPU
|
| 335 |
+
def retry_last(history):
|
| 336 |
+
"""Son mesajı yeniden dene - ZeroGPU destekli"""
|
| 337 |
+
if history and history[-1][1] is not None:
|
| 338 |
+
user_msg = history[-1][0]
|
| 339 |
+
bot_response = chat_with_nova(user_msg, history[:-1])
|
| 340 |
+
history[-1][1] = bot_response
|
| 341 |
+
return history
|
| 342 |
+
|
| 343 |
+
# Event bindings
|
| 344 |
+
msg.submit(user_message, [msg, chatbot], [msg, chatbot], queue=False).then(
|
| 345 |
+
bot_message, chatbot, chatbot
|
| 346 |
+
)
|
| 347 |
+
submit.click(user_message, [msg, chatbot], [msg, chatbot], queue=False).then(
|
| 348 |
+
bot_message, chatbot, chatbot
|
| 349 |
+
)
|
| 350 |
+
clear.click(lambda: None, None, chatbot, queue=False)
|
| 351 |
+
retry.click(retry_last, chatbot, chatbot)
|
| 352 |
+
|
| 353 |
+
# Launch
|
| 354 |
+
if __name__ == "__main__":
|
| 355 |
+
demo.launch(
|
| 356 |
+
server_name="0.0.0.0",
|
| 357 |
+
server_port=7860,
|
| 358 |
+
share=False,
|
| 359 |
+
show_error=True
|
| 360 |
)
|
basit_konsol.py
CHANGED
|
@@ -1,175 +1,175 @@
|
|
| 1 |
-
"""
|
| 2 |
-
🚀 Nova AI - Basit Konsol Uygulaması
|
| 3 |
-
Teknova tarafından geliştirilen özgün yapay zeka modeli
|
| 4 |
-
Hub ve local model desteği
|
| 5 |
-
"""
|
| 6 |
-
|
| 7 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 8 |
-
import torch
|
| 9 |
-
import os
|
| 10 |
-
|
| 11 |
-
# Model seçenekleri
|
| 12 |
-
MODELS = {
|
| 13 |
-
"1": {"name": "Nova AI Hub", "path": "veteroner/NovaAI"},
|
| 14 |
-
"2": {"name": "Local Model", "path": "./nova-ai-model"}
|
| 15 |
-
}
|
| 16 |
-
|
| 17 |
-
def select_model():
|
| 18 |
-
"""Kullanıcıdan model seçimi al"""
|
| 19 |
-
print("\n📋 Model Seçimi:")
|
| 20 |
-
for key, value in MODELS.items():
|
| 21 |
-
if value["path"].startswith("./"):
|
| 22 |
-
status = "✅" if os.path.exists(value["path"]) else "❌"
|
| 23 |
-
else:
|
| 24 |
-
status = "🌐" # Hub modeli
|
| 25 |
-
print(f"{key}. {value['name']} {status}")
|
| 26 |
-
|
| 27 |
-
while True:
|
| 28 |
-
choice = input("\nModel seçin (1 veya 2): ").strip()
|
| 29 |
-
if choice in MODELS:
|
| 30 |
-
return MODELS[choice]["path"], MODELS[choice]["name"]
|
| 31 |
-
print("❌ Geçersiz seçim! 1 veya 2 yazın.")
|
| 32 |
-
|
| 33 |
-
def load_model(model_path, model_name):
|
| 34 |
-
"""Seçilen modeli yükle"""
|
| 35 |
-
print(f"\n🚀 {model_name} yükleniyor...")
|
| 36 |
-
|
| 37 |
-
# Local model kontrolü
|
| 38 |
-
if model_path.startswith("./") and not os.path.exists(model_path):
|
| 39 |
-
print(f"❌ Local model bulunamadı: {model_path}")
|
| 40 |
-
return None, None
|
| 41 |
-
|
| 42 |
-
try:
|
| 43 |
-
# Tokenizer yükle
|
| 44 |
-
tokenizer = AutoTokenizer.from_pretrained(
|
| 45 |
-
model_path,
|
| 46 |
-
trust_remote_code=True
|
| 47 |
-
)
|
| 48 |
-
|
| 49 |
-
# Model yükleme ayarları
|
| 50 |
-
load_kwargs = {
|
| 51 |
-
"torch_dtype": torch.float16,
|
| 52 |
-
"trust_remote_code": True
|
| 53 |
-
}
|
| 54 |
-
|
| 55 |
-
# GPU kontrolü
|
| 56 |
-
if torch.cuda.is_available():
|
| 57 |
-
print("🎮 GPU tespit edildi, GPU kullanılacak")
|
| 58 |
-
load_kwargs["device_map"] = "auto"
|
| 59 |
-
else:
|
| 60 |
-
print("💻 CPU kullanılacak")
|
| 61 |
-
load_kwargs["device_map"] = None
|
| 62 |
-
|
| 63 |
-
# Model yükle
|
| 64 |
-
model = AutoModelForCausalLM.from_pretrained(
|
| 65 |
-
model_path,
|
| 66 |
-
**load_kwargs
|
| 67 |
-
)
|
| 68 |
-
|
| 69 |
-
print(f"✅ {model_name} başarıyla yüklendi!")
|
| 70 |
-
return model, tokenizer
|
| 71 |
-
|
| 72 |
-
except Exception as e:
|
| 73 |
-
print(f"❌ Model yükleme hatası: {e}")
|
| 74 |
-
return None, None
|
| 75 |
-
|
| 76 |
-
def chat_with_nova(message, model, tokenizer, max_tokens=256):
|
| 77 |
-
"""Nova AI ile sohbet et"""
|
| 78 |
-
try:
|
| 79 |
-
# Konuşma formatı
|
| 80 |
-
conversation = f"Kullanıcı: {message}\nNova AI:"
|
| 81 |
-
|
| 82 |
-
# Tokenize
|
| 83 |
-
inputs = tokenizer(
|
| 84 |
-
conversation,
|
| 85 |
-
return_tensors="pt",
|
| 86 |
-
truncation=True,
|
| 87 |
-
max_length=1024
|
| 88 |
-
)
|
| 89 |
-
|
| 90 |
-
# GPU'ya taşı (eğer varsa)
|
| 91 |
-
if model.device.type != 'cpu':
|
| 92 |
-
inputs = inputs.to(model.device)
|
| 93 |
-
|
| 94 |
-
# Yanıt üret
|
| 95 |
-
with torch.no_grad():
|
| 96 |
-
outputs = model.generate(
|
| 97 |
-
**inputs,
|
| 98 |
-
max_new_tokens=max_tokens,
|
| 99 |
-
temperature=0.7,
|
| 100 |
-
top_p=0.9,
|
| 101 |
-
do_sample=True,
|
| 102 |
-
pad_token_id=tokenizer.eos_token_id,
|
| 103 |
-
eos_token_id=tokenizer.eos_token_id
|
| 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: {e}"
|
| 114 |
-
|
| 115 |
-
def main():
|
| 116 |
-
"""Ana uygulama"""
|
| 117 |
-
print("=" * 50)
|
| 118 |
-
print("🚀 NOVA AI - BASİT KONSOL UYGULAMASI")
|
| 119 |
-
print("🌟 Teknova Özgün Yapay Zeka Modeli")
|
| 120 |
-
print("=" * 50)
|
| 121 |
-
|
| 122 |
-
# Model seçimi
|
| 123 |
-
model_path, model_name = select_model()
|
| 124 |
-
|
| 125 |
-
# Modeli yükle
|
| 126 |
-
model, tokenizer = load_model(model_path, model_name)
|
| 127 |
-
|
| 128 |
-
if model is None or tokenizer is None:
|
| 129 |
-
print("❌ Program sonlandırılıyor.")
|
| 130 |
-
return
|
| 131 |
-
|
| 132 |
-
print(f"\n🎉 {model_name} ile sohbet hazır!")
|
| 133 |
-
print("💬 Komutlar:")
|
| 134 |
-
print(" - Mesaj yazarak sohbet edin")
|
| 135 |
-
print(" - 'exit' yazarak çıkın")
|
| 136 |
-
print(" - 'model' yazarak model değiştirin")
|
| 137 |
-
print("-" * 50)
|
| 138 |
-
|
| 139 |
-
while True:
|
| 140 |
-
try:
|
| 141 |
-
user_input = input("\n👤 Siz: ").strip()
|
| 142 |
-
|
| 143 |
-
# Çıkış komutları
|
| 144 |
-
if user_input.lower() in ['exit', 'çıkış', 'quit', 'q']:
|
| 145 |
-
print("\n🚀 Nova AI - Görüşmek üzere!")
|
| 146 |
-
break
|
| 147 |
-
|
| 148 |
-
# Model değiştirme
|
| 149 |
-
if user_input.lower() == 'model':
|
| 150 |
-
print("\n🔄 Model değiştiriliyor...")
|
| 151 |
-
model_path, model_name = select_model()
|
| 152 |
-
model, tokenizer = load_model(model_path, model_name)
|
| 153 |
-
if model is None:
|
| 154 |
-
continue
|
| 155 |
-
print(f"✅ {model_name} aktif!")
|
| 156 |
-
continue
|
| 157 |
-
|
| 158 |
-
# Boş mesaj kontrolü
|
| 159 |
-
if not user_input:
|
| 160 |
-
print("🤖 Nova AI: Lütfen bir mesaj yazın.")
|
| 161 |
-
continue
|
| 162 |
-
|
| 163 |
-
# Nova AI'dan yanıt al
|
| 164 |
-
print("🤖 Nova AI düşünüyor...")
|
| 165 |
-
response = chat_with_nova(user_input, model, tokenizer)
|
| 166 |
-
print(f"🤖 Nova AI: {response}")
|
| 167 |
-
|
| 168 |
-
except KeyboardInterrupt:
|
| 169 |
-
print("\n\n🚀 Nova AI - Program sonlandırıldı!")
|
| 170 |
-
break
|
| 171 |
-
except Exception as e:
|
| 172 |
-
print(f"❌ Beklenmeyen hata: {e}")
|
| 173 |
-
|
| 174 |
-
if __name__ == "__main__":
|
| 175 |
main()
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
🚀 Nova AI - Basit Konsol Uygulaması
|
| 3 |
+
Teknova tarafından geliştirilen özgün yapay zeka modeli
|
| 4 |
+
Hub ve local model desteği
|
| 5 |
+
"""
|
| 6 |
+
|
| 7 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 8 |
+
import torch
|
| 9 |
+
import os
|
| 10 |
+
|
| 11 |
+
# Model seçenekleri
|
| 12 |
+
MODELS = {
|
| 13 |
+
"1": {"name": "Nova AI Hub", "path": "veteroner/NovaAI"},
|
| 14 |
+
"2": {"name": "Local Model", "path": "./nova-ai-model"}
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
def select_model():
|
| 18 |
+
"""Kullanıcıdan model seçimi al"""
|
| 19 |
+
print("\n📋 Model Seçimi:")
|
| 20 |
+
for key, value in MODELS.items():
|
| 21 |
+
if value["path"].startswith("./"):
|
| 22 |
+
status = "✅" if os.path.exists(value["path"]) else "❌"
|
| 23 |
+
else:
|
| 24 |
+
status = "🌐" # Hub modeli
|
| 25 |
+
print(f"{key}. {value['name']} {status}")
|
| 26 |
+
|
| 27 |
+
while True:
|
| 28 |
+
choice = input("\nModel seçin (1 veya 2): ").strip()
|
| 29 |
+
if choice in MODELS:
|
| 30 |
+
return MODELS[choice]["path"], MODELS[choice]["name"]
|
| 31 |
+
print("❌ Geçersiz seçim! 1 veya 2 yazın.")
|
| 32 |
+
|
| 33 |
+
def load_model(model_path, model_name):
|
| 34 |
+
"""Seçilen modeli yükle"""
|
| 35 |
+
print(f"\n🚀 {model_name} yükleniyor...")
|
| 36 |
+
|
| 37 |
+
# Local model kontrolü
|
| 38 |
+
if model_path.startswith("./") and not os.path.exists(model_path):
|
| 39 |
+
print(f"❌ Local model bulunamadı: {model_path}")
|
| 40 |
+
return None, None
|
| 41 |
+
|
| 42 |
+
try:
|
| 43 |
+
# Tokenizer yükle
|
| 44 |
+
tokenizer = AutoTokenizer.from_pretrained(
|
| 45 |
+
model_path,
|
| 46 |
+
trust_remote_code=True
|
| 47 |
+
)
|
| 48 |
+
|
| 49 |
+
# Model yükleme ayarları
|
| 50 |
+
load_kwargs = {
|
| 51 |
+
"torch_dtype": torch.float16,
|
| 52 |
+
"trust_remote_code": True
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
# GPU kontrolü
|
| 56 |
+
if torch.cuda.is_available():
|
| 57 |
+
print("🎮 GPU tespit edildi, GPU kullanılacak")
|
| 58 |
+
load_kwargs["device_map"] = "auto"
|
| 59 |
+
else:
|
| 60 |
+
print("💻 CPU kullanılacak")
|
| 61 |
+
load_kwargs["device_map"] = None
|
| 62 |
+
|
| 63 |
+
# Model yükle
|
| 64 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 65 |
+
model_path,
|
| 66 |
+
**load_kwargs
|
| 67 |
+
)
|
| 68 |
+
|
| 69 |
+
print(f"✅ {model_name} başarıyla yüklendi!")
|
| 70 |
+
return model, tokenizer
|
| 71 |
+
|
| 72 |
+
except Exception as e:
|
| 73 |
+
print(f"❌ Model yükleme hatası: {e}")
|
| 74 |
+
return None, None
|
| 75 |
+
|
| 76 |
+
def chat_with_nova(message, model, tokenizer, max_tokens=256):
|
| 77 |
+
"""Nova AI ile sohbet et"""
|
| 78 |
+
try:
|
| 79 |
+
# Konuşma formatı
|
| 80 |
+
conversation = f"Kullanıcı: {message}\nNova AI:"
|
| 81 |
+
|
| 82 |
+
# Tokenize
|
| 83 |
+
inputs = tokenizer(
|
| 84 |
+
conversation,
|
| 85 |
+
return_tensors="pt",
|
| 86 |
+
truncation=True,
|
| 87 |
+
max_length=1024
|
| 88 |
+
)
|
| 89 |
+
|
| 90 |
+
# GPU'ya taşı (eğer varsa)
|
| 91 |
+
if model.device.type != 'cpu':
|
| 92 |
+
inputs = inputs.to(model.device)
|
| 93 |
+
|
| 94 |
+
# Yanıt üret
|
| 95 |
+
with torch.no_grad():
|
| 96 |
+
outputs = model.generate(
|
| 97 |
+
**inputs,
|
| 98 |
+
max_new_tokens=max_tokens,
|
| 99 |
+
temperature=0.7,
|
| 100 |
+
top_p=0.9,
|
| 101 |
+
do_sample=True,
|
| 102 |
+
pad_token_id=tokenizer.eos_token_id,
|
| 103 |
+
eos_token_id=tokenizer.eos_token_id
|
| 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: {e}"
|
| 114 |
+
|
| 115 |
+
def main():
|
| 116 |
+
"""Ana uygulama"""
|
| 117 |
+
print("=" * 50)
|
| 118 |
+
print("🚀 NOVA AI - BASİT KONSOL UYGULAMASI")
|
| 119 |
+
print("🌟 Teknova Özgün Yapay Zeka Modeli")
|
| 120 |
+
print("=" * 50)
|
| 121 |
+
|
| 122 |
+
# Model seçimi
|
| 123 |
+
model_path, model_name = select_model()
|
| 124 |
+
|
| 125 |
+
# Modeli yükle
|
| 126 |
+
model, tokenizer = load_model(model_path, model_name)
|
| 127 |
+
|
| 128 |
+
if model is None or tokenizer is None:
|
| 129 |
+
print("❌ Program sonlandırılıyor.")
|
| 130 |
+
return
|
| 131 |
+
|
| 132 |
+
print(f"\n🎉 {model_name} ile sohbet hazır!")
|
| 133 |
+
print("💬 Komutlar:")
|
| 134 |
+
print(" - Mesaj yazarak sohbet edin")
|
| 135 |
+
print(" - 'exit' yazarak çıkın")
|
| 136 |
+
print(" - 'model' yazarak model değiştirin")
|
| 137 |
+
print("-" * 50)
|
| 138 |
+
|
| 139 |
+
while True:
|
| 140 |
+
try:
|
| 141 |
+
user_input = input("\n👤 Siz: ").strip()
|
| 142 |
+
|
| 143 |
+
# Çıkış komutları
|
| 144 |
+
if user_input.lower() in ['exit', 'çıkış', 'quit', 'q']:
|
| 145 |
+
print("\n🚀 Nova AI - Görüşmek üzere!")
|
| 146 |
+
break
|
| 147 |
+
|
| 148 |
+
# Model değiştirme
|
| 149 |
+
if user_input.lower() == 'model':
|
| 150 |
+
print("\n🔄 Model değiştiriliyor...")
|
| 151 |
+
model_path, model_name = select_model()
|
| 152 |
+
model, tokenizer = load_model(model_path, model_name)
|
| 153 |
+
if model is None:
|
| 154 |
+
continue
|
| 155 |
+
print(f"✅ {model_name} aktif!")
|
| 156 |
+
continue
|
| 157 |
+
|
| 158 |
+
# Boş mesaj kontrolü
|
| 159 |
+
if not user_input:
|
| 160 |
+
print("🤖 Nova AI: Lütfen bir mesaj yazın.")
|
| 161 |
+
continue
|
| 162 |
+
|
| 163 |
+
# Nova AI'dan yanıt al
|
| 164 |
+
print("🤖 Nova AI düşünüyor...")
|
| 165 |
+
response = chat_with_nova(user_input, model, tokenizer)
|
| 166 |
+
print(f"🤖 Nova AI: {response}")
|
| 167 |
+
|
| 168 |
+
except KeyboardInterrupt:
|
| 169 |
+
print("\n\n🚀 Nova AI - Program sonlandırıldı!")
|
| 170 |
+
break
|
| 171 |
+
except Exception as e:
|
| 172 |
+
print(f"❌ Beklenmeyen hata: {e}")
|
| 173 |
+
|
| 174 |
+
if __name__ == "__main__":
|
| 175 |
main()
|
baslat_api.bat
CHANGED
|
@@ -1,34 +1,34 @@
|
|
| 1 |
-
@echo off
|
| 2 |
-
chcp 65001 >nul
|
| 3 |
-
title Teknova Nova AI - Web Arayüzü
|
| 4 |
-
echo.
|
| 5 |
-
echo 🚀 ================================
|
| 6 |
-
echo TEKNOVA NOVA AI WEB ARAYÜZÜ
|
| 7 |
-
echo Özgün yapay zeka teknolojisi
|
| 8 |
-
echo ================================
|
| 9 |
-
echo.
|
| 10 |
-
echo 🌟 Bu tamamen özgün bir Teknova Nova AI modelidir!
|
| 11 |
-
echo 💡 Hugging Face token gerektirmez - Kendi modeliniz!
|
| 12 |
-
echo ⚡ Web arayüzü başlatılıyor...
|
| 13 |
-
echo.
|
| 14 |
-
echo 📂 Model konumu kontrol ediliyor:
|
| 15 |
-
if exist "nova-ai-model" (
|
| 16 |
-
echo ✅ Nova AI model dosyaları bulundu
|
| 17 |
-
) else (
|
| 18 |
-
echo ⚠️ Nova AI model dosyaları bulunamadı
|
| 19 |
-
echo 📝 Lütfen nova-ai-model klasörünüze model dosyalarınızı yükleyin
|
| 20 |
-
echo.
|
| 21 |
-
)
|
| 22 |
-
echo.
|
| 23 |
-
echo 🌐 Web arayüzü başlatılıyor...
|
| 24 |
-
echo 💻 Tarayıcınızda açılacak adres: http://localhost:8000
|
| 25 |
-
echo.
|
| 26 |
-
echo ⏹️ Durdurmak için Ctrl+C tuşlayın
|
| 27 |
-
echo.
|
| 28 |
-
|
| 29 |
-
python app.py
|
| 30 |
-
|
| 31 |
-
echo.
|
| 32 |
-
echo 🚀 Teknova Nova AI - Web arayüzü kapatıldı
|
| 33 |
-
echo 💡 Tekrar çalıştırmak için bu dosyayı çalıştırın
|
| 34 |
-
pause
|
|
|
|
| 1 |
+
@echo off
|
| 2 |
+
chcp 65001 >nul
|
| 3 |
+
title Teknova Nova AI - Web Arayüzü
|
| 4 |
+
echo.
|
| 5 |
+
echo 🚀 ================================
|
| 6 |
+
echo TEKNOVA NOVA AI WEB ARAYÜZÜ
|
| 7 |
+
echo Özgün yapay zeka teknolojisi
|
| 8 |
+
echo ================================
|
| 9 |
+
echo.
|
| 10 |
+
echo 🌟 Bu tamamen özgün bir Teknova Nova AI modelidir!
|
| 11 |
+
echo 💡 Hugging Face token gerektirmez - Kendi modeliniz!
|
| 12 |
+
echo ⚡ Web arayüzü başlatılıyor...
|
| 13 |
+
echo.
|
| 14 |
+
echo 📂 Model konumu kontrol ediliyor:
|
| 15 |
+
if exist "nova-ai-model" (
|
| 16 |
+
echo ✅ Nova AI model dosyaları bulundu
|
| 17 |
+
) else (
|
| 18 |
+
echo ⚠️ Nova AI model dosyaları bulunamadı
|
| 19 |
+
echo 📝 Lütfen nova-ai-model klasörünüze model dosyalarınızı yükleyin
|
| 20 |
+
echo.
|
| 21 |
+
)
|
| 22 |
+
echo.
|
| 23 |
+
echo 🌐 Web arayüzü başlatılıyor...
|
| 24 |
+
echo 💻 Tarayıcınızda açılacak adres: http://localhost:8000
|
| 25 |
+
echo.
|
| 26 |
+
echo ⏹️ Durdurmak için Ctrl+C tuşlayın
|
| 27 |
+
echo.
|
| 28 |
+
|
| 29 |
+
python app.py
|
| 30 |
+
|
| 31 |
+
echo.
|
| 32 |
+
echo 🚀 Teknova Nova AI - Web arayüzü kapatıldı
|
| 33 |
+
echo 💡 Tekrar çalıştırmak için bu dosyayı çalıştırın
|
| 34 |
+
pause
|
baslat_basit_konsol.bat
CHANGED
|
@@ -1,50 +1,50 @@
|
|
| 1 |
-
@echo off
|
| 2 |
-
chcp 65001 >nul
|
| 3 |
-
|
| 4 |
-
:: Teknova Nova AI - Basit Konsol Uygulaması Başlatma Betiği
|
| 5 |
-
|
| 6 |
-
title Teknova Nova AI - Basit Konsol
|
| 7 |
-
|
| 8 |
-
echo.
|
| 9 |
-
echo 🚀 =======================================
|
| 10 |
-
echo TEKNOVA NOVA AI BASİT KONSOL
|
| 11 |
-
echo Özgün yapay zeka teknolojisi
|
| 12 |
-
echo =======================================
|
| 13 |
-
echo.
|
| 14 |
-
echo 🌟 Bu tamamen özgün bir Teknova Nova AI modelidir!
|
| 15 |
-
echo 💡 Hugging Face token gerektirmez - Kendi modeliniz!
|
| 16 |
-
echo ⚡ Basit konsol uygulaması başlatılıyor...
|
| 17 |
-
echo.
|
| 18 |
-
|
| 19 |
-
:: Model klasörleri kontrolü
|
| 20 |
-
echo 📂 Model konumu kontrol ediliyor:
|
| 21 |
-
if exist "nova-ai-model" (
|
| 22 |
-
echo ✅ Büyük model dosyaları bulundu (nova-ai-model)
|
| 23 |
-
) else (
|
| 24 |
-
echo ⚠️ Büyük model dosyaları bulunamadı (nova-ai-model)
|
| 25 |
-
)
|
| 26 |
-
|
| 27 |
-
echo 🌐 Hub modeli de desteklenmektedir (veteroner/NovaAI)
|
| 28 |
-
|
| 29 |
-
echo.
|
| 30 |
-
echo 💬 Basit konsol uygulaması başlatılıyor...
|
| 31 |
-
echo 🎯 Model seçimi yapabilir, sohbet edebilirsiniz
|
| 32 |
-
echo ⏹️ Çıkmak için 'exit' yazın
|
| 33 |
-
|
| 34 |
-
echo.
|
| 35 |
-
|
| 36 |
-
:: ================== Sanal ortam kontrolü ==================
|
| 37 |
-
if exist "venv311\Scripts\python.exe" (
|
| 38 |
-
echo 🐍 Sanal ortam bulundu: venv311
|
| 39 |
-
set "PY_EXE=venv311\Scripts\python.exe"
|
| 40 |
-
) else (
|
| 41 |
-
echo ⚠️ venv311 bulunamadı, sistem Python kullanılacak
|
| 42 |
-
set "PY_EXE=python"
|
| 43 |
-
)
|
| 44 |
-
|
| 45 |
-
%PY_EXE% basit_konsol.py
|
| 46 |
-
|
| 47 |
-
echo.
|
| 48 |
-
echo 🚀 Teknova Nova AI - Basit konsol uygulaması kapatıldı
|
| 49 |
-
echo 💡 Tekrar çalıştırmak için bu dosyayı çalıştırın
|
| 50 |
pause
|
|
|
|
| 1 |
+
@echo off
|
| 2 |
+
chcp 65001 >nul
|
| 3 |
+
|
| 4 |
+
:: Teknova Nova AI - Basit Konsol Uygulaması Başlatma Betiği
|
| 5 |
+
|
| 6 |
+
title Teknova Nova AI - Basit Konsol
|
| 7 |
+
|
| 8 |
+
echo.
|
| 9 |
+
echo 🚀 =======================================
|
| 10 |
+
echo TEKNOVA NOVA AI BASİT KONSOL
|
| 11 |
+
echo Özgün yapay zeka teknolojisi
|
| 12 |
+
echo =======================================
|
| 13 |
+
echo.
|
| 14 |
+
echo 🌟 Bu tamamen özgün bir Teknova Nova AI modelidir!
|
| 15 |
+
echo 💡 Hugging Face token gerektirmez - Kendi modeliniz!
|
| 16 |
+
echo ⚡ Basit konsol uygulaması başlatılıyor...
|
| 17 |
+
echo.
|
| 18 |
+
|
| 19 |
+
:: Model klasörleri kontrolü
|
| 20 |
+
echo 📂 Model konumu kontrol ediliyor:
|
| 21 |
+
if exist "nova-ai-model" (
|
| 22 |
+
echo ✅ Büyük model dosyaları bulundu (nova-ai-model)
|
| 23 |
+
) else (
|
| 24 |
+
echo ⚠️ Büyük model dosyaları bulunamadı (nova-ai-model)
|
| 25 |
+
)
|
| 26 |
+
|
| 27 |
+
echo 🌐 Hub modeli de desteklenmektedir (veteroner/NovaAI)
|
| 28 |
+
|
| 29 |
+
echo.
|
| 30 |
+
echo 💬 Basit konsol uygulaması başlatılıyor...
|
| 31 |
+
echo 🎯 Model seçimi yapabilir, sohbet edebilirsiniz
|
| 32 |
+
echo ⏹️ Çıkmak için 'exit' yazın
|
| 33 |
+
|
| 34 |
+
echo.
|
| 35 |
+
|
| 36 |
+
:: ================== Sanal ortam kontrolü ==================
|
| 37 |
+
if exist "venv311\Scripts\python.exe" (
|
| 38 |
+
echo 🐍 Sanal ortam bulundu: venv311
|
| 39 |
+
set "PY_EXE=venv311\Scripts\python.exe"
|
| 40 |
+
) else (
|
| 41 |
+
echo ⚠️ venv311 bulunamadı, sistem Python kullanılacak
|
| 42 |
+
set "PY_EXE=python"
|
| 43 |
+
)
|
| 44 |
+
|
| 45 |
+
%PY_EXE% basit_konsol.py
|
| 46 |
+
|
| 47 |
+
echo.
|
| 48 |
+
echo 🚀 Teknova Nova AI - Basit konsol uygulaması kapatıldı
|
| 49 |
+
echo 💡 Tekrar çalıştırmak için bu dosyayı çalıştırın
|
| 50 |
pause
|
baslat_gradio.bat
CHANGED
|
@@ -1,51 +1,51 @@
|
|
| 1 |
-
@echo off
|
| 2 |
-
chcp 65001 >nul
|
| 3 |
-
|
| 4 |
-
:: Teknova Nova AI - Gradio Arayüzü Başlatma Betiği
|
| 5 |
-
|
| 6 |
-
title Teknova Nova AI - Gradio Arayüzü
|
| 7 |
-
|
| 8 |
-
echo.
|
| 9 |
-
echo 🚀 =======================================
|
| 10 |
-
echo TEKNOVA NOVA AI GRADIO ARAYÜZÜ
|
| 11 |
-
echo Özgün yapay zeka teknolojisi
|
| 12 |
-
echo =======================================
|
| 13 |
-
echo.
|
| 14 |
-
echo 🌟 Bu tamamen özgün bir Teknova Nova AI modelidir!
|
| 15 |
-
echo 💡 Hugging Face token gerektirmez - Kendi modeliniz!
|
| 16 |
-
echo ⚡ Gradio arayüzü başlatılıyor...
|
| 17 |
-
echo.
|
| 18 |
-
|
| 19 |
-
:: Model klasörleri kontrolü
|
| 20 |
-
echo 📂 Model konumu kontrol ediliyor:
|
| 21 |
-
if exist "nova-ai-model" (
|
| 22 |
-
echo ✅ Büyük model dosyaları bulundu (nova-ai-model)
|
| 23 |
-
) else (
|
| 24 |
-
echo ⚠️ Büyük model dosyaları bulunamadı (nova-ai-model)
|
| 25 |
-
)
|
| 26 |
-
|
| 27 |
-
echo 🌐 Hub modeli de desteklenmektedir (veteroner/NovaAI)
|
| 28 |
-
|
| 29 |
-
echo.
|
| 30 |
-
echo 🌐 Gradio arayüzü başlatılıyor...
|
| 31 |
-
echo 💻 Tarayıcınızda açılacak adres: http://localhost:7860
|
| 32 |
-
|
| 33 |
-
echo ⏹️ Durdurmak için Ctrl+C tuşlayın
|
| 34 |
-
|
| 35 |
-
echo.
|
| 36 |
-
|
| 37 |
-
:: ================== Sanal ortam kontrolü ==================
|
| 38 |
-
if exist "venv311\Scripts\python.exe" (
|
| 39 |
-
echo 🐍 Sanal ortam bulundu: venv311
|
| 40 |
-
set "PY_EXE=venv311\Scripts\python.exe"
|
| 41 |
-
) else (
|
| 42 |
-
echo ⚠️ venv311 bulunamadı, sistem Python kullanılacak
|
| 43 |
-
set "PY_EXE=python"
|
| 44 |
-
)
|
| 45 |
-
|
| 46 |
-
%PY_EXE% gradio_app.py
|
| 47 |
-
|
| 48 |
-
echo.
|
| 49 |
-
echo 🚀 Teknova Nova AI - Gradio arayüzü kapatıldı
|
| 50 |
-
echo 💡 Tekrar çalıştırmak için bu dosyayı çalıştırın
|
| 51 |
pause
|
|
|
|
| 1 |
+
@echo off
|
| 2 |
+
chcp 65001 >nul
|
| 3 |
+
|
| 4 |
+
:: Teknova Nova AI - Gradio Arayüzü Başlatma Betiği
|
| 5 |
+
|
| 6 |
+
title Teknova Nova AI - Gradio Arayüzü
|
| 7 |
+
|
| 8 |
+
echo.
|
| 9 |
+
echo 🚀 =======================================
|
| 10 |
+
echo TEKNOVA NOVA AI GRADIO ARAYÜZÜ
|
| 11 |
+
echo Özgün yapay zeka teknolojisi
|
| 12 |
+
echo =======================================
|
| 13 |
+
echo.
|
| 14 |
+
echo 🌟 Bu tamamen özgün bir Teknova Nova AI modelidir!
|
| 15 |
+
echo 💡 Hugging Face token gerektirmez - Kendi modeliniz!
|
| 16 |
+
echo ⚡ Gradio arayüzü başlatılıyor...
|
| 17 |
+
echo.
|
| 18 |
+
|
| 19 |
+
:: Model klasörleri kontrolü
|
| 20 |
+
echo 📂 Model konumu kontrol ediliyor:
|
| 21 |
+
if exist "nova-ai-model" (
|
| 22 |
+
echo ✅ Büyük model dosyaları bulundu (nova-ai-model)
|
| 23 |
+
) else (
|
| 24 |
+
echo ⚠️ Büyük model dosyaları bulunamadı (nova-ai-model)
|
| 25 |
+
)
|
| 26 |
+
|
| 27 |
+
echo 🌐 Hub modeli de desteklenmektedir (veteroner/NovaAI)
|
| 28 |
+
|
| 29 |
+
echo.
|
| 30 |
+
echo 🌐 Gradio arayüzü başlatılıyor...
|
| 31 |
+
echo 💻 Tarayıcınızda açılacak adres: http://localhost:7860
|
| 32 |
+
|
| 33 |
+
echo ⏹️ Durdurmak için Ctrl+C tuşlayın
|
| 34 |
+
|
| 35 |
+
echo.
|
| 36 |
+
|
| 37 |
+
:: ================== Sanal ortam kontrolü ==================
|
| 38 |
+
if exist "venv311\Scripts\python.exe" (
|
| 39 |
+
echo 🐍 Sanal ortam bulundu: venv311
|
| 40 |
+
set "PY_EXE=venv311\Scripts\python.exe"
|
| 41 |
+
) else (
|
| 42 |
+
echo ⚠️ venv311 bulunamadı, sistem Python kullanılacak
|
| 43 |
+
set "PY_EXE=python"
|
| 44 |
+
)
|
| 45 |
+
|
| 46 |
+
%PY_EXE% gradio_app.py
|
| 47 |
+
|
| 48 |
+
echo.
|
| 49 |
+
echo 🚀 Teknova Nova AI - Gradio arayüzü kapatıldı
|
| 50 |
+
echo 💡 Tekrar çalıştırmak için bu dosyayı çalıştırın
|
| 51 |
pause
|
baslat_konsol.bat
CHANGED
|
@@ -1,33 +1,33 @@
|
|
| 1 |
-
@echo off
|
| 2 |
-
chcp 65001 >nul
|
| 3 |
-
title Teknova Nova AI - Konsol Uygulaması
|
| 4 |
-
echo.
|
| 5 |
-
echo 🚀 ===================================
|
| 6 |
-
echo TEKNOVA NOVA AI KONSOL UYGULAMASI
|
| 7 |
-
echo Özgün yapay zeka teknolojisi
|
| 8 |
-
echo ===================================
|
| 9 |
-
echo.
|
| 10 |
-
echo 🌟 Bu tamamen özgün bir Teknova Nova AI modelidir!
|
| 11 |
-
echo 💡 Hugging Face token gerektirmez - Kendi modeliniz!
|
| 12 |
-
echo 🖥️ Konsol uygulaması başlatılıyor...
|
| 13 |
-
echo.
|
| 14 |
-
echo 📂 Model konumu kontrol ediliyor:
|
| 15 |
-
if exist "nova-ai-model" (
|
| 16 |
-
echo ✅ Nova AI model dosyaları bulundu
|
| 17 |
-
) else (
|
| 18 |
-
echo ⚠️ Nova AI model dosyaları bulunamadı
|
| 19 |
-
echo 📝 Lütfen nova-ai-model klasörünüze model dosyalarınızı yükleyin
|
| 20 |
-
echo.
|
| 21 |
-
)
|
| 22 |
-
echo.
|
| 23 |
-
echo 💬 Nova AI ile sohbet başlatılıyor...
|
| 24 |
-
echo 🔤 Mesajınızı yazıp Enter tuşuna basın
|
| 25 |
-
echo ⏹️ Çıkmak için 'exit' yazın
|
| 26 |
-
echo.
|
| 27 |
-
|
| 28 |
-
python main.py
|
| 29 |
-
|
| 30 |
-
echo.
|
| 31 |
-
echo 🚀 Teknova Nova AI - Konsol uygulaması kapatıldı
|
| 32 |
-
echo 💡 Tekrar çalıştırmak için bu dosyayı çalıştırın
|
| 33 |
pause
|
|
|
|
| 1 |
+
@echo off
|
| 2 |
+
chcp 65001 >nul
|
| 3 |
+
title Teknova Nova AI - Konsol Uygulaması
|
| 4 |
+
echo.
|
| 5 |
+
echo 🚀 ===================================
|
| 6 |
+
echo TEKNOVA NOVA AI KONSOL UYGULAMASI
|
| 7 |
+
echo Özgün yapay zeka teknolojisi
|
| 8 |
+
echo ===================================
|
| 9 |
+
echo.
|
| 10 |
+
echo 🌟 Bu tamamen özgün bir Teknova Nova AI modelidir!
|
| 11 |
+
echo 💡 Hugging Face token gerektirmez - Kendi modeliniz!
|
| 12 |
+
echo 🖥️ Konsol uygulaması başlatılıyor...
|
| 13 |
+
echo.
|
| 14 |
+
echo 📂 Model konumu kontrol ediliyor:
|
| 15 |
+
if exist "nova-ai-model" (
|
| 16 |
+
echo ✅ Nova AI model dosyaları bulundu
|
| 17 |
+
) else (
|
| 18 |
+
echo ⚠️ Nova AI model dosyaları bulunamadı
|
| 19 |
+
echo 📝 Lütfen nova-ai-model klasörünüze model dosyalarınızı yükleyin
|
| 20 |
+
echo.
|
| 21 |
+
)
|
| 22 |
+
echo.
|
| 23 |
+
echo 💬 Nova AI ile sohbet başlatılıyor...
|
| 24 |
+
echo 🔤 Mesajınızı yazıp Enter tuşuna basın
|
| 25 |
+
echo ⏹️ Çıkmak için 'exit' yazın
|
| 26 |
+
echo.
|
| 27 |
+
|
| 28 |
+
python main.py
|
| 29 |
+
|
| 30 |
+
echo.
|
| 31 |
+
echo 🚀 Teknova Nova AI - Konsol uygulaması kapatıldı
|
| 32 |
+
echo 💡 Tekrar çalıştırmak için bu dosyayı çalıştırın
|
| 33 |
pause
|
gradio_app.py
CHANGED
|
@@ -1,219 +1,219 @@
|
|
| 1 |
-
import gradio as gr
|
| 2 |
-
import torch
|
| 3 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 4 |
-
import os
|
| 5 |
-
|
| 6 |
-
# Spaces import - sadece Hugging Face Spaces'te mevcut
|
| 7 |
-
try:
|
| 8 |
-
import spaces
|
| 9 |
-
HAS_SPACES = True
|
| 10 |
-
except ImportError:
|
| 11 |
-
HAS_SPACES = False
|
| 12 |
-
# Spaces decorator'ı için dummy fonksiyon
|
| 13 |
-
def spaces_gpu(func):
|
| 14 |
-
return func
|
| 15 |
-
spaces = type('spaces', (), {'GPU': spaces_gpu})()
|
| 16 |
-
|
| 17 |
-
# ================== Nova AI Modeli ==================
|
| 18 |
-
# Sabit model: veteroner/NovaAI Hub'dan yüklenir
|
| 19 |
-
|
| 20 |
-
# Global değişkenler
|
| 21 |
-
model = None
|
| 22 |
-
tokenizer = None
|
| 23 |
-
|
| 24 |
-
@spaces.GPU
|
| 25 |
-
def load_model():
|
| 26 |
-
"""Teknova Nova AI modelini yükle - ZeroGPU destekli."""
|
| 27 |
-
global model, tokenizer
|
| 28 |
-
|
| 29 |
-
model_path = "nova-ai-model"
|
| 30 |
-
print(f"🚀 Nova AI modeli yükleniyor... ({model_path})")
|
| 31 |
-
|
| 32 |
-
try:
|
| 33 |
-
# Tokenizer yükle
|
| 34 |
-
tokenizer = AutoTokenizer.from_pretrained(
|
| 35 |
-
model_path,
|
| 36 |
-
trust_remote_code=True,
|
| 37 |
-
use_fast=True
|
| 38 |
-
)
|
| 39 |
-
|
| 40 |
-
# Pad token ayarla
|
| 41 |
-
if tokenizer.pad_token is None:
|
| 42 |
-
tokenizer.pad_token = tokenizer.eos_token
|
| 43 |
-
|
| 44 |
-
# Model yükle - ZeroGPU optimizasyonu
|
| 45 |
-
model = AutoModelForCausalLM.from_pretrained(
|
| 46 |
-
model_path,
|
| 47 |
-
torch_dtype=torch.float16,
|
| 48 |
-
trust_remote_code=True,
|
| 49 |
-
device_map="auto",
|
| 50 |
-
low_cpu_mem_usage=True
|
| 51 |
-
)
|
| 52 |
-
|
| 53 |
-
success_msg = f"✅ Teknova Nova AI yüklendi! (Local + ZeroGPU)"
|
| 54 |
-
print(success_msg)
|
| 55 |
-
return success_msg
|
| 56 |
-
|
| 57 |
-
except Exception as e:
|
| 58 |
-
error_msg = f"❌ Nova AI model yükleme hatası: {str(e)}"
|
| 59 |
-
print(error_msg)
|
| 60 |
-
return error_msg
|
| 61 |
-
|
| 62 |
-
@spaces.GPU
|
| 63 |
-
def chat_response(message, history):
|
| 64 |
-
"""Teknova Nova AI ile sohbet yanıtı üret - ZeroGPU destekli"""
|
| 65 |
-
global model, tokenizer
|
| 66 |
-
|
| 67 |
-
if model is None or tokenizer is None:
|
| 68 |
-
return "❌ Teknova Nova AI henüz yüklenmedi. Lütfen model yüklenmesini bekleyin..."
|
| 69 |
-
|
| 70 |
-
if not message.strip():
|
| 71 |
-
return "❓ Nova AI'ya mesajınızı yazın."
|
| 72 |
-
|
| 73 |
-
try:
|
| 74 |
-
# Sohbet geçmişini Nova AI formatında hazırla
|
| 75 |
-
conversation = ""
|
| 76 |
-
for user_msg, bot_msg in history:
|
| 77 |
-
conversation += f"Kullanıcı: {user_msg}\nNova AI: {bot_msg}\n"
|
| 78 |
-
|
| 79 |
-
# Yeni mesajı ekle
|
| 80 |
-
conversation += f"Kullanıcı: {message}\nNova AI:"
|
| 81 |
-
|
| 82 |
-
# Nova AI Tokenizer ile işle
|
| 83 |
-
inputs = tokenizer(
|
| 84 |
-
conversation,
|
| 85 |
-
return_tensors="pt",
|
| 86 |
-
truncation=True,
|
| 87 |
-
max_length=2048,
|
| 88 |
-
padding=True
|
| 89 |
-
)
|
| 90 |
-
|
| 91 |
-
# GPU'ya taşı
|
| 92 |
-
if torch.cuda.is_available():
|
| 93 |
-
inputs = {k: v.to(model.device) for k, v in inputs.items()}
|
| 94 |
-
|
| 95 |
-
# Nova AI yanıt üret - ZeroGPU optimizasyonu
|
| 96 |
-
with torch.no_grad():
|
| 97 |
-
outputs = model.generate(
|
| 98 |
-
**inputs,
|
| 99 |
-
max_new_tokens=512,
|
| 100 |
-
temperature=0.7,
|
| 101 |
-
top_p=0.9,
|
| 102 |
-
do_sample=True,
|
| 103 |
-
pad_token_id=tokenizer.pad_token_id,
|
| 104 |
-
eos_token_id=tokenizer.eos_token_id,
|
| 105 |
-
repetition_penalty=1.1
|
| 106 |
-
)
|
| 107 |
-
|
| 108 |
-
# Nova AI yanıtını decode et
|
| 109 |
-
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 110 |
-
|
| 111 |
-
# Sadece Nova AI'ın yeni yanıtını al
|
| 112 |
-
new_response = response[len(conversation):].strip()
|
| 113 |
-
|
| 114 |
-
return new_response
|
| 115 |
-
|
| 116 |
-
except Exception as e:
|
| 117 |
-
return f"❌ Nova AI yanıt üretirken hata: {str(e)}"
|
| 118 |
-
|
| 119 |
-
# Başlangıçta modeli yükle
|
| 120 |
-
initial_status = load_model()
|
| 121 |
-
|
| 122 |
-
# Gradio arayüzü oluştur
|
| 123 |
-
with gr.Blocks(
|
| 124 |
-
theme=gr.themes.Soft(),
|
| 125 |
-
title="Nova AI Chat - Teknova",
|
| 126 |
-
css="""
|
| 127 |
-
.gradio-container {
|
| 128 |
-
max-width: 800px;
|
| 129 |
-
margin: 0 auto;
|
| 130 |
-
}
|
| 131 |
-
.chat-message {
|
| 132 |
-
border-radius: 10px;
|
| 133 |
-
padding: 10px;
|
| 134 |
-
margin: 5px 0;
|
| 135 |
-
}
|
| 136 |
-
"""
|
| 137 |
-
) as demo:
|
| 138 |
-
|
| 139 |
-
gr.HTML("""
|
| 140 |
-
<div style="text-align: center; padding: 20px;">
|
| 141 |
-
<h1 style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); -webkit-background-clip: text; -webkit-text-fill-color: transparent; font-size: 2.5rem; font-weight: bold;">
|
| 142 |
-
🚀 Teknova Nova AI
|
| 143 |
-
</h1>
|
| 144 |
-
<p style="font-size: 1.2rem; color: #666; margin: 10px 0;">
|
| 145 |
-
<strong>Teknova</strong> tarafından geliştirilen <strong>özgün</strong> yapay zeka modeli
|
| 146 |
-
</p>
|
| 147 |
-
<div style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); color: white; padding: 8px 16px; border-radius: 20px; display: inline-block; font-size: 0.9rem;">
|
| 148 |
-
⚡ Özgün Nova AI Teknolojisi • �� Teknova Innovation • 🚀 ZeroGPU Destekli
|
| 149 |
-
</div>
|
| 150 |
-
<p style="font-size: 0.9rem; color: #888; margin-top: 10px;">
|
| 151 |
-
🌟 Bu tamamen özgün bir Teknova Nova AI modelidir - Token gerektirmez
|
| 152 |
-
</p>
|
| 153 |
-
</div>
|
| 154 |
-
""")
|
| 155 |
-
|
| 156 |
-
# ================== Model Durumu ==================
|
| 157 |
-
with gr.Row():
|
| 158 |
-
statusbox = gr.Textbox(
|
| 159 |
-
value=initial_status,
|
| 160 |
-
label="Model Durumu",
|
| 161 |
-
interactive=False
|
| 162 |
-
)
|
| 163 |
-
|
| 164 |
-
chatbot = gr.Chatbot(
|
| 165 |
-
height=500,
|
| 166 |
-
show_label=False,
|
| 167 |
-
show_share_button=False,
|
| 168 |
-
show_copy_button=True,
|
| 169 |
-
avatar_images=[
|
| 170 |
-
None, # User avatar
|
| 171 |
-
"🤖" # Bot avatar
|
| 172 |
-
],
|
| 173 |
-
type="messages"
|
| 174 |
-
)
|
| 175 |
-
|
| 176 |
-
with gr.Row():
|
| 177 |
-
msg = gr.Textbox(
|
| 178 |
-
placeholder="Nova AI'ya mesajınızı yazın...",
|
| 179 |
-
show_label=False,
|
| 180 |
-
scale=4
|
| 181 |
-
)
|
| 182 |
-
submit = gr.Button("🚀 Gönder", scale=1, variant="primary")
|
| 183 |
-
|
| 184 |
-
with gr.Row():
|
| 185 |
-
clear = gr.Button("🗑️ Temizle", scale=1)
|
| 186 |
-
|
| 187 |
-
gr.HTML("""
|
| 188 |
-
<div style="text-align: center; padding: 10px; color: #666;">
|
| 189 |
-
<small>💡 Teknova Nova AI ilk yüklenirken biraz bekleyebilir. Özgün AI teknolojisi ile güçlendirilmiştir.</small>
|
| 190 |
-
<br>
|
| 191 |
-
<small style="color: #ff6b6b;">🚀 <strong>Teknova Nova AI</strong> - Tamamen özgün model teknolojisi</small>
|
| 192 |
-
<br>
|
| 193 |
-
<small style="color: #4ecdc4;">🌟 Hugging Face ZeroGPU ile hızlandırılmış!</small>
|
| 194 |
-
</div>
|
| 195 |
-
""")
|
| 196 |
-
|
| 197 |
-
# Event handlers
|
| 198 |
-
def user_message(message, history):
|
| 199 |
-
return "", history + [[message, None]]
|
| 200 |
-
|
| 201 |
-
def bot_message(history):
|
| 202 |
-
user_message = history[-1][0]
|
| 203 |
-
bot_response = chat_response(user_message, history[:-1])
|
| 204 |
-
history[-1][1] = bot_response
|
| 205 |
-
return history
|
| 206 |
-
|
| 207 |
-
msg.submit(user_message, [msg, chatbot], [msg, chatbot], queue=False).then(
|
| 208 |
-
bot_message, chatbot, chatbot
|
| 209 |
-
)
|
| 210 |
-
submit.click(user_message, [msg, chatbot], [msg, chatbot], queue=False).then(
|
| 211 |
-
bot_message, chatbot, chatbot
|
| 212 |
-
)
|
| 213 |
-
clear.click(lambda: None, None, chatbot, queue=False)
|
| 214 |
-
|
| 215 |
-
if __name__ == "__main__":
|
| 216 |
-
demo.launch(
|
| 217 |
-
server_name="0.0.0.0",
|
| 218 |
-
share=True # port otomatik bulunur, 0.0.0.0 + ilk boş port
|
| 219 |
)
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
import torch
|
| 3 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 4 |
+
import os
|
| 5 |
+
|
| 6 |
+
# Spaces import - sadece Hugging Face Spaces'te mevcut
|
| 7 |
+
try:
|
| 8 |
+
import spaces
|
| 9 |
+
HAS_SPACES = True
|
| 10 |
+
except ImportError:
|
| 11 |
+
HAS_SPACES = False
|
| 12 |
+
# Spaces decorator'ı için dummy fonksiyon
|
| 13 |
+
def spaces_gpu(func):
|
| 14 |
+
return func
|
| 15 |
+
spaces = type('spaces', (), {'GPU': spaces_gpu})()
|
| 16 |
+
|
| 17 |
+
# ================== Nova AI Modeli ==================
|
| 18 |
+
# Sabit model: veteroner/NovaAI Hub'dan yüklenir
|
| 19 |
+
|
| 20 |
+
# Global değişkenler
|
| 21 |
+
model = None
|
| 22 |
+
tokenizer = None
|
| 23 |
+
|
| 24 |
+
@spaces.GPU
|
| 25 |
+
def load_model():
|
| 26 |
+
"""Teknova Nova AI modelini yükle - ZeroGPU destekli."""
|
| 27 |
+
global model, tokenizer
|
| 28 |
+
|
| 29 |
+
model_path = "nova-ai-model"
|
| 30 |
+
print(f"🚀 Nova AI modeli yükleniyor... ({model_path})")
|
| 31 |
+
|
| 32 |
+
try:
|
| 33 |
+
# Tokenizer yükle
|
| 34 |
+
tokenizer = AutoTokenizer.from_pretrained(
|
| 35 |
+
model_path,
|
| 36 |
+
trust_remote_code=True,
|
| 37 |
+
use_fast=True
|
| 38 |
+
)
|
| 39 |
+
|
| 40 |
+
# Pad token ayarla
|
| 41 |
+
if tokenizer.pad_token is None:
|
| 42 |
+
tokenizer.pad_token = tokenizer.eos_token
|
| 43 |
+
|
| 44 |
+
# Model yükle - ZeroGPU optimizasyonu
|
| 45 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 46 |
+
model_path,
|
| 47 |
+
torch_dtype=torch.float16,
|
| 48 |
+
trust_remote_code=True,
|
| 49 |
+
device_map="auto",
|
| 50 |
+
low_cpu_mem_usage=True
|
| 51 |
+
)
|
| 52 |
+
|
| 53 |
+
success_msg = f"✅ Teknova Nova AI yüklendi! (Local + ZeroGPU)"
|
| 54 |
+
print(success_msg)
|
| 55 |
+
return success_msg
|
| 56 |
+
|
| 57 |
+
except Exception as e:
|
| 58 |
+
error_msg = f"❌ Nova AI model yükleme hatası: {str(e)}"
|
| 59 |
+
print(error_msg)
|
| 60 |
+
return error_msg
|
| 61 |
+
|
| 62 |
+
@spaces.GPU
|
| 63 |
+
def chat_response(message, history):
|
| 64 |
+
"""Teknova Nova AI ile sohbet yanıtı üret - ZeroGPU destekli"""
|
| 65 |
+
global model, tokenizer
|
| 66 |
+
|
| 67 |
+
if model is None or tokenizer is None:
|
| 68 |
+
return "❌ Teknova Nova AI henüz yüklenmedi. Lütfen model yüklenmesini bekleyin..."
|
| 69 |
+
|
| 70 |
+
if not message.strip():
|
| 71 |
+
return "❓ Nova AI'ya mesajınızı yazın."
|
| 72 |
+
|
| 73 |
+
try:
|
| 74 |
+
# Sohbet geçmişini Nova AI formatında hazırla
|
| 75 |
+
conversation = ""
|
| 76 |
+
for user_msg, bot_msg in history:
|
| 77 |
+
conversation += f"Kullanıcı: {user_msg}\nNova AI: {bot_msg}\n"
|
| 78 |
+
|
| 79 |
+
# Yeni mesajı ekle
|
| 80 |
+
conversation += f"Kullanıcı: {message}\nNova AI:"
|
| 81 |
+
|
| 82 |
+
# Nova AI Tokenizer ile işle
|
| 83 |
+
inputs = tokenizer(
|
| 84 |
+
conversation,
|
| 85 |
+
return_tensors="pt",
|
| 86 |
+
truncation=True,
|
| 87 |
+
max_length=2048,
|
| 88 |
+
padding=True
|
| 89 |
+
)
|
| 90 |
+
|
| 91 |
+
# GPU'ya taşı
|
| 92 |
+
if torch.cuda.is_available():
|
| 93 |
+
inputs = {k: v.to(model.device) for k, v in inputs.items()}
|
| 94 |
+
|
| 95 |
+
# Nova AI yanıt üret - ZeroGPU optimizasyonu
|
| 96 |
+
with torch.no_grad():
|
| 97 |
+
outputs = model.generate(
|
| 98 |
+
**inputs,
|
| 99 |
+
max_new_tokens=512,
|
| 100 |
+
temperature=0.7,
|
| 101 |
+
top_p=0.9,
|
| 102 |
+
do_sample=True,
|
| 103 |
+
pad_token_id=tokenizer.pad_token_id,
|
| 104 |
+
eos_token_id=tokenizer.eos_token_id,
|
| 105 |
+
repetition_penalty=1.1
|
| 106 |
+
)
|
| 107 |
+
|
| 108 |
+
# Nova AI yanıtını decode et
|
| 109 |
+
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 110 |
+
|
| 111 |
+
# Sadece Nova AI'ın yeni yanıtını al
|
| 112 |
+
new_response = response[len(conversation):].strip()
|
| 113 |
+
|
| 114 |
+
return new_response
|
| 115 |
+
|
| 116 |
+
except Exception as e:
|
| 117 |
+
return f"❌ Nova AI yanıt üretirken hata: {str(e)}"
|
| 118 |
+
|
| 119 |
+
# Başlangıçta modeli yükle
|
| 120 |
+
initial_status = load_model()
|
| 121 |
+
|
| 122 |
+
# Gradio arayüzü oluştur
|
| 123 |
+
with gr.Blocks(
|
| 124 |
+
theme=gr.themes.Soft(),
|
| 125 |
+
title="Nova AI Chat - Teknova",
|
| 126 |
+
css="""
|
| 127 |
+
.gradio-container {
|
| 128 |
+
max-width: 800px;
|
| 129 |
+
margin: 0 auto;
|
| 130 |
+
}
|
| 131 |
+
.chat-message {
|
| 132 |
+
border-radius: 10px;
|
| 133 |
+
padding: 10px;
|
| 134 |
+
margin: 5px 0;
|
| 135 |
+
}
|
| 136 |
+
"""
|
| 137 |
+
) as demo:
|
| 138 |
+
|
| 139 |
+
gr.HTML("""
|
| 140 |
+
<div style="text-align: center; padding: 20px;">
|
| 141 |
+
<h1 style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); -webkit-background-clip: text; -webkit-text-fill-color: transparent; font-size: 2.5rem; font-weight: bold;">
|
| 142 |
+
🚀 Teknova Nova AI
|
| 143 |
+
</h1>
|
| 144 |
+
<p style="font-size: 1.2rem; color: #666; margin: 10px 0;">
|
| 145 |
+
<strong>Teknova</strong> tarafından geliştirilen <strong>özgün</strong> yapay zeka modeli
|
| 146 |
+
</p>
|
| 147 |
+
<div style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); color: white; padding: 8px 16px; border-radius: 20px; display: inline-block; font-size: 0.9rem;">
|
| 148 |
+
⚡ Özgün Nova AI Teknolojisi • �� Teknova Innovation • 🚀 ZeroGPU Destekli
|
| 149 |
+
</div>
|
| 150 |
+
<p style="font-size: 0.9rem; color: #888; margin-top: 10px;">
|
| 151 |
+
🌟 Bu tamamen özgün bir Teknova Nova AI modelidir - Token gerektirmez
|
| 152 |
+
</p>
|
| 153 |
+
</div>
|
| 154 |
+
""")
|
| 155 |
+
|
| 156 |
+
# ================== Model Durumu ==================
|
| 157 |
+
with gr.Row():
|
| 158 |
+
statusbox = gr.Textbox(
|
| 159 |
+
value=initial_status,
|
| 160 |
+
label="Model Durumu",
|
| 161 |
+
interactive=False
|
| 162 |
+
)
|
| 163 |
+
|
| 164 |
+
chatbot = gr.Chatbot(
|
| 165 |
+
height=500,
|
| 166 |
+
show_label=False,
|
| 167 |
+
show_share_button=False,
|
| 168 |
+
show_copy_button=True,
|
| 169 |
+
avatar_images=[
|
| 170 |
+
None, # User avatar
|
| 171 |
+
"🤖" # Bot avatar
|
| 172 |
+
],
|
| 173 |
+
type="messages"
|
| 174 |
+
)
|
| 175 |
+
|
| 176 |
+
with gr.Row():
|
| 177 |
+
msg = gr.Textbox(
|
| 178 |
+
placeholder="Nova AI'ya mesajınızı yazın...",
|
| 179 |
+
show_label=False,
|
| 180 |
+
scale=4
|
| 181 |
+
)
|
| 182 |
+
submit = gr.Button("🚀 Gönder", scale=1, variant="primary")
|
| 183 |
+
|
| 184 |
+
with gr.Row():
|
| 185 |
+
clear = gr.Button("🗑️ Temizle", scale=1)
|
| 186 |
+
|
| 187 |
+
gr.HTML("""
|
| 188 |
+
<div style="text-align: center; padding: 10px; color: #666;">
|
| 189 |
+
<small>💡 Teknova Nova AI ilk yüklenirken biraz bekleyebilir. Özgün AI teknolojisi ile güçlendirilmiştir.</small>
|
| 190 |
+
<br>
|
| 191 |
+
<small style="color: #ff6b6b;">🚀 <strong>Teknova Nova AI</strong> - Tamamen özgün model teknolojisi</small>
|
| 192 |
+
<br>
|
| 193 |
+
<small style="color: #4ecdc4;">🌟 Hugging Face ZeroGPU ile hızlandırılmış!</small>
|
| 194 |
+
</div>
|
| 195 |
+
""")
|
| 196 |
+
|
| 197 |
+
# Event handlers
|
| 198 |
+
def user_message(message, history):
|
| 199 |
+
return "", history + [[message, None]]
|
| 200 |
+
|
| 201 |
+
def bot_message(history):
|
| 202 |
+
user_message = history[-1][0]
|
| 203 |
+
bot_response = chat_response(user_message, history[:-1])
|
| 204 |
+
history[-1][1] = bot_response
|
| 205 |
+
return history
|
| 206 |
+
|
| 207 |
+
msg.submit(user_message, [msg, chatbot], [msg, chatbot], queue=False).then(
|
| 208 |
+
bot_message, chatbot, chatbot
|
| 209 |
+
)
|
| 210 |
+
submit.click(user_message, [msg, chatbot], [msg, chatbot], queue=False).then(
|
| 211 |
+
bot_message, chatbot, chatbot
|
| 212 |
+
)
|
| 213 |
+
clear.click(lambda: None, None, chatbot, queue=False)
|
| 214 |
+
|
| 215 |
+
if __name__ == "__main__":
|
| 216 |
+
demo.launch(
|
| 217 |
+
server_name="0.0.0.0",
|
| 218 |
+
share=True # port otomatik bulunur, 0.0.0.0 + ilk boş port
|
| 219 |
)
|
hf_space_app.py
CHANGED
|
@@ -1,195 +1,195 @@
|
|
| 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 os
|
| 11 |
-
|
| 12 |
-
# Spaces import - sadece Hugging Face Spaces'te mevcut
|
| 13 |
-
try:
|
| 14 |
-
import spaces
|
| 15 |
-
HAS_SPACES = True
|
| 16 |
-
except ImportError:
|
| 17 |
-
HAS_SPACES = False
|
| 18 |
-
# Spaces decorator'ı için dummy fonksiyon
|
| 19 |
-
def spaces_gpu(func):
|
| 20 |
-
return func
|
| 21 |
-
spaces = type('spaces', (), {'GPU': spaces_gpu})()
|
| 22 |
-
|
| 23 |
-
# Model seçenekleri - Local model kullan
|
| 24 |
-
MODEL_PATH = "nova-ai-model" # Local model path
|
| 25 |
-
|
| 26 |
-
# Global değişkenler
|
| 27 |
-
model = None
|
| 28 |
-
tokenizer = None
|
| 29 |
-
|
| 30 |
-
@spaces.GPU
|
| 31 |
-
def load_model():
|
| 32 |
-
"""Nova AI modelini ZeroGPU ile yükle"""
|
| 33 |
-
global model, tokenizer
|
| 34 |
-
|
| 35 |
-
print("🚀 Nova AI modeli ZeroGPU ile yükleniyor...")
|
| 36 |
-
|
| 37 |
-
try:
|
| 38 |
-
# Tokenizer yükle
|
| 39 |
-
tokenizer = AutoTokenizer.from_pretrained(
|
| 40 |
-
MODEL_PATH,
|
| 41 |
-
trust_remote_code=True,
|
| 42 |
-
use_fast=True
|
| 43 |
-
)
|
| 44 |
-
|
| 45 |
-
# Pad token ayarla
|
| 46 |
-
if tokenizer.pad_token is None:
|
| 47 |
-
tokenizer.pad_token = tokenizer.eos_token
|
| 48 |
-
|
| 49 |
-
# Model yükle - ZeroGPU optimizasyonu
|
| 50 |
-
model = AutoModelForCausalLM.from_pretrained(
|
| 51 |
-
MODEL_PATH,
|
| 52 |
-
torch_dtype=torch.float16,
|
| 53 |
-
device_map="auto",
|
| 54 |
-
trust_remote_code=True,
|
| 55 |
-
low_cpu_mem_usage=True
|
| 56 |
-
)
|
| 57 |
-
|
| 58 |
-
print("✅ Nova AI modeli ZeroGPU ile yüklendi!")
|
| 59 |
-
return "✅ Nova AI hazır! (ZeroGPU)"
|
| 60 |
-
|
| 61 |
-
except Exception as e:
|
| 62 |
-
error_msg = f"❌ Model yükleme hatası: {str(e)}"
|
| 63 |
-
print(error_msg)
|
| 64 |
-
return error_msg
|
| 65 |
-
|
| 66 |
-
@spaces.GPU
|
| 67 |
-
def chat_with_nova(message, history):
|
| 68 |
-
"""Nova AI ile sohbet et - ZeroGPU destekli"""
|
| 69 |
-
global model, tokenizer
|
| 70 |
-
|
| 71 |
-
if model is None or tokenizer is None:
|
| 72 |
-
# Model yüklenmemişse yükle
|
| 73 |
-
load_status = load_model()
|
| 74 |
-
if "❌" in load_status:
|
| 75 |
-
return load_status
|
| 76 |
-
|
| 77 |
-
if not message.strip():
|
| 78 |
-
return "❓ Lütfen bir mesaj yazın."
|
| 79 |
-
|
| 80 |
-
try:
|
| 81 |
-
# Konuşma geçmişini hazırla
|
| 82 |
-
conversation = ""
|
| 83 |
-
for user_msg, bot_msg in history:
|
| 84 |
-
if user_msg and bot_msg:
|
| 85 |
-
conversation += f"Kullanıcı: {user_msg}\nNova AI: {bot_msg}\n"
|
| 86 |
-
|
| 87 |
-
# Yeni mesajı ekle
|
| 88 |
-
conversation += f"Kullanıcı: {message}\nNova AI:"
|
| 89 |
-
|
| 90 |
-
# Tokenize et
|
| 91 |
-
inputs = tokenizer(
|
| 92 |
-
conversation,
|
| 93 |
-
return_tensors="pt",
|
| 94 |
-
truncation=True,
|
| 95 |
-
max_length=1024,
|
| 96 |
-
padding=True
|
| 97 |
-
)
|
| 98 |
-
|
| 99 |
-
# GPU'ya taşı
|
| 100 |
-
if torch.cuda.is_available():
|
| 101 |
-
inputs = {k: v.to(model.device) for k, v in inputs.items()}
|
| 102 |
-
|
| 103 |
-
# Yanıt üret
|
| 104 |
-
with torch.no_grad():
|
| 105 |
-
outputs = model.generate(
|
| 106 |
-
**inputs,
|
| 107 |
-
max_new_tokens=256,
|
| 108 |
-
temperature=0.7,
|
| 109 |
-
top_p=0.9,
|
| 110 |
-
do_sample=True,
|
| 111 |
-
pad_token_id=tokenizer.pad_token_id,
|
| 112 |
-
eos_token_id=tokenizer.eos_token_id,
|
| 113 |
-
repetition_penalty=1.1
|
| 114 |
-
)
|
| 115 |
-
|
| 116 |
-
# Decode et
|
| 117 |
-
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 118 |
-
nova_response = response[len(conversation):].strip()
|
| 119 |
-
|
| 120 |
-
return nova_response if nova_response else "Üzgünüm, yanıt üretemedi."
|
| 121 |
-
|
| 122 |
-
except Exception as e:
|
| 123 |
-
return f"❌ Hata: {str(e)}"
|
| 124 |
-
|
| 125 |
-
# Gradio arayüzü
|
| 126 |
-
with gr.Blocks(
|
| 127 |
-
theme=gr.themes.Soft(),
|
| 128 |
-
title="Nova AI - ZeroGPU",
|
| 129 |
-
css="""
|
| 130 |
-
.gradio-container {
|
| 131 |
-
max-width: 800px;
|
| 132 |
-
margin: 0 auto;
|
| 133 |
-
}
|
| 134 |
-
.chat-message {
|
| 135 |
-
padding: 10px;
|
| 136 |
-
margin: 5px 0;
|
| 137 |
-
border-radius: 10px;
|
| 138 |
-
}
|
| 139 |
-
"""
|
| 140 |
-
) as demo:
|
| 141 |
-
|
| 142 |
-
gr.HTML("""
|
| 143 |
-
<div style="text-align: center; padding: 20px;">
|
| 144 |
-
<h1 style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); -webkit-background-clip: text; -webkit-text-fill-color: transparent; font-size: 2.5rem; font-weight: bold;">
|
| 145 |
-
🚀 Teknova Nova AI
|
| 146 |
-
</h1>
|
| 147 |
-
<p style="font-size: 1.2rem; color: #666; margin: 10px 0;">
|
| 148 |
-
<strong>Teknova</strong> tarafından geliştirilen <strong>özgün</strong> yapay zeka modeli
|
| 149 |
-
</p>
|
| 150 |
-
<div style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); color: white; padding: 8px 16px; border-radius: 20px; display: inline-block; font-size: 0.9rem;">
|
| 151 |
-
⚡ Özgün Nova AI • 🧠 Teknova Innovation • 🚀 ZeroGPU Hızlı
|
| 152 |
-
</div>
|
| 153 |
-
<p style="font-size: 0.9rem; color: #888; margin-top: 10px;">
|
| 154 |
-
🌟 Hugging Face ZeroGPU ile hızlandırılmış
|
| 155 |
-
</p>
|
| 156 |
-
</div>
|
| 157 |
-
""")
|
| 158 |
-
|
| 159 |
-
chatbot = gr.ChatInterface(
|
| 160 |
-
fn=chat_with_nova,
|
| 161 |
-
title="Nova AI Chat",
|
| 162 |
-
description="Teknova'nın özgün yapay zeka modeli ile sohbet edin",
|
| 163 |
-
examples=[
|
| 164 |
-
"Merhaba Nova AI, nasılsın?",
|
| 165 |
-
"Yapay zeka nedir?",
|
| 166 |
-
"Teknova hakkında bilgi ver",
|
| 167 |
-
"Bana bir hikaye anlat",
|
| 168 |
-
"Python programlama hakkında bilgi ver"
|
| 169 |
-
],
|
| 170 |
-
cache_examples=False,
|
| 171 |
-
retry_btn="🔄 Tekrar Dene",
|
| 172 |
-
undo_btn="↩️ Geri Al",
|
| 173 |
-
clear_btn="🗑️ Temizle",
|
| 174 |
-
submit_btn="🚀 Gönder",
|
| 175 |
-
textbox=gr.Textbox(
|
| 176 |
-
placeholder="Nova AI ile sohbet etmek için mesajınızı yazın...",
|
| 177 |
-
container=False,
|
| 178 |
-
scale=7
|
| 179 |
-
)
|
| 180 |
-
)
|
| 181 |
-
|
| 182 |
-
gr.HTML("""
|
| 183 |
-
<div style="text-align: center; padding: 15px; color: #666; font-size: 0.9rem;">
|
| 184 |
-
<p>🌟 <strong>Teknova Nova AI</strong> - Tamamen özgün Türkçe dil modeli</p>
|
| 185 |
-
<p>🚀 ZeroGPU teknolojisi ile hızlandırılmış</p>
|
| 186 |
-
<p style="color: #999;">⚡ Teknova Innovation ile güçlendirilmiştir</p>
|
| 187 |
-
</div>
|
| 188 |
-
""")
|
| 189 |
-
|
| 190 |
-
if __name__ == "__main__":
|
| 191 |
-
demo.launch(
|
| 192 |
-
server_name="0.0.0.0",
|
| 193 |
-
server_port=7860,
|
| 194 |
-
share=False
|
| 195 |
)
|
|
|
|
| 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 os
|
| 11 |
+
|
| 12 |
+
# Spaces import - sadece Hugging Face Spaces'te mevcut
|
| 13 |
+
try:
|
| 14 |
+
import spaces
|
| 15 |
+
HAS_SPACES = True
|
| 16 |
+
except ImportError:
|
| 17 |
+
HAS_SPACES = False
|
| 18 |
+
# Spaces decorator'ı için dummy fonksiyon
|
| 19 |
+
def spaces_gpu(func):
|
| 20 |
+
return func
|
| 21 |
+
spaces = type('spaces', (), {'GPU': spaces_gpu})()
|
| 22 |
+
|
| 23 |
+
# Model seçenekleri - Local model kullan
|
| 24 |
+
MODEL_PATH = "nova-ai-model" # Local model path
|
| 25 |
+
|
| 26 |
+
# Global değişkenler
|
| 27 |
+
model = None
|
| 28 |
+
tokenizer = None
|
| 29 |
+
|
| 30 |
+
@spaces.GPU
|
| 31 |
+
def load_model():
|
| 32 |
+
"""Nova AI modelini ZeroGPU ile yükle"""
|
| 33 |
+
global model, tokenizer
|
| 34 |
+
|
| 35 |
+
print("🚀 Nova AI modeli ZeroGPU ile yükleniyor...")
|
| 36 |
+
|
| 37 |
+
try:
|
| 38 |
+
# Tokenizer yükle
|
| 39 |
+
tokenizer = AutoTokenizer.from_pretrained(
|
| 40 |
+
MODEL_PATH,
|
| 41 |
+
trust_remote_code=True,
|
| 42 |
+
use_fast=True
|
| 43 |
+
)
|
| 44 |
+
|
| 45 |
+
# Pad token ayarla
|
| 46 |
+
if tokenizer.pad_token is None:
|
| 47 |
+
tokenizer.pad_token = tokenizer.eos_token
|
| 48 |
+
|
| 49 |
+
# Model yükle - ZeroGPU optimizasyonu
|
| 50 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 51 |
+
MODEL_PATH,
|
| 52 |
+
torch_dtype=torch.float16,
|
| 53 |
+
device_map="auto",
|
| 54 |
+
trust_remote_code=True,
|
| 55 |
+
low_cpu_mem_usage=True
|
| 56 |
+
)
|
| 57 |
+
|
| 58 |
+
print("✅ Nova AI modeli ZeroGPU ile yüklendi!")
|
| 59 |
+
return "✅ Nova AI hazır! (ZeroGPU)"
|
| 60 |
+
|
| 61 |
+
except Exception as e:
|
| 62 |
+
error_msg = f"❌ Model yükleme hatası: {str(e)}"
|
| 63 |
+
print(error_msg)
|
| 64 |
+
return error_msg
|
| 65 |
+
|
| 66 |
+
@spaces.GPU
|
| 67 |
+
def chat_with_nova(message, history):
|
| 68 |
+
"""Nova AI ile sohbet et - ZeroGPU destekli"""
|
| 69 |
+
global model, tokenizer
|
| 70 |
+
|
| 71 |
+
if model is None or tokenizer is None:
|
| 72 |
+
# Model yüklenmemişse yükle
|
| 73 |
+
load_status = load_model()
|
| 74 |
+
if "❌" in load_status:
|
| 75 |
+
return load_status
|
| 76 |
+
|
| 77 |
+
if not message.strip():
|
| 78 |
+
return "❓ Lütfen bir mesaj yazın."
|
| 79 |
+
|
| 80 |
+
try:
|
| 81 |
+
# Konuşma geçmişini hazırla
|
| 82 |
+
conversation = ""
|
| 83 |
+
for user_msg, bot_msg in history:
|
| 84 |
+
if user_msg and bot_msg:
|
| 85 |
+
conversation += f"Kullanıcı: {user_msg}\nNova AI: {bot_msg}\n"
|
| 86 |
+
|
| 87 |
+
# Yeni mesajı ekle
|
| 88 |
+
conversation += f"Kullanıcı: {message}\nNova AI:"
|
| 89 |
+
|
| 90 |
+
# Tokenize et
|
| 91 |
+
inputs = tokenizer(
|
| 92 |
+
conversation,
|
| 93 |
+
return_tensors="pt",
|
| 94 |
+
truncation=True,
|
| 95 |
+
max_length=1024,
|
| 96 |
+
padding=True
|
| 97 |
+
)
|
| 98 |
+
|
| 99 |
+
# GPU'ya taşı
|
| 100 |
+
if torch.cuda.is_available():
|
| 101 |
+
inputs = {k: v.to(model.device) for k, v in inputs.items()}
|
| 102 |
+
|
| 103 |
+
# Yanıt üret
|
| 104 |
+
with torch.no_grad():
|
| 105 |
+
outputs = model.generate(
|
| 106 |
+
**inputs,
|
| 107 |
+
max_new_tokens=256,
|
| 108 |
+
temperature=0.7,
|
| 109 |
+
top_p=0.9,
|
| 110 |
+
do_sample=True,
|
| 111 |
+
pad_token_id=tokenizer.pad_token_id,
|
| 112 |
+
eos_token_id=tokenizer.eos_token_id,
|
| 113 |
+
repetition_penalty=1.1
|
| 114 |
+
)
|
| 115 |
+
|
| 116 |
+
# Decode et
|
| 117 |
+
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 118 |
+
nova_response = response[len(conversation):].strip()
|
| 119 |
+
|
| 120 |
+
return nova_response if nova_response else "Üzgünüm, yanıt üretemedi."
|
| 121 |
+
|
| 122 |
+
except Exception as e:
|
| 123 |
+
return f"❌ Hata: {str(e)}"
|
| 124 |
+
|
| 125 |
+
# Gradio arayüzü
|
| 126 |
+
with gr.Blocks(
|
| 127 |
+
theme=gr.themes.Soft(),
|
| 128 |
+
title="Nova AI - ZeroGPU",
|
| 129 |
+
css="""
|
| 130 |
+
.gradio-container {
|
| 131 |
+
max-width: 800px;
|
| 132 |
+
margin: 0 auto;
|
| 133 |
+
}
|
| 134 |
+
.chat-message {
|
| 135 |
+
padding: 10px;
|
| 136 |
+
margin: 5px 0;
|
| 137 |
+
border-radius: 10px;
|
| 138 |
+
}
|
| 139 |
+
"""
|
| 140 |
+
) as demo:
|
| 141 |
+
|
| 142 |
+
gr.HTML("""
|
| 143 |
+
<div style="text-align: center; padding: 20px;">
|
| 144 |
+
<h1 style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); -webkit-background-clip: text; -webkit-text-fill-color: transparent; font-size: 2.5rem; font-weight: bold;">
|
| 145 |
+
🚀 Teknova Nova AI
|
| 146 |
+
</h1>
|
| 147 |
+
<p style="font-size: 1.2rem; color: #666; margin: 10px 0;">
|
| 148 |
+
<strong>Teknova</strong> tarafından geliştirilen <strong>özgün</strong> yapay zeka modeli
|
| 149 |
+
</p>
|
| 150 |
+
<div style="background: linear-gradient(135deg, #ff6b6b, #4ecdc4); color: white; padding: 8px 16px; border-radius: 20px; display: inline-block; font-size: 0.9rem;">
|
| 151 |
+
⚡ Özgün Nova AI • 🧠 Teknova Innovation • 🚀 ZeroGPU Hızlı
|
| 152 |
+
</div>
|
| 153 |
+
<p style="font-size: 0.9rem; color: #888; margin-top: 10px;">
|
| 154 |
+
🌟 Hugging Face ZeroGPU ile hızlandırılmış
|
| 155 |
+
</p>
|
| 156 |
+
</div>
|
| 157 |
+
""")
|
| 158 |
+
|
| 159 |
+
chatbot = gr.ChatInterface(
|
| 160 |
+
fn=chat_with_nova,
|
| 161 |
+
title="Nova AI Chat",
|
| 162 |
+
description="Teknova'nın özgün yapay zeka modeli ile sohbet edin",
|
| 163 |
+
examples=[
|
| 164 |
+
"Merhaba Nova AI, nasılsın?",
|
| 165 |
+
"Yapay zeka nedir?",
|
| 166 |
+
"Teknova hakkında bilgi ver",
|
| 167 |
+
"Bana bir hikaye anlat",
|
| 168 |
+
"Python programlama hakkında bilgi ver"
|
| 169 |
+
],
|
| 170 |
+
cache_examples=False,
|
| 171 |
+
retry_btn="🔄 Tekrar Dene",
|
| 172 |
+
undo_btn="↩️ Geri Al",
|
| 173 |
+
clear_btn="🗑️ Temizle",
|
| 174 |
+
submit_btn="🚀 Gönder",
|
| 175 |
+
textbox=gr.Textbox(
|
| 176 |
+
placeholder="Nova AI ile sohbet etmek için mesajınızı yazın...",
|
| 177 |
+
container=False,
|
| 178 |
+
scale=7
|
| 179 |
+
)
|
| 180 |
+
)
|
| 181 |
+
|
| 182 |
+
gr.HTML("""
|
| 183 |
+
<div style="text-align: center; padding: 15px; color: #666; font-size: 0.9rem;">
|
| 184 |
+
<p>🌟 <strong>Teknova Nova AI</strong> - Tamamen özgün Türkçe dil modeli</p>
|
| 185 |
+
<p>🚀 ZeroGPU teknolojisi ile hızlandırılmış</p>
|
| 186 |
+
<p style="color: #999;">⚡ Teknova Innovation ile güçlendirilmiştir</p>
|
| 187 |
+
</div>
|
| 188 |
+
""")
|
| 189 |
+
|
| 190 |
+
if __name__ == "__main__":
|
| 191 |
+
demo.launch(
|
| 192 |
+
server_name="0.0.0.0",
|
| 193 |
+
server_port=7860,
|
| 194 |
+
share=False
|
| 195 |
)
|
requirements.txt
CHANGED
|
@@ -1,10 +1,10 @@
|
|
| 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
|
|
|
|
| 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
|