File size: 6,230 Bytes
9b0ae85 |
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 |
import logging
import gradio as gr
import pandas as pd
logger = logging.getLogger(__name__)
def create_evaluation_models_table(api_service):
"""API'den değerlendirme modellerini al ve tablo oluştur."""
try:
models = api_service.get_evaluation_models(limit=20)
if not models:
return pd.DataFrame({
"ℹ️ Bilgi": ["Henüz değerlendirme isteği bulunmuyor"],
"💡 İpucu": ["İlk modelinizi göndermek için 'Model Gönder' sekmesini kullanın"]
})
# DataFrame oluştur (ID olmadan)
df_data = []
for model in models:
df_data.append({
"🤖 Model Adı": model.get('model', 'N/A'),
"📊 Durum": model.get('status_turkish', model.get('status', 'N/A')),
"📈 İlerleme": model.get('progress_percent', '0.00%'),
"🎯 Başarı": model.get('basari_percent', '0.00%'),
"📅 Son Güncelleme": model.get('updated_at_formatted', 'N/A'),
"🔧 Model Türü": model.get('model_type', 'N/A'),
"📏 Parametreler": model.get('parameters', 'N/A')
})
return pd.DataFrame(df_data)
except Exception as e:
logger.error(f"Değerlendirme modelleri tablosu oluşturma hatası: {e}")
return pd.DataFrame({
"❌ Hata": [f"Veri yükleme hatası: {str(e)}"],
"🔧 Durum": ["API bağlantısını kontrol edin"]
})
def get_model_details_html(model_name: str, api_service) -> str:
"""Model detaylarını HTML formatında getir."""
try:
# Model adına göre detayları al
models = api_service.get_evaluation_models()
model = None
for m in models:
if m.get('model') == model_name:
model = m
break
if not model:
return f'<div style="color: red; padding: 10px;">❌ Model bulunamadı: {model_name}</div>'
# HTML formatında detayları oluştur
html = f"""
<div style="background: #f8fafc; border-radius: 10px; padding: 20px; margin: 10px 0;">
<h3 style="color: #1e40af; margin-bottom: 15px;">🤖 Model Detayları</h3>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 15px;">
<div>
<strong>Model Adı:</strong> {model.get('model', 'N/A')}<br>
<strong>Durum:</strong> <span style="color: #059669;">{model.get('status_turkish', 'N/A')}</span><br>
<strong>İlerleme:</strong> {model.get('progress_percent', '0.00%')}<br>
<strong>Başarı Oranı:</strong> {model.get('basari_percent', '0.00%')}<br>
</div>
<div>
<strong>Model Türü:</strong> {model.get('model_type', 'N/A')}<br>
<strong>Parametreler:</strong> {model.get('parameters', 'N/A')}<br>
<strong>Oluşturulma:</strong> {model.get('created_at_formatted', 'N/A')}<br>
</div>
</div>
<div style="margin-top: 15px; padding-top: 15px; border-top: 1px solid #e2e8f0;">
<strong>Son Güncelleme:</strong> {model.get('updated_at_formatted', 'N/A')}<br>
<strong>Model Adı:</strong> <code>{model.get('model', 'N/A')}</code>
</div>
</div>
"""
return html
except Exception as e:
logger.error(f"Model detayları alma hatası: {e}")
return f'<div style="color: red; padding: 10px;">❌ Detay alma hatası: {str(e)}</div>'
def add_evaluation_requests_tab(block, api_service):
with gr.Tab("📋 Değerlendirme İstekleri"):
gr.Markdown("### API Model Değerlendirme İstekleri")
gr.Markdown("**Kullanıcıların değerlendirme için gönderdiği modellerin durumunu takip edin.**")
with gr.Row():
refresh_eval_btn = gr.Button("🔄 Listeyi Yenile", variant="primary")
status_filter = gr.Dropdown(
choices=["Tümü", "Beklemede", "İşleniyor", "Tamamlandı", "Başarısız"],
label="Duruma Göre Filtrele",
value="Tümü"
)
# Model detayları için alan
model_details_output = gr.HTML()
# Değerlendirme modelleri tablosu
evaluation_table = gr.DataFrame(
value=create_evaluation_models_table(api_service),
wrap=True,
interactive=False
)
def refresh_evaluation_models():
"""Değerlendirme modellerini yenile"""
try:
return create_evaluation_models_table(api_service)
except Exception as e:
logger.error(f"Değerlendirme modelleri yenileme hatası: {e}")
return pd.DataFrame({
"❌ Hata": [f"Yenileme hatası: {str(e)}"],
"🔧 Durum": ["API bağlantısını kontrol edin"]
})
def show_model_details(evt: gr.SelectData):
"""Seçilen modelin detaylarını göster"""
try:
if evt.index[0] is not None:
# Tablodan model adını al
df = create_evaluation_models_table(api_service)
if not df.empty and evt.index[0] < len(df):
model_name = df.iloc[evt.index[0]]["🤖 Model Adı"]
return get_model_details_html(model_name, api_service)
return "<div style='color: gray; padding: 10px;'>Model seçin</div>"
except Exception as e:
logger.error(f"Model detayları gösterme hatası: {e}")
return f"<div style='color: red; padding: 10px;'>Hata: {str(e)}</div>"
# Event handlers
refresh_eval_btn.click(
refresh_evaluation_models,
outputs=evaluation_table
)
evaluation_table.select(
show_model_details,
outputs=model_details_output
) |