File size: 6,369 Bytes
58c4fec |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
"""
CRANE AI - Kurulum Scripti
"""
import asyncio
import logging
import os
import sys
from pathlib import Path
# Logging ayarları
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
class CRANESetup:
"""CRANE AI kurulum sınıfı"""
def __init__(self):
self.project_root = Path(__file__).parent
self.required_dirs = [
"logs",
"models",
"cache",
"data",
"exports"
]
async def setup_system(self):
"""Sistemi kurar"""
try:
logger.info("🏗️ CRANE AI Kurulumu Başlatılıyor...")
# Dizinleri oluştur
await self._create_directories()
# Paketleri kontrol et
await self._check_packages()
# Hugging Face token'ını kontrol et
await self._check_hf_token()
# Modelleri hazırla
await self._prepare_models()
# Test çalıştır
await self._run_tests()
logger.info("✅ CRANE AI Kurulumu Başarıyla Tamamlandı!")
logger.info("🚀 Sistemi başlatmak için: python main.py")
except Exception as e:
logger.error(f"❌ Kurulum hatası: {str(e)}")
sys.exit(1)
async def _create_directories(self):
"""Gerekli dizinleri oluşturur"""
logger.info("📁 Dizinler oluşturuluyor...")
for dir_name in self.required_dirs:
dir_path = self.project_root / dir_name
dir_path.mkdir(exist_ok=True)
logger.info(f" ✅ {dir_name}/ oluşturuldu")
# __init__.py dosyalarını oluştur
init_files = [
"core/__init__.py",
"router/__init__.py",
"memory/__init__.py",
"config/__init__.py"
]
for init_file in init_files:
init_path = self.project_root / init_file
init_path.parent.mkdir(exist_ok=True)
if not init_path.exists():
init_path.write_text('"""Package initialization"""')
logger.info(f" ✅ {init_file} oluşturuldu")
async def _check_packages(self):
"""Gerekli paketleri kontrol eder"""
logger.info("📦 Paketler kontrol ediliyor...")
required_packages = [
"torch",
"transformers",
"fastapi",
"uvicorn",
"gradio",
"numpy",
"requests",
"psutil"
]
missing_packages = []
for package in required_packages:
try:
__import__(package)
logger.info(f" ✅ {package} mevcut")
except ImportError:
missing_packages.append(package)
logger.warning(f" ❌ {package} eksik")
if missing_packages:
logger.error(f"❌ Eksik paketler: {', '.join(missing_packages)}")
logger.info("💡 Çözüm: pip install -r requirements.txt")
raise Exception("Eksik paketler var")
async def _check_hf_token(self):
"""Hugging Face token'ını kontrol eder"""
logger.info("🔑 Hugging Face token kontrol ediliyor...")
from config.settings import HF_TOKEN
if not HF_TOKEN or HF_TOKEN == "YOUR_TOKEN_HERE":
logger.error("❌ Hugging Face token bulunamadı")
logger.info("💡 config/settings.py dosyasında HF_TOKEN'ı ayarlayın")
raise Exception("Hugging Face token gerekli")
# Token'ın geçerli olup olmadığını kontrol et
try:
from huggingface_hub import HfApi
api = HfApi()
user_info = api.whoami(token=HF_TOKEN)
logger.info(f" ✅ Token geçerli: {user_info.get('name', 'Unknown')}")
except Exception as e:
logger.error(f"❌ Token geçersiz: {str(e)}")
raise Exception("Hugging Face token geçersiz")
async def _prepare_models(self):
"""Modelleri hazırlar"""
logger.info("🤖 Modeller hazırlanıyor...")
from config.settings import MODELS, DEVICE
# Cihaz bilgisini göster
logger.info(f" 🖥️ Cihaz: {DEVICE}")
# Model bilgilerini göster
for model_name, model_config in MODELS.items():
model_id = model_config["model_id"]
logger.info(f" 📋 {model_name}: {model_id}")
# Model cache'ini kontrol et
cache_dir = self.project_root / "cache" / model_name
cache_dir.mkdir(exist_ok=True)
logger.info(" ✅ Modeller hazırlandı")
async def _run_tests(self):
"""Basit testler çalıştırır"""
logger.info("🧪 Testler çalıştırılıyor...")
try:
# Router testi
from router.intelligent_router import IntelligentRouter
logger.info(" ✅ Router importu başarılı")
# Modül testleri
from modules import CodeModule, ChatModule, ReasonModule, FastModule
logger.info(" ✅ Modül importları başarılı")
# Memory testi
from memory.local_memory import LocalMemoryManager
logger.info(" ✅ Memory Manager importu başarılı")
# Token layer testi
from core.token_capsule import TokenCapsuleLayer
logger.info(" ✅ Token Capsule Layer importu başarılı")
logger.info(" ✅ Tüm testler başarılı")
except Exception as e:
logger.error(f"❌ Test hatası: {str(e)}")
raise Exception("Sistem testleri başarısız")
def main():
"""Ana kurulum fonksiyonu"""
setup = CRANESetup()
asyncio.run(setup.setup_system())
if __name__ == "__main__":
main() |