File size: 4,779 Bytes
d21e10b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# app.py – 13 kategorideki önerilen modelleri tek ekranda çalıştırır
import gradio as gr
from transformers import pipeline
import torch

# ---------- 1) TEXT GENERATION ----------
gen_pipe = pipeline("text-generation", model="WiroAI/wiroai-turkish-llm-9b", device_map="auto")

# ---------- 2) TEXT CLASSIFICATION ----------
cls_pipe = pipeline("text-classification", model="savasy/bert-base-turkish-sentiment-cased")

# ---------- 3) TOKEN CLASSIFICATION (NER) ----------
ner_pipe = pipeline("token-classification", model="akdeniz27/bert-base-turkish-cased-ner",
                    aggregation_strategy="simple")

# ---------- 4) FILL-MASK ----------
mask_pipe = pipeline("fill-mask", model="dbmdz/bert-base-turkish-uncased")

# ---------- 5) QUESTION ANSWERING ----------
qa_pipe = pipeline("question-answering", model="emrecan/bert-base-turkish-cased-squad")

# ---------- 6) SUMMARIZATION ----------
summ_pipe = pipeline("summarization", model="mrm8488/bert2bert_shared-turkish-summarization")

# ---------- 7) TRANSLATION ----------
trans_pipe = pipeline("translation", model="Helsinki-NLP/opus-mt-trk-en")

# ---------- 8) TEXT2TEXT GENERATION ----------
t2t_pipe = pipeline("text2text-generation", model="google/flan-t5-xl")

# ---------- 9) SENTENCE SIMILARITY ----------
from sentence_transformers import SentenceTransformer, util
sim_model = SentenceTransformer('emrecan/bert-base-turkish-cased-mean-nli-stsb-tr')

# ---------- 10) AUDIO CLASSIFICATION ----------
# (CPU/GPU uygunluğu için küçük model)
audio_cls_pipe = pipeline("audio-classification", model="superb/wav2vec2-base-superb-ks")

# ---------- 11) AUTOMATIC SPEECH RECOGNITION (ASR) ----------
asr_pipe = pipeline("automatic-speech-recognition", model="mpoyraz/wav2vec2-xls-r-300m-cv7-turkish")

# ---------- 12) IMAGE-TEXT-TO-TEXT ----------
# Placeholder: Türkçe VLM örneği
from transformers import BlipProcessor, BlipForConditionalGeneration
from PIL import Image
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
blip_model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")

# ---------- 13) ZERO-SHOT IMAGE CLASSIFICATION ----------
zs_pipe = pipeline("zero-shot-image-classification", model="openai/clip-vit-base-patch32")

# ---------- GRADIO ARAYÜZ ----------
def run_task(task, text=None, context=None, audio=None, image=None, src_lang=None, tgt_lang=None,
             sentences=None):
    if task == "Text Generation":
        return gen_pipe(text, max_new_tokens=256)[0]["generated_text"]
    elif task == "Text Classification":
        return cls_pipe(text)[0]
    elif task == "NER":
        return ner_pipe(text)
    elif task == "Fill-Mask":
        return mask_pipe(text)
    elif task == "Question Answering":
        return qa_pipe(question=text, context=context)
    elif task == "Summarization":
        return summ_pipe(text)[0]["summary_text"]
    elif task == "Translation":
        return trans_pipe(text)[0]["translation_text"]
    elif task == "Text2Text":
        return t2t_pipe(text)[0]["generated_text"]
    elif task == "Sentence Similarity":
        emb1 = sim_model.encode(sentences[0])
        emb2 = sim_model.encode(sentences[1])
        return float(util.cos_sim(emb1, emb2))
    elif task == "Audio Classification" and audio is not None:
        return audio_cls_pipe(audio)
    elif task == "ASR" and audio is not None:
        return asr_pipe(audio)["text"]
    elif task == "Image Caption" and image is not None:
        inputs = processor(image, return_tensors="pt")
        out = blip_model.generate(**inputs)
        return processor.decode(out[0], skip_special_tokens=True)
    elif task == "Zero-Shot Image" and image is not None:
        labels = ["cat", "dog", "car", "person"]
        return zs_pipe(image, candidate_labels=labels)
    else:
        return "Lütfen görev için gerekli girdileri sağlayın."

demo = gr.Interface(
    fn=run_task,
    inputs=[
        gr.Dropdown(
            ["Text Generation", "Text Classification", "NER", "Fill-Mask",
             "Question Answering", "Summarization", "Translation",
             "Text2Text", "Sentence Similarity", "Audio Classification",
             "ASR", "Image Caption", "Zero-Shot Image"],
            label="Görev Seç"),
        gr.Textbox(placeholder="Metin girin...", label="Metin"),
        gr.Textbox(placeholder="Bağlam (QA için)", label="Bağlam", visible=False),
        gr.Audio(type="filepath", label="Ses Dosyası"),
        gr.Image(type="pil", label="Görsel"),
    ],
    outputs=gr.JSON(label="Sonuç"),
    title="Engelsiz-AI",
    description="Tüm görevler için tek ekran: Türkçe destekli 13 farklı modeli tek yerde kullanın."
)

if __name__ == "__main__":
    demo.launch()