---
title: "Yerel Yapay Zekam 162 Python Paketi Uydurdu. Her Şeyi Sıfırdan Çalıştırdım ve 161'i Geri Geldi."
url: https://blog.edumints.com/yerel-yapay-zekam-162-python-paketi-uydurdu-her-seyi-sifirdan
category: "LLM"
date: 2026-11-02T09:05:41.906Z
publisher: Edumints Blog
lang: tr-TR
source_name: "dev.to"
source_url: https://dev.to/soumyadeepdey/my-local-ai-invented-162-python-packages-i-reran-everything-from-scratch-and-161-came-back-4j73
---

# Yerel Yapay Zekam 162 Python Paketi Uydurdu. Her Şeyi Sıfırdan Çalıştırdım ve 161'i Geri Geldi.

Dizüstü bilgisayarımdaki üç küçük açık ağırlıklı modele 1.199 kısa Python betiği yazdırdım ve önerdikleri her `pip install` komutunu PyPI üzerinden kontrol ettim. 1.410 kurulum önerisinden 212'si (%15,0) daha önce kimsenin yayınlamadığı paketleri içeriyordu. Niş ve az bilinen görevlerde bu oran **%30,0** seviyesine çıktı. Ardından her şeyi silip çalışmayı sıfırdan tekrar çalıştırdım. **162 hayalet paket adından 161'i geri geldi** ve tek bir yeni hayalet paket bile ortaya çıkmadı.

Bunun üzerine, kayıt defterine (registry) sormadan önce Wi-Fi kapalıyken bile bir hayalet paket adını tanıyabilmesi için **TabPFN** modelini eğittim (AUROC **0.975**) ve kodlama ajanım ile kurulum işlemi arasına bir **Claude Code** kancası (hook) yerleştirdim. Tüm çalışma üzerinde tekrar test edildiğinde, 212 hayalet kurulumun tamamını engelledi ve 1.165 gerçek paketten yalnızca 13'ünü yanlışlıkla durdurdu. Bu koruma katmanının tek bir görevi var: ajanınız ile `pip install` arasında durmak, hiç yazılmamış paketlere "hayır" demek ve gerçek paketlerin **1,7 saniye** içinde geçişine izin vermek.

## Özet (TL;DR)

- **Nedir:** **Phantom Packages** bir araştırma, tespit aracı ve koruma kalkanıdır. Üç yerel model (`gemma4:e4b`, `qwen3:4b-instruct`, `phi4-mini:3.8b`), Ollama üzerinden 200 kodlama görevinde ikişer kez çalıştırıldı. **TabPFN-3.5** modeli paket adlarını çevrimdışı puanlar; `phantom check`, Claude Code kancası ve GitHub Action ise hayalet kurulumları durdurur.
- **Hayalet paket sayısı:** Kurulum önerilerinin %15,0'ı gerçekte yok (%95 GA 11,9–18,4). Oranlar `gemma4` için %8,1, `phi4-mini` için %16,7 ve `qwen3` için %20,7. Günlük görevlerde %1,7 iken niş görevlerde %30,0'dır.
- **TabPFN sonucu:** Görülmemiş istemlerde (prompts) **0.975**, eğitilmediği bir modelde **0.978**, hiç görmediği adlarda **0.948** AUROC skoruna ulaştı. Ayrıca test edilen en iyi kalibre edilmiş yöntemdir (kalibrasyon hatası gradient boosting için 0.056 iken burada **0.015**). Kayıt defteri sorgusu yapmadan, yalnızca paket adından ve nasıl üretildiğinden yola çıkarak çalışır.
- **Koruma kalkanı:** Bir hayalet paket **2,2 saniyede** engellenir, gerçek bir kurulum **1,7 saniyede** geçer. Wi-Fi kapalıyken bile hayaletlerin %90,1'ini yakalar.
- **Dürüst değerlendirme:** Gradient boosting, her veri bölümünde %90 duyarlılıkta (recall) kesinlik (precision) açısından TabPFN'i geçmektedir ve ücretli bir barındırılan modelin öz-kontrolü (self-check), görülmemiş adlarda onunla berabere kalmaktadır.
- **Her şey açık kaynak:** Kod, değerlendirme, grafikler ve isimlerden arındırılmış veri seti `T-RexBytes/phantom-packages` deposundadır. Tek bir komut bu yazıdaki tüm sayıları yeniden üretir.

## 30 Saniyede 3 Bulgu ve Geliştiriciler İçin Çıkarımlar

- **Hayaletler planlanmış gibi geri döner:** Yeniden çalıştırmada, 1.199 çıktının 1.183'ü kelimesi kelimesine aynıydı (%98,7) ve 162 hayalet addan 161'i geri döndü. Rastgele bir halüsinasyon gürültüdür; ancak tekrarlanabilir bir halüsinasyon saldırganlar için açık bir hedeftir (*slopsquatting*).
- **Model, siz ne istediyseniz onu adlandırır:** Hayalet adların %56,5'i (ve birden fazla kez ortaya çıkan 40 hayaletin 27'si) görevdeki kelimelerin birbirine yapıştırılmasından oluşur. İstemi okuyabiliyorsanız, hayalet paketi tahmin edebilirsiniz; bir saldırgan da aynısını yapabilir.
- **"Bu paket var mı?" sorusu modele sorulacak kötü bir sorudur:** `gemma4`, 271 gerçek paketin 143'ünün var olmadığını söyledi. Barındırılan bir model ise 161 hayalet paketin 60'ının gerçek olduğunu iddia etti. Geliştiriciler doğrulama için LLM'lere güvenmek yerine deterministik koruma kancaları kullanmalıdır.

## Hiçbir Şey Kurulmadı, Hiçbir İsim Paylaşılmadı

Çalışma sırasında bile modellerin önerdiği hiçbir paket kurulmadı; yalnızca PyPI üst veri (metadata) istekleri yapıldı ve hiçbir isim tescil edilmedi. Saldırganlara hedef göstermemek adına hayalet isimler metinden, veri setinden ve grafiklerden uzak tutuldu. Açık dosyalar anonimleştirilmiş kimlikler kullanır ve bir isim sızarsa CI derlemeyi durdurur.



---

Bu konuyu derinlemesine öğrenmek isterseniz: [AI Tedarik Zinciri Güvenliği](https://edumints.com/kesfet/ai-altyapi-guvenligi-model-supply-chain-ve-artifac-ja5f) modülüne göz atın.

---

**Kaynak:** dev.to (https://dev.to/soumyadeepdey/my-local-ai-invented-162-python-packages-i-reran-everything-from-scratch-and-161-came-back-4j73)
**Yayıncı:** [Edumints Blog](https://blog.edumints.com) · Alıntılarken bu URL'ye bağlantı verin: https://blog.edumints.com/yerel-yapay-zekam-162-python-paketi-uydurdu-her-seyi-sifirdan
