Geçen ay, Kadıköy’de küçük bir kahve dükkânında otururken önümde çok tanıdık bir sahne vardı: biri günlük tutmak istiyor ama “Bunu buluta atmak istemiyorum” diye diretiyor. Haklı da. İnsan bazen iş mailini bile paylaşırken iki kere düşünüyor; konu ruh hâli, stres, kırılganlık olunca o çekince iyice büyüyor. İşin aslı şu ki, artık her şeyin sunucuya gitmesi gerekmiyor. Bu ne anlama geliyor? Bazen verinin yerinde kalması, özelliğin kendisinden daha değerli oluyor.
Bu yazıda tarayıcı içinde çalışan, internet kapalıyken bile iş gören bir ruh sağlığı günlüğü fikrini ele alıyorum (ciddiyim). WebLLM, WebGPU. React üçlüsüyle kurulan bu yapı; kullanıcının yazdığı notları cihazdan dışarı çıkarmadan analiz etmeye çalışıyor. Yani “bulut” yok değil… ama biraz ters köşe: burada bulut dediğimiz şey başkasının bilgisayarı değil, doğrudan sizin makineniz.
Durun, bir saniye.
Neden böyle bir uygulamaya ihtiyaç var?
Bakın şimdi, çoğu yapay zekâ ürünü aynı masalın peşinden gidiyor. Kullanıcı yazıyor, veri sunucuya gidiyor, model orada çalışıyor, sonuç geri dönüyor. Pratikte temiz duruyor ama mahremiyet tarafında soru işareti bırakıyor. Mental sağlık gibi alanlarda ise soru işareti yetmiyor; bazen doğrudan fren gerekiyor — valla güzel iş çıkarmışlar —
Benzer bir gerilimi 2024’ün sonlarında Berlin’de bir startup ekibiyle konuşurken de duymuştum. Ekipteki ürün sahibi şunu söylemişti: “Kullanıcılar iç dökmek istiyor ama metnin kaybolmasından da korkuyor.” O cümle aklıma kazındı. Çünkü mesele sadece güvenlik değil; güven hissi de var. İnsan kendini güvende hissetmezse en iyi arayüz bile sönük kalıyor.
Durun, bir saniye.
Eh, Bu yüzden offline-first yaklaşımın burada ayrı bir ağırlığı var. Kullanıcı notlarını kendi cihazında saklıyor, model değerlendirmeyi yine lokal yapıyor, sonuç anında dönüyor (bu beni çok şaşırttı). Kağıt üstünde güzel duruyor; pratikte ise biraz mühendislik sabrı istiyor. Web tabanlı tarafta işler kolay değil çünkü tarayıcıyı mini bir uygulama kabına çeviriyorsunuz… hafif değil yani.
Mimari nasıl kuruluyor?
Bakın, Sistemin omurgası oldukça net. React arayüzü kullanıcı girişini topluyor, WebLLM modeli tarayıcı içinde ayağa kaldırıyor, WebGPU de işi hızlandıran donanım yolu oluyor. Ardından çıktı tekrar arayüze dönüyor (şaşırtıcı ama gerçek). Ister özet ister duygu analizi ister CBT tarzı geri bildirim olarak gösteriliyor.
Bunu biraz açayım.
Burada kritik parça TVM.js tarafı. Modeli GPU’ya uygun şekilde derleyip çalıştırmak için arka planda ciddi bir uyarlama yapılıyor. Normalde sunucuda koşacak devasa ağırlıkları tarayıcıda koşturmak kulağa garip geliyor… hatta biraz inatçı geliyor diyebilirim. Ama modern dizüstüler artık sandığınız kadar boş değil; GPU’su olan makineler epey güçlü.
graph TD
A[Not yazıldı]B[React state]
BC{WebLLM motoru}
C|WebGPU| D[Lokal model]
DE[Duygu + CBT geri bildirimi]
EB
BF[(IndexedDB)]
FG[Veri cihazdan çıkmaz]
| Bileşen | Görevi | Neden önemli? |
|---|---|---|
| React | Arayüzü yönetir | Kullanıcı deneyimini akıcı tutar |
| WebLLM | Modeli tarayıcıda çalıştırır | Lokal AI mantığını mümkün kılar |
| WebGPU | Donanım hızlandırması verir | Büyük modellerde nefes aldırır |
| IndexedDB | Kayıtları saklar | Tam offline kullanım sağlar |
Kod tarafında ilk adım ne?
Editör masasındaki notlarımı karıştırırken bunu test etmek istedim açıkçası. İstanbul’da yağmurlu bir akşamdı, Wi-Fi bilerek kapattım. Tarayıcının gerçekten ayağa kalkıp kalkmadığını görmek istedim. İlk izlenim fena değildi; model indirimi uzun sürdü ama ikinci açılışta fark bayağı hissediliyor (en azından benim deneyimim böyle)
Aşağıdaki örnekte fikir basit tutulmuş: engine nesnesi oluşturuluyor, ilerleme yüzdesi gösteriliyor ve model hazır olduğunda uygulamaya bağlanıyor. İşin püf noktası ilk yüklemede sabırlı olmak… çünkü tarayıcıya dev model shard’larını indirtmek espressoyu beklemek gibi değil, biraz daha ağır aksak. Bu konuyla ilgili PDF Dünyasında Bir Nefes: Ücretsiz ve Limitsiz Araçlar yazımıza da göz atmanızı tavsiye ederim.
Lokal motorun kurulumu
import { useState } from 'react';
import * as webllm from "@mlc-ai/web-llm";
export function useWebLLM() {
const [engine, setEngine] = useState<webllm.MLCEngine | null>(null);
const [progress, setProgress] = useState(0);
const initEngine = async () => {
const selectedModel = "Llama-3-8B-Instruct-v0.1-q4f16_1-MLC";
const engineInstance = await webllm.CreateMLCEngine(selectedModel, {
initProgressCallback: (report) => {
setProgress(Math.round(report.progress * 100));
},
});
setEngine(engineInstance);
};
return { engine, progress, initEngine };
}
Garip gelecek ama, Buradaki artı net: kullanıcı verisi üçüncü taraf sunucuya çıkmadan işlem yapılabiliyor. Eksi taraf da var tabii — bunu romantikleştirmeyeyim — büyük modeller herkesin bilgisayarında pürüzsüz koşmuyor. Eski laptop’ta deneyince hayal kırıklığı yaşamanız çok normal olabilir. Bu konuyla ilgili Butterfly CSS: 2026’da Dikkat Çeken Hafif Bir Seçenek yazımıza da göz atmanızı tavsiye ederim.
CBT mantığı burada nasıl işe yarıyor?
Cognitive Behavioral Therapy yani CBT yaklaşımı bu projede süslü bir etiket gibi durmuyor; tam tersine ürünün davranışını şekillendiriyor. Ama dikkat edin: burada kimse terapist rolünü tam anlamıyla üstlenmemeli. Açık konuşayım, sınırlar iyi çizilmezse ürün yanlış beklenti yaratır.
Sistem genelde kullanıcının günlüğündeki ifadeleri alıp bilişsel çarpıtmalara bakıyor: ya hep ya hiç düşünme mi var, felaketleştirme mi baskın, yoksa olayları kişiselleştirme eğilimi mi? Bu tarz sınıflandırma aslında metni klinik hale getirmek için değil; daha çok kullanıcının kendi düşünce desenini görmesine yardım etmek için işe yarıyor.
“En iyi kullanım senaryosu teşhis koymak değil; düşünce kalıbını görünür kılmak.” Bu ayrım önemli çünkü mental sağlık alanında teknoloji ne kadar parlak olursa olsun sınırı geçmemeli.
Prompt tasarımı neden kritik?
Hani, Kötü prompt ile iyi model bile sırıtabilir… bunu yıllardır görüyorum zaten. Mesela kullanıcı ifadesine fazla dramatik cevap veren sistemler var; birkaç cümlede kendini “uzman” sanmaya başlıyorlar. Halbuki burada gereken şey sakinlik, açıklık ve yönlendirme.
Bilmem anlatabiliyor muyum, Ankara’da geçen yıl yaptığım küçük bir denemede benzer prompt’u finans notlarına uyarlamıştım ve şaşırtıcı biçimde aynı sorun çıktı: model bazen fazla yorum yapıyordu. Sonra talimatları sıkılaştırınca toparladı. Demek ki mesele sadece model seçmek değil; nasıl konuşturduğunuz da belirleyici oluyor. Daha fazla bilgi için Dosya Paylaşımı Güvenli mi? 2026’da Bilmeniz Gerekenler yazımıza bakabilirsiniz. Anthropic kendi çiplerini mi tasarlıyor? Asıl mesele başka yazımızda bu konuya da değinmiştik.
Peki gizlilik gerçekten ne kadar güçlü?
Tam offline demek kağıt üzerinde kulağa kusursuz geliyor ama birkaç gerçek dünya detayı var. Birincisi, ilk model indirimi sırasında ağ bağlantısı gerekebilir; ikincisi bazı cache katmanları işletim sistemine göre farklı davranabilir; üçüncüsü de yerel depolama şifrelenmeden bırakılırsa risk tamamen bitmez (ciddiyim) Bu konuyla ilgili CI, On Bir Dili Görmezse İşiniz Yarıda Kalır yazımıza da göz atmanızı tavsiye ederim.
- Daha güvenli senaryo: Notlar IndexedDB içinde şifrelenir ve yalnızca cihazda tutulur.
- Daha zayıf senaryo: Tarayıcı profili paylaşılmıştır veya disk düzeyinde koruma yoktur. — bunu es geçmeyin
- Büyük kurum senaryosu: Yerel kullanım iyi olsa bile politika katmanı gerekir (loglama kapalı mı, yedekleme nasıl olacak?).
Küçük bir startup için bu mimari hızlı prototip çıkarır; özellikle demo aşamasında etkileyicidir. Kurumsal tarafta ise tek başına yeterli olmaz çünkü denetim izi, erişim politikası. Veri yaşam döngüsü gibi konular hemen gündeme gelir. Yani evet, güzel fikir… ama biraz daha pişmesi lazım diyeceğim noktalar da var.
Nerelerde güçlü, nerelerde tökezler?
Bence en büyük güç yanıt süresiyle mahremiyetin aynı pakette gelmesi. Kullanıcı internete bağlı olmasa bile geçmiş notlara bakabiliyor, duygu değişimini görebiliyor, günlük ritmini takip edebiliyor. Bu özellikle uçakta, metroda ya da bağlantının zayıf olduğu yerlerde bayağı iş görüyor.
Zor taraf ise performans ve cihaz çeşitliliği. Yeni nesil MacBook’ta hoş çalışan şey eski Windows dizüstüsünde sürünebilir. Ayrıca mobil tarafta durum daha da hassas; browser API desteği parçalı olduğu için herkese aynı deneyimi vermek kolay değil.
Kime uygun, kime pek uygun değil?
Eğer bireysel kullanıcıysanız ve verinizi dışarı göndermek istemiyorsanız bu yapı tam size göre olabilir (inanın bana). Eğer küçük ekipseniz hızlıca ürün çıkarıp test edebilirsiniz (ben de ilk duyduğumda şaşırmıştım). Ama hedefiniz regülasyonlu sektörlerse — sağlık hizmeti veren kurumlar mesela — olay yalnızca teknik çözüm olmaktan çıkar, hukuk. Uyumluluk kısmı ağır basar.
Sahada denenince neler fark ediyor?
Şöyle söyleyeyim, Bunu kendi laptop’umda çalıştırdığımda ilk dikkatimi çeken şey bekleme psikolojisi oldu. İlginç bir şey. Bekleyiş uzayınca insanın beklentisi de değişiyor; ilk açılışta biraz sabrediyorsunuz, sonra ikinci açılışta “haa tamam” diyorsunuz. Tam klasik önbellek sihri. Hatta benzer etkiyi geçen ay İzmir’de düzenlenen küçük bir hackathon’da da gördüm; ekip arkadaşlarından biri modeli kapatıp açınca süre farkına inanamadı.
Bence, Aynı testte günlük girdisine kısa, sert cümleler yazınca analiz daha keskin çıktı; uzun metinlerde ise özet kalitesi yükseldi. Bu bana şunu düşündürdü: yerel LLM’ler sadece altyapı projesi değil, aynı zamanda kullanıcı alışkanlığını da şekillendiriyor. Yani ürün sizi eğitmeye başlıyor, siz ürünü değil.
Kodla anlatırsak…
const ANALYZE_PROMPT = (entry) => `
You are a compassionate mental health assistant.
Identify cognitive distortions.
Offer supportive CBT-style feedback.
Keep the response gentle and practical.
Journal entry:
${entry}
`;
Bazıları buna bakıp “Bu kadar mı?” diyebilir. Aslında — hayır dur, daha doğrusu evet — temel fikir sade tutulursa hata payı azalır. Fazla karmaşık prompt zincirleri kurunca lokal ortamda gecikme artabiliyor; hele browser içinde her ekstra tür pahalıya geliyor. Basit başlayıp sonra genişletmek çoğu zaman daha akıllıca (en azından benim deneyimim böyle)
Benden kısa değerlendirme: iyi fikir, sert gerçekler
Açık söyleyeyim, bu proje beni heyecanlandırdı ama körü körüne alkışlayacağım türden de değil. Mahremiyet odaklı olması çok değerli; yine de üretime çıkacaksa şifreleme, model boyutu optimizasyonu ve hata toleransı mutlaka sıkılaşmalı. Şimdilik güçlü bir prototip gibi duruyor; sağlam ürün olmak için birkaç tür daha pişmesi şart.
Neyse uzatmayalım: tarayıcı içindeki offline AI fikri artık “demo numarası” olmaktan çıkmış durumda. Doğru tasarlanırsa gerçek problem çözüyor. Mesela kişisel günlük, ruh hali takibi ve hassas içeriklerde bunun yeri bence büyüyecek. E tabi nihai karar neredeyse her zaman kullanıcıya ait olmalı; sistem yardım eder, hükmetmez.
Sıkça Sorulan Sorular
WebLLM tam olarak nedir?
WebLLM büyük dil modellerini doğrudan tarayıcı içinde çalıştırmaya yarayan açık kaynaklı bir altyapıdır. Model ağırlıkları local cache’e iner ve işlem mümkün olduğunca cihaz üzerinde olur.
Tamamen internet olmadan çalışır mı?
Evet, ilk indirme sonrası temel kullanım internet olmadan devam edebilir។ Ancak başlangıçta model dosyalarının indirilmesi gerekir; yani sıfır bağlantıyla ilk kurulum beklememelisiniz.
Mental sağlık uygulaması için güvenilir mi?
Kısmen evet ama sınırı doğru çizmek şartıyla. Bu tür araçlar destekleyici olabilir ancak teşhis koyma veya kriz müdahalesi yerine geçmemeli. En doğrusu onları rehber yardımcı olarak konumlamakdır’tir/?>
Neden cloud yerine local AI tercih edilsin?
Mahremiyet ana sebepdir: Verinin dış servislere gitmemesi birçok kullanıcı için rahatlatıcı olur. Bir diğer avantaj da gecikmenin azalmasıdır; çıktı doğrudan yerel makinede üretilir.
Kaynaklar İleri Okuma࿐⁉️
Bu içerik işinize yaradı mı?
Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.



