CrewAI Ajanlarına Kalıcı Bellek Ekleme: Detaylı Bir Rehber
Yapay zeka ajanları, özellikle CrewAI gibi güçlü orkestrasyon araçları kullanılarak geliştirildiğinde, karmaşık görevleri başarıyla yerine getirebilir. Ancak, çoğu ajan varsayılan olarak “unutkan”dır; yani her etkileşimden sonra önceki bağlamı kaybederler. Bu durum, daha akıllı, kişiselleştirilmiş ve tutarlı deneyimler sunmak için ajanlara kalıcı bellek eklemenin kritik önemini ortaya koymaktadır. Bu makalede, CrewAI ajanlarınıza kalıcı bellek entegrasyonunun neden önemli olduğunu, nasıl yapılacağını ve en iyi uygulama stratejilerini adım adım inceleyeceğiz.
CrewAI ve Ajan Belleği Neden Önemli?
CrewAI, iş akışlarını otomatikleştirmek ve karmaşık görevleri çözmek için işbirliği yapan birden fazla yapay zeka ajanını bir araya getiren güçlü bir çerçevedir. Bu ajanlar, belirli roller üstlenir, araçlar kullanır ve birbirleriyle iletişim kurarak ortak bir hedefe ulaşmaya çalışır. Ancak, ajanların “bellek” kapasitesi, genel performanslarını ve kullanıcı deneyimini doğrudan etkileyen temel bir faktördür.
CrewAI Nedir?
CrewAI, büyük dil modelleri (LLM’ler) tarafından desteklenen özerk ajanların bir ekip halinde çalışmasını sağlayan bir orkestrasyon aracıdır. Her ajan bir role, bir hedefe ve belirli araçlara sahip olabilir. Bu yapı, karmaşık projelerin daha modüler ve yönetilebilir bir şekilde ele alınmasına olanak tanır. Örneğin, bir “Araştırmacı Ajan”, bir “Yazar Ajan” ve bir “Editör Ajan” bir araya gelerek kapsamlı bir makale yazabilir.
Belleğin Ajan Performansına Etkisi
Bellek, bir ajanın geçmiş etkileşimlerini, öğrenmelerini ve edindiği bilgileri saklayabilme yeteneğidir. Belleğe sahip bir ajan, önceki konuşmaları hatırlayarak daha tutarlı yanıtlar verebilir, kullanıcı tercihlerini öğrenebilir ve zaman içinde daha akıllı hale gelebilir. Bellek, ajanın bağlamı korumasını sağlayarak gereksiz tekrarları önler ve daha verimli bir iletişim akışı sunar.
Mevcut Durum: Belleksiz Ajanların Sınırlılıkları
Varsayılan olarak, CrewAI ajanları genellikle her etkileşimde yeni bir başlangıç yapar. Bu, her sorguda aynı bilgilerin yeniden sağlanması gerektiği anlamına gelir. Belleksiz ajanlar, uzun süreli sohbetlerde veya çok adımlı görevlerde bağlamı kaybedebilir, bu da kullanıcı deneyimini olumsuz etkiler ve ajanın verimliliğini düşürür. Bu sınırlılık, özellikle kişiselleştirme ve öğrenme gerektiren uygulamalar için büyük bir engel teşkil eder.
Kalıcı Bellek Kavramı ve Avantajları
Kalıcı bellek, yapay zeka ajanlarının sadece mevcut oturumda değil, farklı oturumlar ve zaman dilimleri arasında da bilgiyi saklayabilmesini sağlayan bir mekanizmadır. Bu, ajanların daha insan benzeri bir etkileşim sunmasına ve zamanla daha yetenekli hale gelmesine olanak tanır.
Geçici ve Kalıcı Bellek Farkı
Geçici bellek (Short-term memory), ajanın mevcut etkileşim veya oturum sırasında hatırladığı bilgidir. Genellikle LLM’nin bağlam penceresi içinde tutulur ve oturum sona erdiğinde kaybolur. Örneğin, bir sohbet botunun son birkaç mesajı hatırlaması geçici belleğe örnektir.
Kalıcı bellek (Persistent memory) ise, ajanın oturumlar arasında veya uzun vadede sakladığı bilgidir. Bu bilgiler genellikle bir veritabanında (SQL, NoSQL, vektör veritabanı vb.) depolanır ve ajanın daha sonraki etkileşimlerde erişebilmesi için kalıcı hale getirilir. Kullanıcı tercihleri, geçmiş görev sonuçları veya öğrenilen kurallar kalıcı bellekte saklanabilir.
Kalıcı Belleğin Temel Faydaları
- Bağlam Koruma: Ajan, önceki etkileşimleri hatırlayarak daha tutarlı ve ilgili yanıtlar verebilir.
- Kişiselleştirme: Kullanıcı tercihlerini ve geçmiş davranışlarını öğrenerek daha kişiselleştirilmiş deneyimler sunar.
- Verimlilik: Aynı bilgilerin tekrar tekrar sağlanmasını önleyerek etkileşimleri hızlandırır ve ajanın daha verimli çalışmasını sağlar.
- Öğrenme ve Gelişme: Ajanın zamanla yeni bilgiler edinmesine ve bu bilgileri gelecekteki görevlerde kullanmasına olanak tanır.
- Karmaşık Görev Yönetimi: Çok adımlı ve uzun soluklu görevlerde ajanın bağlamı kaybetmeden ilerlemesini sağlar.
Kullanım Senaryoları
Kalıcı bellek, müşteri hizmetleri botlarından kişisel asistanlara, proje yöneticisi ajanlardan içerik üretimi ekiplerine kadar birçok alanda kritik öneme sahiptir. Örneğin, bir müşteri hizmetleri ajanı, geçmiş şikayetleri veya satın alma geçmişini hatırlayarak daha hızlı ve doğru destek sağlayabilir. Bir proje yöneticisi ajanı, projenin ilerleyişini, tamamlanan görevleri ve ekip üyelerinin rollerini hatırlayarak daha etkin bir koordinasyon sağlayabilir.
CrewAI’da Bellek Yönetimi Seçenekleri
CrewAI, ajanların bellek yönetimi için doğrudan entegre bir kalıcı bellek katmanı sunmasa da, mevcut kütüphaneler ve veritabanları aracılığıyla bu yeteneği eklemek oldukça mümkündür.
CrewAI’ın Dahili Bellek Mekanizmaları
CrewAI, ajanlar arasındaki anlık iletişimi ve görev bağlamını yönetmek için dahili mekanizmalara sahiptir. Ancak bu mekanizmalar genellikle oturum bazlıdır ve kalıcı depolama sağlamaz. Bir ajanın geçmişteki görevleri veya uzun süreli öğrenimleri için harici bir bellek çözümüne ihtiyaç duyulur. CrewAI’ın memory=True parametresi, ajanın mevcut görev akışındaki kısa süreli bağlamı hatırlamasına yardımcı olsa da, bu kalıcı bir depolama çözümü değildir.
Harici Veritabanları ile Entegrasyon
CrewAI ajanlarına kalıcı bellek eklemenin en yaygın ve etkili yolu, harici bir veritabanı kullanmaktır. Seçenekler oldukça geniştir:
- NoSQL Veritabanları (MongoDB, Redis): Hızlı okuma/yazma işlemleri ve esnek şema yapıları sayesinde ajanların geçmiş etkileşimlerini, tercihleri veya görev durumlarını depolamak için idealdir. Özellikle Redis, hızlı anahtar-değer depolama ve önbellekleme yetenekleri ile öne çıkar.
- SQL Veritabanları (PostgreSQL, MySQL, SQLite): Yapılandırılmış verileri depolamak için uygundur. Ajanların belirli kullanıcılarla ilgili profil bilgilerini, geçmiş kararlarını veya öğrenilen kuralları saklamak için kullanılabilir.
- Vektör Veritabanları (Chroma, Pinecone, Weaviate): Özellikle ajanın “uzun süreli belleği” için kritiktir. Ajanın geniş bir bilgi tabanından ilgili bilgileri almasını sağlar. Gömülü (embedding) edilmiş metinleri depolayarak anlamsal arama yapılmasına olanak tanır.
Özel Bellek Çözümleri Geliştirme
Daha spesifik ihtiyaçlar için, geliştiriciler kendi özel bellek çözümlerini tasarlayabilirler. Bu, mevcut veritabanları üzerine katmanlar ekleyerek veya tamamen özel bir depolama mekanizması geliştirerek yapılabilir. Örneğin, bir ajan için özel bir “bilgi grafiği” oluşturmak veya belirli olayları tetikleyen bir olay günlüğü sistemi kurmak gibi yaklaşımlar benimsenebilir.
Bellek Entegrasyonu İçin Gerekli Adımlar
CrewAI ajanlarınıza kalıcı bellek eklemek, belirli bir plan ve adımlar gerektirir. Bu bölümde, entegrasyon sürecinin temel aşamalarını inceleyeceğiz.
Ön Koşullar ve Gerekli Araçlar
Başlamadan önce aşağıdaki ön koşulların karşılandığından emin olun:
- Python Ortamı: Geliştirme için Python 3.9+ kurulu olmalı.
- CrewAI Kurulumu:
pip install crewaikomutu ile CrewAI yüklü olmalı. - LLM API Anahtarı: OpenAI, Anthropic veya benzeri bir LLM sağlayıcısından API anahtarına sahip olmalısınız.
- Veritabanı Kurulumu: Seçtiğiniz veritabanının (örneğin Redis) sunucusu kurulu ve erişilebilir olmalı.
- İlgili Kütüphaneler: Veritabanı ile etkileşim kurmak için gerekli Python kütüphaneleri (örneğin
redis-py,langchain‘in bellek modülleri).
Veritabanı Seçimi ve Kurulumu (Örn: Redis)
Bu makalede Redis’i örnek olarak kullanacağız, çünkü hızlı ve hafif bir çözümdür. Redis’i yerel makinenize kurmak için işletim sisteminize uygun adımları izleyebilirsiniz (örneğin Ubuntu’da sudo apt install redis-server veya Docker ile docker run --name my-redis -p 6379:6379 -d redis).
Redis sunucusu çalıştıktan sonra, Python’dan erişmek için redis kütüphanesini kurmanız gerekir:
pip install redis
CrewAI Yapılandırması
Bellek entegrasyonu, genellikle CrewAI ajanlarının veya görevlerinin tanımlandığı yerde yapılır. LangChain'in bellek modülleri, CrewAI ile kolayca entegre edilebilir bir yapı sunar. Bu modüller, farklı veritabanı türleri için bellek sınıfları sağlar.
Pratik Bir Uygulama: Redis ile Kalıcı Bellek Ekleme
Şimdi, CrewAI ajanımıza Redis kullanarak nasıl kalıcı bellek ekleyeceğimize dair pratik bir örnek üzerinden ilerleyelim.
Redis Kurulumu ve Temel Kullanımı
Redis sunucunuzun çalıştığını varsayarak, Python ile temel bir bağlantı kuralım:
import redis
# Redis bağlantısı
r = redis.Redis(host='localhost', port=6379, db=0)
# Veri yazma
r.set('kullanici:1:tercih', 'teknoloji')
r.set('kullanici:2:tercih', 'sanat')
# Veri okuma
tercih1 = r.get('kullanici:1:tercih')
print(f"Kullanıcı 1 tercihi: {tercih1.decode('utf-8')}")
# Belleği temizleme (örnek)
# r.delete('kullanici:1:tercih')
CrewAI Ajanını Bellekle Yapılandırma
CrewAI ajanlarına bellek eklemek için genellikle LangChain'in bellek sınıflarını kullanırız. ConversationBufferWindowMemory gibi sınıflar, geçmiş konuşmaları belirli bir pencere içinde tutar. Kalıcı bellek için ise ChatMessageHistory ve bir depolama mekanizması (örneğin Redis) kullanılır.
İlk olarak gerekli kütüphaneleri kuralım:
pip install crewai langchain langchain-community langchain-openai redis
Ardından, bir CrewAI ajanı için Redis tabanlı kalıcı bellek oluşturalım:
import os
from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferWindowMemory
from langchain_community.chat_message_histories import RedisChatMessageHistory
# OpenAI API anahtarınızı ayarlayın
os.environ["OPENAI_API_KEY"] = "sk-..." # Kendi API anahtarınızı buraya girin
# LLM modelini tanımla
llm = ChatOpenAI(model_name="gpt-4o", temperature=0.7)
# Redis bağlantı URL'si
REDIS_URL = "redis://localhost:6379/0"
# Kalıcı bellek fonksiyonu
def get_persistent_memory(session_id: str):
return RedisChatMessageHistory(session_id=session_id, url=REDIS_URL)
# Örnek bir ajan oluşturalım
# Ajanın memory=True olması, CrewAI'ın dahili kısa süreli belleğini kullanır.
# Kalıcı bellek için ise bu belleği kendi ChatMessageHistory'mizle beslememiz gerekir.
# Ajan tanımı (şimdilik memory=True kullanmıyoruz, çünkü harici bellek yöneteceğiz)
researcher = Agent(
role='Araştırmacı',
goal='Kullanıcının ilgi alanına göre detaylı bilgi toplamak',
backstory='Konular hakkında derinlemesine araştırma yapan deneyimli bir araştırmacı.',
verbose=True,
allow_delegation=False,
llm=llm
)
# Görev tanımı
research_task = Task(
description=(
"Kullanıcının son ilgi alanına göre en son teknoloji haberlerini bul."
"Eğer kullanıcı daha önce bir ilgi alanı belirtmişse, onu dikkate al."
"Aksi takdirde, genel teknoloji haberlerini araştır."
),
expected_output='Kullanıcının ilgi alanına göre özetlenmiş en son teknoloji haberleri.',
agent=researcher
)
# Crew oluşturma ve kalıcı bellek entegrasyonu
# CrewAI'da doğrudan ajanlara LangChain'in RedisChatMessageHistory'sini entegre etmek
# biraz daha dolaylı olabilir. Genellikle, LangChain agent'larında bu daha doğrudan yapılır.
# CrewAI'da, ajanın araçları veya görevleri aracılığıyla bu belleğe erişim sağlanabilir.
# Ancak, CrewAI 0.28.0 sürümü ve sonrası ile ajanlara bellek nesnesi doğrudan atanabilir.
# CrewAI 0.28.0+ ile bellek entegrasyonu
# Ajanı oluştururken memory=True ve bir memory_handler sağlamak.
# Ancak, RedisChatMessageHistory'yi doğrudan bir memory_handler olarak atamak
# CrewAI'ın beklediği Memory tipine uymayabilir.
# Bunun yerine, memory=True ile ajanın kendi ConversationBufferWindowMemory'sini kullanıp,
# bu belleği Redis'e yazıp okuyacak bir mekanizma kurmak daha yaygındır.
# Daha pratik bir yaklaşım: Ajanın aracını kullanarak belleğe erişim
# VEYA CrewAI 0.28.0+ ile Agent sınıfının memory parametresini kullanmak.
# CrewAI'da bellek kullanımı için genellikle ConversationBufferWindowMemory kullanılır
# ve bu belleğin arkasına bir mesaj geçmişi (ChatMessageHistory) eklenebilir.
# CrewAI'ın doğrudan Redis entegrasyonu için, LangChain'in bellek modüllerini
# ajanınızın araçları veya özel bir callback mekanizması aracılığıyla kullanabilirsiniz.
# Basit bir Redis tabanlı bellek kullanımı örneği (doğrudan CrewAI ajanına entegrasyon değil,
# ancak CrewAI ajanı tarafından kullanılabilecek bir bellek sistemi)
# Kullanıcı oturumu için bir ID
user_session_id = "user_123"
user_memory = get_persistent_memory(user_session_id)
# Belleğe geçmiş bir mesaj ekleyelim (simülasyon)
user_memory.add_user_message("Daha önce uzay araştırmaları ile ilgilendiğimi belirtmiştim.")
user_memory.add_ai_message("Hatırlıyorum, uzay araştırmaları hakkında bilgi toplamıştım.")
# Ajanın bu belleği kullanmasını sağlayacak bir araç veya görev mekanizması
# Bu, CrewAI'ın doğrudan bellek entegrasyonu için bir ara çözüm olabilir.
# Ajanın görev tanımında veya araçlarında bu bellekten okuma/yazma işlemleri yapılabilir.
# Örnek: Ajanın görevinde bellekten okuma
# research_task.description = (
# f"Kullanıcının oturum ID'si '{user_session_id}' için geçmiş ilgi alanlarını bellekte ara. "
# f"Eğer bir ilgi alanı bulunursa, o konuda en son haberleri bul. "
# f"Aksi takdirde, genel teknoloji haberlerini araştır."
# )
# CrewAI'ın 0.28.0+ sürümünde Agent sınıfına memory_handler parametresi eklenmiştir.
# Bu parametre, LangChain'in BaseChatMessageHistory arayüzünü uygulayan bir nesne bekler.
# Bu sayede RedisChatMessageHistory doğrudan kullanılabilir.
researcher_with_memory = Agent(
role='Bellekli Araştırmacı',
goal='Kullanıcının geçmiş ilgi alanlarını hatırlayarak detaylı bilgi toplamak',
backstory='Geçmiş etkileşimleri öğrenen ve bunlara göre araştırma yapan deneyimli bir araştırmacı.',
verbose=True,
allow_delegation=False,
llm=llm,
memory=True, # CrewAI'ın dahili kısa süreli belleğini etkinleştir
# persistent_memory_handler=get_persistent_memory(user_session_id) # Bu parametre 0.28.0+ sürümünde mevcut
)
# Eğer CrewAI sürümünüz 0.28.0'dan eskiyse, bellek yönetimi için araçlar kullanmanız gerekebilir.
# Örneğin, bir "Bellek Okuyucu" ve "Bellek Yazıcı" aracı tanımlayabilirsiniz.
# Güncel CrewAI (0.28.0+) ile doğrudan entegrasyon
# Bu kod parçası, CrewAI'ın gelecekteki sürümlerinde veya 0.28.0+ sürümünde
# persistent_memory_handler'ı desteklediği varsayımıyla yazılmıştır.
# Şu anki stabil sürümde (0.27.x) bu özellik henüz tam olarak entegre olmayabilir.
# En güncel dokümantasyonu kontrol etmek önemlidir.
# Eğer persistent_memory_handler doğrudan desteklenmiyorsa, CrewAI ajanının
# araçlarına bellek okuma/yazma yeteneği kazandırmak daha doğru bir yaklaşımdır.
# Örnek: Bir "Bellek Okuyucu" aracı tanımlama
# from crewai_tools import Tool
#
# def read_from_memory(session_id: str, key: str):
# r = redis.Redis(host='localhost', port=6379, db=0)
# value = r.get(f"{session_id}:{key}")
# return value.decode('utf-8') if value else "Bellekte bilgi bulunamadı."
#
# def write_to_memory(session_id: str, key: str, value: str):
# r = redis.Redis(host='localhost', port=6379, db=0)
# r.set(f"{session_id}:{key}", value)
# return f"'{key}' belleğe yazıldı."
#
# memory_reader_tool = Tool(
# name="Bellek Okuyucu",
# func=lambda key: read_from_memory(user_session_id, key),
# description="Kullanıcının geçmiş ilgi alanlarını veya tercihlerini bellekte okur."
# )
#
# memory_writer_tool = Tool(
# name="Bellek Yazıcı",
# func=lambda key, value: write_to_memory(user_session_id, key, value),
# description="Kullanıcının yeni ilgi alanlarını veya öğrenilen bilgileri belleğe yazar."
# )
#
# researcher_with_tools = Agent(
# role='Bellekli Araştırmacı',
# goal='Kullanıcının geçmiş ilgi alanlarını hatırlayarak detaylı bilgi toplamak',
# backstory='Geçmiş etkileşimleri öğrenen ve bunlara göre araştırma yapan deneyimli bir araştırmacı.',
# verbose=True,
# allow_delegation=False,
# llm=llm,
# tools=[memory_reader_tool, memory_writer_tool] # Ajanın araçlarına bellek araçlarını ekle
# )
#
# research_task_with_memory = Task(
# description=(
# "Önce 'Bellek Okuyucu' aracını kullanarak kullanıcının son ilgi alanını oku. "
# "Eğer bir ilgi alanı bulunursa, o konuda en son haberleri bul ve özetle. "
# "Aksi takdirde, genel teknoloji haberlerini araştır. "
# "Araştırma sonucunda yeni bir ilgi alanı tespit edersen, 'Bellek Yazıcı' aracını kullanarak bunu belleğe kaydet."
# ),
# expected_output='Kullanıcının ilgi alanına göre özetlenmiş en son teknoloji haberleri.',
# agent=researcher_with_tools
# )
#
# crew_with_memory = Crew(
# agents=[researcher_with_tools],
# tasks=[research_task_with_memory],
# process=Process.sequential,
# verbose=2
# )
#
# result = crew_with_memory.kickoff()
# print(result)
Yukarıdaki kod örneği, CrewAI'ın mevcut esnekliğini gösterir. Eğer persistent_memory_handler parametresi doğrudan desteklenmiyorsa (CrewAI'ın sürümüne bağlı olarak), ajanlarınıza özel araçlar ekleyerek Redis gibi harici bir veritabanıyla etkileşim kurmalarını sağlayabilirsiniz. Bu sayede ajanlar, görevlerini yerine getirirken geçmiş bilgileri okuyabilir ve yeni bilgileri depolayabilir.
Bellek İçeriğini Görüntüleme
Ajanınızın belleğinin doğru çalıştığını doğrulamak için Redis CLI veya Python kodu aracılığıyla Redis sunucusundaki verileri kontrol edebilirsiniz:
redis-cli
KEYS "user_123:*" # Oturum ID'nize göre anahtarları listeleyin
GET "user_123:ilgi_alani" # Belirli bir anahtarın değerini alın
Bu, ajanınızın belleğe ne yazdığını ve neyi hatırladığını görmenizi sağlar.
Bellek Stratejileri ve En İyi Uygulamalar
Kalıcı bellek entegrasyonu sadece teknik bir süreç değil, aynı zamanda stratejik bir tasarımdır. Belleğin nasıl kullanılacağı, ajanın performansını ve güvenilirliğini doğrudan etkiler.
Kısa Süreli ve Uzun Süreli Bellek Yönetimi
- Kısa Süreli Bellek (Context Window): LLM'lerin sınırlı bağlam penceresini etkin kullanın. Sadece mevcut görev için en alakalı bilgileri tutun. Gereksiz bilgileri filtreleyin.
- Uzun Süreli Bellek (Persistent Storage): Kullanıcı tercihleri, geçmiş görev sonuçları, öğrenilen kurallar gibi kalıcı olması gereken bilgileri depolayın. Vektör veritabanları, geniş bilgi tabanlarından anlamsal arama yaparak uzun süreli belleği zenginleştirmek için idealdir.
- Hibrit Yaklaşım: Kısa süreli belleği (LLM'nin bağlam penceresi) anlık etkileşimler için kullanırken, uzun süreli belleği geçmiş bilgileri ve genel öğrenmeleri depolamak için kullanın. Ajan, uzun süreli bellekten ilgili parçaları alıp kısa süreli belleğe yükleyerek daha zengin bir bağlam oluşturabilir.
Bellek Temizleme ve Güncelleme Politikaları
Belleğin büyümesini yönetmek ve güncel kalmasını sağlamak önemlidir:
- TTL (Time-To-Live): Bazı bellek öğeleri için bir yaşam süresi belirleyin. Örneğin, belirli bir süre sonra güncelliğini yitirecek geçici verileri otomatik olarak silin.
- Bellek Sıkıştırma/Özetleme: Uzun sohbet geçmişlerini veya detaylı görev sonuçlarını özetleyerek bellekte daha az yer kaplamalarını sağlayın. Bu özetler, ajanın ana noktaları hatırlamasına yardımcı olurken depolama maliyetini düşürür.
- Güncelleme Mekanizmaları: Kullanıcı tercihleri değiştiğinde veya yeni bilgiler edinildiğinde bellek içeriğini güncelleyin. Ajanın öğrenme döngüsünün bir parçası olarak bellek güncelleme adımları tanımlayın.
Bellek Güvenliği ve Performans İpuçları
- Veri Şifreleme: Hassas verileri bellekte depolarken şifreleme kullanın.
- Erişim Kontrolü: Belleğe sadece yetkili ajanların veya sistemlerin erişebildiğinden emin olun.
- Performans Optimizasyonu: Bellek okuma/yazma işlemlerinin hızlı olduğundan emin olun. Özellikle vektör veritabanlarında indeksleme ve sorgu optimizasyonları önemlidir.
- Hata Yönetimi: Bellek erişiminde veya yazma işlemlerinde oluşabilecek hataları (örneğin veritabanı bağlantı sorunları) ele alın.
Sorun Giderme ve İpuçları
Kalıcı bellek entegrasyonu sırasında karşılaşabileceğiniz yaygın sorunlar ve çözüm önerileri.
Sık Karşılaşılan Bellek Sorunları
- Bellek Kaybı: Ajanın önceki etkileşimleri hatırlamaması. Çözüm: Bellek entegrasyon adımlarını kontrol edin, oturum ID'sinin doğru kullanıldığından ve veritabanına yazma işlemlerinin başarılı olduğundan emin olun.
- Performans Düşüşü: Bellek okuma/yazma işlemlerinin yavaşlaması. Çözüm: Veritabanı performansını kontrol edin, indeksleme stratejilerini gözden geçirin, gereksiz verileri temizleyin veya bellek sıkıştırma uygulayın.
- Yanlış Bilgi Hatırlama: Ajanın alakasız veya yanlış bilgileri hatırlaması. Çözüm: Bellek temizleme ve güncelleme politikalarını gözden geçirin. Belleğe yazılan verilerin doğruluğunu ve alakalılığını artırın.
Hata Ayıklama Yaklaşımları
- Günlük Kayıtları: Bellek okuma/yazma işlemlerini ve ajan kararlarını detaylı olarak günlüğe kaydedin. Bu, sorunun nerede başladığını anlamanıza yardımcı olur.
- Veritabanı Kontrolü: Doğrudan veritabanını (Redis CLI gibi) kullanarak verilerin doğru şekilde depolanıp depolanmadığını kontrol edin.
- Adım Adım İnceleme: Kodunuzu adım adım çalıştırarak bellek işlemlerinin beklendiği gibi gerçekleşip gerçekleşmediğini izleyin.
Performans Optimizasyonu
- Önbellekleme: Sık erişilen bellek parçalarını uygulama tarafında önbelleğe alarak veritabanı yükünü azaltın.
- Asenkron İşlemler: Bellek yazma gibi kritik olmayan işlemleri asenkron olarak gerçekleştirerek ajanın yanıt süresini iy