|
|
"""
|
|
|
CRANE AI - Kurulum Scripti
|
|
|
"""
|
|
|
|
|
|
import asyncio
|
|
|
import logging
|
|
|
import os
|
|
|
import sys
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
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...")
|
|
|
|
|
|
|
|
|
await self._create_directories()
|
|
|
|
|
|
|
|
|
await self._check_packages()
|
|
|
|
|
|
|
|
|
await self._check_hf_token()
|
|
|
|
|
|
|
|
|
await self._prepare_models()
|
|
|
|
|
|
|
|
|
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_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")
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
logger.info(f" 🖥️ Cihaz: {DEVICE}")
|
|
|
|
|
|
|
|
|
for model_name, model_config in MODELS.items():
|
|
|
model_id = model_config["model_id"]
|
|
|
logger.info(f" 📋 {model_name}: {model_id}")
|
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
from router.intelligent_router import IntelligentRouter
|
|
|
logger.info(" ✅ Router importu başarılı")
|
|
|
|
|
|
|
|
|
from modules import CodeModule, ChatModule, ReasonModule, FastModule
|
|
|
logger.info(" ✅ Modül importları başarılı")
|
|
|
|
|
|
|
|
|
from memory.local_memory import LocalMemoryManager
|
|
|
logger.info(" ✅ Memory Manager importu başarılı")
|
|
|
|
|
|
|
|
|
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() |