Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import pickle | |
| import numpy as np | |
| # Modeli yükle | |
| with open("xgboost_optimized_v2.pkl", "rb") as f: # model/ klasörü kaldırıldı | |
| model_pkg = pickle.load(f) | |
| # Modeller ve fonksiyonlar | |
| xgb_improved = model_pkg["base_models"]["xgboost_improved"][0] | |
| smart_align = model_pkg["enhancement_functions"]["smart_feature_alignment"] | |
| ensemble_fn = model_pkg["enhancement_functions"]["ensemble_predict"] | |
| unknown_boost_fn = model_pkg["enhancement_functions"]["unknown_category_boost"] | |
| dynamic_adjust_fn = model_pkg["enhancement_functions"]["dynamic_risk_adjustment"] | |
| confidence_fn = model_pkg["enhancement_functions"]["calculate_confidence"] | |
| # Ön işleme bileşenleri | |
| preprocessors = model_pkg["preprocessors"] | |
| scaler = preprocessors["scaler"] | |
| encoders = preprocessors["encoders"] | |
| bert_extractor = preprocessors["bert_extractor"] | |
| label_encoder = preprocessors["label_encoder"] | |
| feature_names = scaler.mean_.shape[0] # Özellik sayısı | |
| # Tahmin fonksiyonu | |
| def predict(cve_id, cwe_id, description, cvss_score): | |
| # Dummy girişler (GPU olmadığı için BERT çıkarımı yapılmıyor) | |
| numeric = np.zeros((1, feature_names)) | |
| bert_feats = np.zeros((1, 768)) # Dummy BERT vektörü | |
| x_input = np.hstack([numeric, bert_feats]) | |
| # Model tahminleri | |
| xgb_pred = xgb_improved.predict(x_input)[0] | |
| ensemble_pred = ensemble_fn(cvss_score, xgb_pred) | |
| final_pred = unknown_boost_fn(ensemble_pred, unknown_features=2, cvss_score=cvss_score) | |
| optimized = dynamic_adjust_fn(final_pred, cvss_score, cwe_id, len(description)) | |
| confidence = confidence_fn(2, cvss_score) | |
| # Kategori sınıflandırması | |
| category = "Düşük" if optimized <= 3 else "Orta" if optimized <= 7 else "Yüksek" | |
| return { | |
| "Tahmini Risk Skoru": round(optimized, 2), | |
| "Kategori": category, | |
| "Model Güveni": f"%{round(confidence * 100, 1)}" | |
| } | |
| # Gradio arayüzü | |
| interface = gr.Interface( | |
| fn=predict, | |
| inputs=[ | |
| gr.Text(label="CVE ID"), | |
| gr.Text(label="CWE ID"), | |
| gr.Textbox(label="Açıklama"), | |
| gr.Slider(minimum=0.0, maximum=10.0, step=0.1, label="CVSS Skoru") | |
| ], | |
| outputs="json", | |
| title="Risk Skoru Tahmin Modeli (XGBoost Optimized)", | |
| description="CVE tanımlarına göre tahmini risk skoru ve kategori" | |
| ) | |
| # Uygulamayı başlat | |
| interface.launch() |