Uygulama Detayları
Platformun teknik altyapısı ve API uç noktaları hakkında bilgiler.
API Uç Noktaları
Platform dış sistemlerle entegrasyon için RESTful API uç noktaları sunar:
- GET /models
- GET /models/{id}
- GET /models/{id}/score
- POST /admin/scan
Statik Analiz Kuralları
Statik analiz motorumuz model dosyalarında belirli kalıpları arar:
- Tehlikeli fonksiyonların (eval, exec) kullanımı.
- Güvensiz serileştirme (pickle kullanımı).
- Dışa dönük ağ çağrıları yapan kodlar.
- Şüpheli dosya sistemi işlemleri.
Veritabanı Şeması
Sistem model ve skor verilerini depolamak için aşağıdaki temel şemayı kullanır:
CREATE TABLE models (
id TEXT PRIMARY KEY,
name TEXT,
owner TEXT,
hf_url TEXT,
license TEXT,
last_updated TIMESTAMP
);
CREATE TABLE scores (
model_id TEXT REFERENCES models(id),
computed_at TIMESTAMP DEFAULT now(),
overall_score NUMERIC(5,2),
PRIMARY KEY (model_id, computed_at)
);
Skorlama Fonksiyonu (Örnek)
Genel skor, farklı metriklerin ağırlıklı ortalaması alınarak hesaplanır:
def compute_overall_score(metrics):
weights = {
"provenance": 20, "usage": 20, "maintenance": 15,
"evaluation": 20, "safety": 15, "code_quality": 10
}
weighted_sum = 0
total_weight = sum(weights.values())
for k, w in weights.items():
v = metrics.get(k, 0)
weighted_sum += v * w
return round(weighted_sum / total_weight, 2)
Dinamik Testler (Genişletilmiş)
Dinamik analiz, modelin davranışını test etmek için çeşitli girdiler kullanır.