İlk hafızalı yapay zeka ajanını oluştur
Ajan vs chatbot: fark ne?
Bir chatbot mesajlara bağımsız olarak yanıt verir. Her konuşma birbirinden izole edilmiştir. Dün adını söylediysen, bugün bilmez.
Bir ajanın 3 ekstra özelliği vardır:
1. Kalıcı hafıza: seni oturumlar arasında hatırlar
2. Araçlar: harici API'leri çağırabilir (Google'da arama, e-posta gönderme, kod çalıştırma)
3. Planlama: karmaşık bir görevi adımlara bölebilir
Bu kursta (1)'e odaklanacağız: kalıcı hafıza. Araçlar ve planlama ayrı kurslardır.

Temel hafıza mimarisi
Ajanın senin hakkında saklaması gerekenler:
- Bildirimsel gerçekler: "Pedro Python ile çalışıyor", "şekersiz kahve seviyor", "São Paulo'da yaşıyor"
- Tercihler: "resmi Türkçe ile yanıtla", "kısa açıklamalar, süsleme olmadan"
- Etkileşim geçmişi: son N diyaloğun özeti
- Geçici bağlam: ŞU AN ne yaptığın (oturum sonunda siliniyor)
Depolama şablonu:
`
memoria_usuario = {
"facts": [
{"text": "Pedro Python ile çalışıyor", "pinned": False},
{"text": "kısa yanıtları tercih ediyor", "pinned": True}
],
"summary_last_10_sessions": "Kullanıcı TLS, API'ler ve kimlik doğrulama hakkında bilgi edindi...",
"preferences": {"response_language": "tr-TR", "tone": "technical"}
}`
Brainiall bunu nasıl yapıyor?
Backend'imiz kalıcı hafızayı zaten uyguluyor. Şunları yapabilirsin:
1. Sohbet kenar çubuğundaki 🧠 simgesine tıkla
2. Yapay zekanın senin hakkında öğrendiği gerçeklerin listesini gör
3. Önemli gerçekleri sabitle (asla unutmasın)
4. Düzenle veya sil
5. Toggle ile hafızayı devre dışı bırak
Dahili olarak şunları kullanıyoruz:
- PostgreSQL JSONB: gerçekleri kullanıcı bazında depolamak için
- Eviction policy: sabitlenmemiş maksimum 50 gerçek, en eskiler önce çıkar
- Extraction: her 10 mesajda bir, LLM konuşmayı okur ve onay için yeni gerçekler önerir
- Retrieval: yanıtlamadan önce ilgili gerçekleri arar ve prompt'a ekler
API üzerinden ajanını oluştur
Minimalist Python örneği:
`python
import httpx
BASE = "https://api.brainiall.com"
KEY = "brnl-xxxxx"
def chat(message, user_memory):
# Inject memory as system prompt context
memory_text = "\n".join(f"- {f}" for f in user_memory["facts"])
system = f"Sen kişisel bir asistansın. Kullanıcı hakkında:\n{memory_text}"
r = httpx.post(
f"{BASE}/v1/chat/completions",
json={
"model": "claude-sonnet-4-6",
"messages": [
{"role": "system", "content": system},
{"role": "user", "content": message}
]
},
headers={"Authorization": f"Bearer {KEY}"}
)
return r.json()["choices"][0]["message"]["content"]
# Kullanım
memory = {"facts": ["Pedro Python ile çalışıyor", "şekersiz kahve seviyor"]}
print(chat("Bu sabah ne içtim?", memory))
# → "Muhtemelen şekersiz bir kahve içtin, değil mi?"`
Bu temel bir ajandır. Otomatik extraction (LLM okur ve yeni gerçekleri çıkarır) ve retrieval (yalnızca ilgili gerçekleri ekle) eklemek kodu ~100 satıra taşır.
Yaygın tuzaklar
- Şişirilmiş hafıza: eviction olmadan hafıza büyür ve token limitini aşar
- Çelişkili gerçekler: "Pedro kahve seviyor" + "Pedro kahveyi bıraktı" — hangisi geçerli?
- Gizlilik: kullanıcı her zaman görebilmeli, düzenleyebilmeli ve silebilmeli
- Yanlış kapsam: iş hafızaları kişisel sohbetlere sızmamalı
- Drift: prompt belirsizse LLM sahte gerçekler üretebilir; kalıcı hale getirmeden önce her zaman doğrula

Kullanım senaryoları
- Kişiselleştirilmiş öğretmen: hangi konularda uzman olduğunu veya zorlandığını hatırlar
- Sanal diyetisyen: öğün geçmişi, tercihler, kısıtlamalar
- Kariyer koçu: hedefleri, son başarıları, gelişim alanlarını hatırlar
- Yazma asistanı: tarzın, tercih ettiğin ton, tekrarlayan temalar
- Dahili teknik destek: önceki biletleri, kullandığın sistemleri hatırlar
Hemen dene
Brainiall sohbetinde bir konuşma aç, kendin hakkında bir şeyler anlat, kapat ve ertesi gün yeni bir konuşma aç — ajan hatırlar. Kenar çubuğundaki 🧠 simgesiyle etkinleştir/devre dışı bırak. 29 TL Pro planında tam hafıza var; ücretsiz planda hafıza 10 gerçekle sınırlıdır.