""" 🚀 Nova AI - Hugging Face Spaces ZeroGPU Teknova tarafından geliştirilen özgün yapay zeka modeli ZeroGPU ile hızlandırılmış """ import gradio as gr import torch from transformers import AutoModelForCausalLM, AutoTokenizer import os # Spaces import - sadece Hugging Face Spaces'te mevcut try: import spaces HAS_SPACES = True except ImportError: HAS_SPACES = False # Spaces decorator'ı için dummy fonksiyon def spaces_gpu(func): return func spaces = type('spaces', (), {'GPU': spaces_gpu})() # Model seçenekleri - Local model kullan MODEL_PATH = "nova-ai-model" # Local model path # Global değişkenler model = None tokenizer = None @spaces.GPU def load_model(): """Nova AI modelini ZeroGPU ile yükle""" global model, tokenizer print("🚀 Nova AI modeli ZeroGPU ile yükleniyor...") try: # Tokenizer yükle tokenizer = AutoTokenizer.from_pretrained( MODEL_PATH, trust_remote_code=True, use_fast=True ) # Pad token ayarla if tokenizer.pad_token is None: tokenizer.pad_token = tokenizer.eos_token # Model yükle - ZeroGPU optimizasyonu model = AutoModelForCausalLM.from_pretrained( MODEL_PATH, torch_dtype=torch.float16, device_map="auto", trust_remote_code=True, low_cpu_mem_usage=True ) print("✅ Nova AI modeli ZeroGPU ile yüklendi!") return "✅ Nova AI hazır! (ZeroGPU)" except Exception as e: error_msg = f"❌ Model yükleme hatası: {str(e)}" print(error_msg) return error_msg @spaces.GPU def chat_with_nova(message, history): """Nova AI ile sohbet et - ZeroGPU destekli""" global model, tokenizer if model is None or tokenizer is None: # Model yüklenmemişse yükle load_status = load_model() if "❌" in load_status: return load_status if not message.strip(): return "❓ Lütfen bir mesaj yazın." try: # Konuşma geçmişini hazırla conversation = "" for user_msg, bot_msg in history: if user_msg and bot_msg: conversation += f"Kullanıcı: {user_msg}\nNova AI: {bot_msg}\n" # Yeni mesajı ekle conversation += f"Kullanıcı: {message}\nNova AI:" # Tokenize et inputs = tokenizer( conversation, return_tensors="pt", truncation=True, max_length=1024, padding=True ) # GPU'ya taşı if torch.cuda.is_available(): inputs = {k: v.to(model.device) for k, v in inputs.items()} # Yanıt üret with torch.no_grad(): outputs = model.generate( **inputs, max_new_tokens=256, temperature=0.7, top_p=0.9, do_sample=True, pad_token_id=tokenizer.pad_token_id, eos_token_id=tokenizer.eos_token_id, repetition_penalty=1.1 ) # Decode et response = tokenizer.decode(outputs[0], skip_special_tokens=True) nova_response = response[len(conversation):].strip() return nova_response if nova_response else "Üzgünüm, yanıt üretemedi." except Exception as e: return f"❌ Hata: {str(e)}" # Gradio arayüzü with gr.Blocks( theme=gr.themes.Soft(), title="Nova AI - ZeroGPU", css=""" .gradio-container { max-width: 800px; margin: 0 auto; } .chat-message { padding: 10px; margin: 5px 0; border-radius: 10px; } """ ) as demo: gr.HTML("""
Teknova tarafından geliştirilen özgün yapay zeka modeli
🌟 Hugging Face ZeroGPU ile hızlandırılmış
🌟 Teknova Nova AI - Tamamen özgün Türkçe dil modeli
🚀 ZeroGPU teknolojisi ile hızlandırılmış
⚡ Teknova Innovation ile güçlendirilmiştir