Gpt-2 / App.py
mrnoobpm's picture
Update App.py
f0b3ced verified
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
print("🔥 Modeller yükleniyor...")
# DİL MODELİ (Türkçe)
print("📝 Türkçe model yükleniyor...")
lang_tokenizer = AutoTokenizer.from_pretrained("malhajar/llama-3.2-3B-Turkish")
lang_model = AutoModelForCausalLM.from_pretrained(
"malhajar/llama-3.2-3B-Turkish",
torch_dtype=torch.float16,
device_map="auto"
)
# MATEMATİK MODELİ
print("🧮 Matematik model yükleniyor...")
math_tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/deepseek-math-7b-instruct")
math_model = AutoModelForCausalLM.from_pretrained(
"deepseek-ai/deepseek-math-7b-instruct",
torch_dtype=torch.float16,
device_map="auto"
)
print("✅ Tüm modeller hazır!")
def detect_math(prompt):
"""Matematik prompt mu kontrol et"""
math_keywords = [
"çarp", "böl", "topla", "çıkar", "hesap", "kaç",
"toplam", "fark", "çarpım", "bölüm", "üzeri",
"=", "+", "-", "*", "/", "×", "÷", "kare", "küp"
]
prompt_lower = prompt.lower()
return any(keyword in prompt_lower for keyword in math_keywords)
def generate_text(model, tokenizer, prompt, max_length=200):
"""Genel metin üretme fonksiyonu"""
inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=512)
inputs = {k: v.to(model.device) for k, v in inputs.items()}
with torch.no_grad():
outputs = model.generate(
**inputs,
max_length=max_length,
do_sample=True,
temperature=0.7,
top_p=0.9,
pad_token_id=tokenizer.eos_token_id
)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
def hybrid_ai(prompt, max_length, show_both):
"""Ana AI fonksiyonu"""
if not prompt.strip():
return "⚠️ Lütfen bir metin girin!", ""
is_math = detect_math(prompt)
if show_both:
# Her iki modeli de göster
try:
math_result = generate_text(math_model, math_tokenizer, prompt, max_length)
lang_result = generate_text(lang_model, lang_tokenizer, prompt, max_length)
result1 = f"### 🧮 Matematik AI (DeepSeek-Math)\n\n{math_result}"
result2 = f"### 💬 Dil AI (Llama-3.2 Turkish)\n\n{lang_result}"
return result1, result2
except Exception as e:
return f"❌ Hata: {str(e)}", ""
else:
# Otomatik seçim
try:
if is_math:
result = generate_text(math_model, math_tokenizer, prompt, max_length)
return f"### 🧮 Matematik AI Seçildi (DeepSeek-Math)\n\n{result}", ""
else:
result = generate_text(lang_model, lang_tokenizer, prompt, max_length)
return f"### 💬 Dil AI Seçildi (Llama-3.2 Turkish)\n\n{result}", ""
except Exception as e:
return f"❌ Hata: {str(e)}", ""
# Gradio Arayüzü
with gr.Blocks(title="Hybrid AI: Matematik + Dil", theme=gr.themes.Soft()) as demo:
gr.Markdown("""
# 🔥 Hybrid AI: 2 Model Birleşimi
**Matematik:** DeepSeek-Math-7B
**Dil:** Llama-3.2-3B Turkish
Otomatik algılama veya her ikisini karşılaştır!
""")
with gr.Row():
with gr.Column():
prompt_input = gr.Textbox(
label="📝 Prompt",
placeholder="Matematik soru veya normal metin...",
lines=5
)
max_length = gr.Slider(
50, 300, 150, step=10,
label="Maksimum Uzunluk"
)
show_both = gr.Checkbox(
label="🔀 Her İki Modeli de Göster (Karşılaştırma Modu)",
value=False
)
generate_btn = gr.Button("🚀 Üret", variant="primary", size="lg")
with gr.Row():
output1 = gr.Textbox(label="Sonuç 1", lines=10)
output2 = gr.Textbox(label="Sonuç 2 (Karşılaştırma Modunda)", lines=10, visible=True)
# Örnekler
with gr.Accordion("📚 Örnek Promptlar", open=False):
gr.Examples(
examples=[
["347 çarpı 829 eşittir"],
["Bir varmış bir yokmuş, evvel zaman içinde"],
["Yapay zeka geleceği nasıl şekillendirir?"],
["Bir sepette 15 elma var. 7 tanesini yedim, 12 tane daha aldım. Toplam kaç elma var?"],
["İstanbul'un tarihi dokusu hakkında yazı yaz"]
],
inputs=prompt_input
)
# Event
generate_btn.click(
fn=hybrid_ai,
inputs=[prompt_input, max_length, show_both],
outputs=[output1, output2]
)
gr.Markdown("""
---
💡 **Nasıl Çalışır:**
- ✅ Matematik kelimeleri varsa → DeepSeek-Math
- ✅ Normal metin varsa → Llama-3.2 Turkish
- 🔀 Karşılaştırma modunda her ikisi de çalışır!
""")
if __name__ == "__main__":
demo.launch()