Yapay Zeka Projelerinde Küresel Risk: AI Act ve KVKK Kıskacı
Bir mikro-SaaS veya otonom yapay zeka ajanı geliştirenlerin ilk odak noktası genellikle sunucu maliyetleri ve model gecikme süreleridir. Ancak internete açılan ve küresel ölçekte kullanıcı kabul eden bir yazılım, sınırları aştığı an dünyanın en ağır yasal mevzuatlarının radarına girer.
Türkiye’de geliştirilen bir yapay zeka aracı, Avrupa Ekonomik Alanı’ndaki tek bir kullanıcıya bile ulaştığında artık sadece KVKK’ya değil, Avrupa Birliği’nin Yapay Zeka Yasası’na (AI Act) da tabi olur. Yasanın sınır ötesi yetki kuralı nedeniyle şirketin Türkiye merkezli olması bu sorumluluğu ortadan kaldırmaz. OpenAI veya Anthropic API’lerini arkaya bağlayarak bir wrapper geliştirmek de sorumluluğu üzerinizden atmaz; son kullanıcıya karşı veri sorumlusu doğrudan projenin sahibidir.
1. AI Act Kapsamında Risk Sınıflandırması ve Sorumluluklar
Yapay Zeka Yasası, tüm yazılım sistemlerini risk seviyelerine göre kategorize eder ve her kategori için farklı teknik yükümlülükler getirir:
- Kabul Edilemez Risk: Kullanıcıların sosyal davranışlarını puanlayan, rızasız biyometrik takip yapan veya psikolojik manipülasyon içeren sistemler AB pazarında tamamen yasaktır.
- Yüksek Risk: İşe alım süreçlerinde özgeçmiş eleyen İK araçları, eğitim değerlendirme sistemleri ve finansal verilere bakarak kredi skorlaması yapan SaaS projeleri bu gruptadır. Bu kategorideki projelerin piyasaya çıkmadan önce bağımsız denetimlerden geçmesi ve AB veri tabanına kayıt olması zorunludur. Independent bir geliştirici için bu süreç teknik ve finansal olarak yönetilemez düzeydedir.
- Şeffaflık Riski: Sohbet robotları, yapay zeka destekli metin ve görsel üreticileri bu kategoridedir. Buradaki tek yasal yükümlülük net şeffaflıktır; kullanıcı etkileşimde olduğu sistemin bir yapay zeka olduğunu açıkça bilmelidir.
2. Harici API Entegrasyonlarında KVKK Madde 9 ve Veri Sızıntısı
Kullanıcıların sisteme girdi olarak gönderdiği metinlerde (prompt) ad, soyad, e-posta veya telefon gibi kişisel veriler yer alabilir. Bu verilerin yerel bir filtrelemeden geçirilmeden doğrudan harici bir LLM sunucusuna (OpenAI, Anthropic vb.) gönderilmesi, KVKK Madde 9 (Yurt Dışına Veri Aktarımı) uyarınca açık bir ihlal teşkil eder.
Projenizde bu yasal yükümlülükleri esnetmenin en güvenli yolu, veriyi sunucuya hiç taşımamaktır. Bu noktada WebGPU Tarayıcı Tabanlı Yapay Zeka Çıkarımı mimarisine geçerek modelleri tamamen kullanıcının tarayıcısında çalıştırabilir ve veri sızıntısı riskini sıfıra indirebilirsiniz.
Ayrıca, bu projelerden Google AdSense modelleriyle gelir elde etmek isteyen bağımsız geliştiricilerin, rıza yönetimi politikalarını ve çerez sözleşmelerini eş zamanlı olarak kurgulaması şarttır. Bu konudaki tüm hukuki arka planı Yazılım Geliştirmede KVKK ve GDPR: AdSense Uyumlu Sözleşme rehberimizden inceleyebilirsiniz.
3. Açık Kaynaklı Modeller (DeepSeek, Llama) ile Harici API’lerin Karşılaştırması
Yasal yükümlülükleri ve veri gizliliğini yönetirken mimari seçim projenin geleceğini belirler. Harici API’ler ile yerel sunucuda barındırılan açık kaynaklı modellerin teknik ve hukuki karşılaştırması şu şekildedir:
| Kriter | Harici API (OpenAI, Anthropic) | Yerel/Açık Kaynak (DeepSeek, Llama) |
|---|---|---|
| Veri Egemenliği | Veri sınır ötesine çıkar, KVKK Md. 9 ihlali riski yüksektir. | Veri kendi sunucunuzda kalır, yasal uyumluluk tamdır. |
| Maliyet Yapısı | Kullanım başına (Token tabanlı) değişken ve döviz odaklı maliyet. | Sabit altyapı/GPU maliyeti, ölçeklendirmede daha ekonomiktir. |
| Mühendislik Yükü | Düşük. Sadece uç noktaya (endpoint) istek atılır. | Yüksek. Sunucu optimizasyonu ve VRAM yönetimi gerektirir. |
4. Backend Mimarisinde Teknik Çözüm: Prompt Maskeleme
Uzak sunuculu bir LLM mimarisi kullanılıyorsa, kişisel verileri korumanın tek yolu backend katmanında bir maskeleme (anonimleştirme) filtresi çalıştırmaktır. Aşağıdaki Python fonksiyonu, kullanıcıdan gelen ham girdiyi harici API’ye göndermeden önce tarayarak e-posta ve telefon gibi hassas verileri dinamik etiketlerle değiştirir. Modelden yanıt döndüğünde ise bu etiketleri tekrar orijinal verilerle eşleştirerek son kullanıcıya temiz çıktı sunar:
import re
def prompt_maskeleme(ham_veri: str) -> tuple:
eposta_sablonu = r'[\w\.-]+@[\w\.-]+\.\w+'
telefon_sablonu = r'\b\d{10,11}\b'
maskelenmis_veri = ham_veri
degisim_haritasi = {}
# E-posta adreslerini tespit et ve etiketle
epostalar = re.findall(eposta_sablonu, ham_veri)
for i, eposta in enumerate(epostalar):
etiket = f"[M_EMAIL_{i}]"
degisim_haritasi[etiket] = eposta
maskelenmis_veri = maskelenmis_veri.replace(eposta, etiket)
# Telefon numaralarını tespit et ve etiketle
telefonlar = re.findall(telefon_sablonu, ham_veri)
for i, tel in enumerate(telefonlar):
etiket = f"[M_PHONE_{i}]"
degisim_haritasi[etiket] = tel
maskelenmis_veri = maskelenmis_veri.replace(tel, etiket)
return maskelenmis_veri, degisim_haritasi
# Örnek Uygulama
girdi = "Kullanici verisi: Can Yilmaz, e-posta: can@mail.com, tel: 05551112233"
temiz_prompt, harita = prompt_maskeleme(girdi)
# API'ye giden veri kişisel veri içermez
print("Giden Prompt:", temiz_prompt)
5. Node.js/Express Tabanlı Uygulamalar İçin Ara Yazılım (Middleware) Yaklaşımı
Eğer backend altyapınız Node.js ile kurgulandıysa, harici API servislerine giden ham istekleri (request) rotaya ulaşmadan hemen önce durdurup temizleyen dinamik bir middleware mimarisi kurabilirsiniz. Bu sayede ana fonksiyonlarınızın içine müdahale etmeden tüm veri akışını tek bir merkezden yasal uyumlu hale getirebilirsiniz:
const crypto = require('crypto');
function anonymizePromptMiddleware(req, res, next) {
if (!req.body || !req.body.prompt) {
return next();
}
let userPrompt = req.body.prompt;
const emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g;
// Tespit edilen hassas verileri maskele
const maskedPrompt = userPrompt.replace(emailRegex, (match) => {
const hash = crypto.createHash('sha256').update(match).digest('hex').substring(0, 8);
return `[ANON_USER_${hash}]`;
});
// İstek gövdesini güncelleyerek bir sonraki aşamaya aktar
req.body.prompt = maskedPrompt;
next();
}
module.exports = anonymizePromptMiddleware;
6. Prompt Injection Açıkları ve Sistem Güvenliği İlişkisi
AI Act, sistemlerin sadece veri gizliliğini değil, dışarıdan gelebilecek manipülasyonlara karşı direnç seviyesini de denetler. Kullanıcıların sistem talimatlarını (system prompt) ezmeye çalışarak uygulamayı kendi çıkarları doğrultusunda manipüle etmesi (Prompt Injection), yasanın “Siber Güvenlik ve Dayanıklılık” maddesi kapsamında bir zafiyet olarak kabul edilir.
Kötü niyetli girdilerle maskeleme filtrelerinin aşılması veya uygulamanın beklenmeyen çıktılar üretmeye zorlanması yasal sorumluluğu artırır. Bu nedenle, filtreleme katmanlarının sadece kişisel verileri temizlemekle kalmayıp, girdi doğrulama (input validation) mantığıyla da entegre çalışması şarttır.
7. Geliştiriciler İçin Teknik ve Hukuki Kontrol Listesi
Yapay zeka projenizi üretime (production) almadan önce yasal altyapıyı sağlamlaştırmak adına şu teknik adımları uygulayın:
- Data Opt-Out Ayarlarını Yapılandırın: Kullandığınız yapay zeka sağlayıcısının API yönetim panelinden, kullanıcı girdilerinizin model eğitimi (training) için kullanılmasını kesin olarak kapatın. Detaylı bir aksiyon planı için Yapay Zekanın Verilerinizi Eğitmesini Engelleme Rehberi yazımızdaki adımları takip edebilirsiniz.
- Çıktı Sorumluluk Reddi (Disclaimer) Metni Ekleyin: Büyük dil modellerinin ürettiği sonuçların halüsinasyon riski taşıdığını, kesin doğruluk taahhüt edilmediğini arayüzde (özellikle çıktı alanlarının hemen altında) açıkça belirtin.
- Kayıt Tutma (Logging) Süreçlerini Sınırlandırın: Kullanıcıların prompt geçmişini veritabanında şifrelenmemiş (plain text) olarak saklamaktan kaçının. Log dosyalarında kişisel veri tutulmasını engelleyin.
Sonuç
Küresel pazarda bir yazılım ürünüyle var olmak sadece temiz kod yazmaktan ibaret değildir. Geliştirilen mimarinin hukuki zırhlarla korunmaması, projenin her an yasal yaptırımlarla karşılaşmasına yol açabilir. Veri trafiğini kod seviyesinde kontrol altına almak ve filtreleme katmanları oluşturmak, projenin yasal sürdürülebilirliğini sağlayacak en temel adımdır.
