Yapay Zekâ & Otonom Sistemler
Bulut Faturası ve Veri Sızıntısı Olmadan: Bilgisayarında Çalışan %100 Yerel Otonom Ajan Mimarisi
Manus ve benzeri otonom web ajanları aylık 200 dolarlık abonelikler ve veri gizliliği riskleri getiriyor. Yerel akıl yürütme modelleri (DeepSeek-R1 / Qwen Coder), Playwright tarayıcı otomasyonu ve izole sandbox ile tamamen kendi donanımınızda çalışan ajan kurma rehberi.
2025 ve 2026 yıllarında yapay zekâ dünyasında en büyük kırılma, basit sohbet botlarından çok adımlı görevleri kendi kendine tamamlayabilen 'otonom ajanlara' (Autonomous Agents) geçişle yaşandı. İnternette araştırma yapan, formları dolduran, kod yazıp terminalde çalıştıran Manus, Devin ve benzeri sistemler bu dalganın öncüsü oldu. Ancak bu sistemleri gerçek projelerde kullanmaya çalıştığınızda kapıda iki devasa engel belirir: Gizlilik ve Maliyet.
Şirketinizin özel kaynak kodunu, API anahtarlarını veya müşteri verilerini kapalı kaynaklı üçüncü parti bulut sunucularına göndermek kurumsal güvenlik politikalarına doğrudan aykırıdır. Üstelik bir ajanın karmaşık bir görevi bitirmek için 50-100 kez API çağırması (function calling döngüsü), aylık 200 doları aşan faturalar demektir. Çözüm ise net: Ajanın tüm beynini, tarayıcısını ve çalışma alanını kendi yerel donanımınıza taşımak.
Yerel Otonom Ajanın 4 Ana Katmanı
- 1. Yerel Muhakeme Çekirdeği (Reasoning Core): Ollama veya llama.cpp üzerinde çalışan, düşünme (Chain-of-Thought) yeteneğine sahip açık ağırlıklı modeller (DeepSeek-R1, Qwen 2.5 Coder veya Llama 3.3).
- 2. Başsız Tarayıcı ve DOM Motoru (Headless Browser): Playwright veya Puppeteer ile web sayfalarında gezinen, tıklayan ve bilgileri toplayan tarayıcı ortamı.
- 3. Güvenli Kod Yürütme Alanı (Sandbox): Modelin ürettiği Python ve Bash betiklerini işletim sistemine zarar vermeden çalıştırıp çıktıyı yakalayan izole süreç.
- 4. Otonom ReAct Döngüsü: Düşün (Thought) -> Eyleme Geç (Action) -> Sonucu Gözlemle (Observation) -> Hatayı Düzelt (Correction) döngüsünü yöneten kontrol mantığı.
Çekirdek ReAct Döngüsü Nasıl Çalışır?
Otonom ajanın sırrı sihirli bir yapay zekâda değil; yerel model ile işletim sistemi araçları arasında kurulan sıkı geri besleme döngüsündedir. Aşağıda, yerel bir Ollama modelini komut satırı ve Python yürütücüsüne bağlayan sadeleştirilmiş bir ajan çekirdeği yer almaktadır:
import json
import subprocess
import urllib.request
# Yerel Ollama veya llama.cpp uç noktası
OLLAMA_URL = "http://localhost:11434/api/generate"
MODEL_NAME = "qwen2.5-coder:14b"
def run_local_command(command: str) -> str:
"""Terminal komutunu yerel sandbox içinde güvenli şekilde çalıştırır."""
try:
res = subprocess.run(
command, shell=True, capture_output=True, text=True, timeout=30
)
return res.stdout if res.returncode == 0 else f"HATA: {res.stderr}"
except Exception as e:
return f"Çalıştırma Hatası: {str(e)}"
def agent_think_and_act(goal: str):
system_prompt = """Sen yerel bir otonom ajansın. Kullanıcının hedefine ulaşmak için adım adım düşün.
Cevabını SADECE aşağıdaki JSON formatında ver:
{
"thought": "Ne yapman gerektiğine dair kısa düşüncen",
"action": "bash" veya "finish",
"command": "Çalıştırılacak terminal komutu (varsa)"
}"""
history = f"GÖREV: {goal}\n"
for step in range(5):
payload = json.dumps({
"model": MODEL_NAME,
"system": system_prompt,
"prompt": history,
"stream": False,
"format": "json"
}).encode("utf-8")
req = urllib.request.Request(OLLAMA_URL, data=payload, headers={"Content-Type": "application/json"})
with urllib.request.urlopen(req) as resp:
data = json.loads(resp.read().decode())
decision = json.loads(data["response"])
print(f"[Adım {step+1}] Düşünce: {decision['thought']}")
if decision.get("action") == "finish":
print(">> Görev başarıyla tamamlandı!")
break
# Komutu çalıştır ve çıktıyı modelin hafızasına besle
output = run_local_command(decision.get("command", ""))
print(f"Çıktı Özeti: {output[:120]}...")
history += f"\nKomut: {decision.get('command')}\nSonuç: {output}\n"Donanım ve VRAM Bütçelemesi Rehberi
Tamamen yerel bir ajan çalıştırmak için süper bilgisayarlara ihtiyacınız yoktur. Modern 4-bit ve 8-bit kuantizasyon (GGUF) teknikleri sayesinde standart tüketici donanımlarında mükemmel sonuçlar alınabilir:
| Mevcut VRAM | Önerilen Model | Kuantizasyon | Kullanım Amacı |
|---|---|---|---|
| 8 GB VRAM | Qwen 2.5 Coder 7B | Q4_K_M | Hızlı kod yazımı, dosya arama ve temel komut satırı görevleri |
| 16 GB VRAM | DeepSeek-R1-Distill-Qwen 14B | Q5_K_M | Karmaşık mantık kurma, çok adımlı hata ayıklama ve web kazıma |
| 24 GB VRAM (RTX 3090/4090) | Qwen 2.5 Coder 32B / DeepSeek-R1 32B | Q4_K_M | Üst düzey otonom planlama, mimari refactoring ve sıfır halüsinasyon |
| 64 GB+ (Apple Silicon M-Series) | Llama 3.3 70B / Qwen 72B | Q4_K_M | Kurumsal düzeyde tam yerel ajan filosu çalıştırma |
Web Ajanlarında Token Tasarrufu: Görsel Yerine Accessibility Tree
Bulut tabanlı ajanların en büyük hatası, her web sayfasının tam ekran görüntüsünü (screenshot) alıp multimodal modele göndermesidir. Bu yöntem her tıklamada binlerce token harcar ve yerel GPU'ları anında tıkar. Oysa akıllı yerel ajanlar Playwright üzerinden sayfanın 'Erişilebilirlik Ağacını' (Accessibility Tree - axtree) okur.
Ekrandaki butonların, giriş kutularının ve linklerin metinsel hiyerarşisi çekildiğinde, 2 MB'lık bir görsel yerine yalnızca 150 token'lık saf metin işlenir. Bu sayede yerel model saliseler içinde 'Arama Kutusuna tıkla ve X yaz' kararını verebilir.
Yerel Ajan Güvenliği: Kendi Sistemini Korumak
- İzole Çalışma Dizini: Ajanın sadece belirlediğiniz proje klasörü içinde (
./workspace) yazma yetkisi olmalıdır. Kök dizinlere erişim sınırlandırılmalıdır. - Yıkıcı Komutları Engelleyin:
rm -rf,format,ddgibi sistem komutları regex tabanlı bir filtre katmanından geçmeden asla yürütülmemelidir. - Zaman Aşımı (Timeout) Zorunluluğu: Sonsuz döngüye giren veya yanıt vermeyen komutlar için maksimum 30 saniyelik zorunlu
SIGTERMkoruması ekleyin. - Docker veya DevContainer Kullanımı: Mümkünse ajanı ana makinede değil, tek komutla sıfırlanabilen hafif bir Alpine/Ubuntu Docker konteyneri içinde çalıştırın.