File size: 5,095 Bytes
b5ef4ac f0b3ced b5ef4ac f0b3ced b5ef4ac f0b3ced b5ef4ac f0b3ced b5ef4ac f0b3ced |
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 |
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() |