Takip et

Cloudflare ile Claude’a Ücretsiz Kalıcı Bellek Nasıl Kazandırılır?

Yapay zeka modelleriyle etkileşim kurarken, çoğu zaman her yeni mesajın bağımsız bir sohbet başlatmasıyla karşılaşırsınız.

Cloudflare ile Claude’a Ücretsiz Kalıcı Bellek Nasıl Kazandırılır?

Yapay zeka modelleriyle etkileşim kurarken, çoğu zaman her yeni mesajın bağımsız bir sohbet başlatmasıyla karşılaşırsınız. Peki ya yapay zeka asistanınızın önceki konuşmaları hatırlamasını, tercihlerinizi öğrenmesini ve size özel, kesintisiz bir deneyim sunmasını isteseydiniz? İşte bu noktada kalıcı bellek (persistent memory) devreye giriyor. Bu makalede, Anthropic’in güçlü yapay zeka modeli Claude’a, Cloudflare’ın ücretsiz katmanını kullanarak nasıl sıfır maliyetle kalıcı bellek kazandırabileceğinizi adım adım inceleyeceğiz. Bu sayede, sohbet botlarınız daha akıllı, daha kişisel ve çok daha etkili hale gelecek.

Yapay Zeka Modellerinde Kalıcı Bellek Neden Önemli?

Günümüzün yapay zeka (YZ) modelleri, özellikle büyük dil modelleri (LLM’ler) gibi gelişmiş sistemler, inanılmaz derecede karmaşık ve yeteneklidir. Ancak bu modellerin çoğu, doğaları gereği “durum bilgisi olmayan” (stateless) bir yapıya sahiptir. Bu, her bir API çağrısının veya her bir etkileşimin, model için tamamen yeni bir başlangıç olduğu anlamına gelir. Bir kullanıcıyla on dakika boyunca sohbet ettikten sonra, bir sonraki mesajınızda model, önceki diyalogdan hiçbir şeyi hatırlamayabilir. Bu durum, özellikle uzun soluklu konuşmalar, kişiselleştirilmiş deneyimler veya kullanıcı tercihlerini öğrenmeyi gerektiren uygulamalar için büyük bir kısıtlama yaratır.

Bir an düşünün: bir müşteri hizmetleri temsilcisiyle konuştuğunuzu ve her seferinde aynı bilgileri baştan anlatmak zorunda kaldığınızı hayal edin. Ya da bir eğitim asistanının, her oturumda sizin hangi konuları çalıştığınızı, nerede zorlandığınızı unuttuğunu… Bu durumlar, kullanıcı deneyimini ciddi şekilde düşürür ve yapay zeka teknolojisinin potansiyelini sınırlar. Kalıcı bellek, tam da bu sorunu çözmek için tasarlanmıştır. YZ modelinin, geçmiş konuşmaları, kullanıcı tercihlerini, öğrenilen bilgileri veya belirli bir oturuma ait tüm verileri güvenli bir şekilde depolamasını ve ihtiyaç duyulduğunda bu bilgilere erişmesini sağlar.

Kalıcı belleğin sağladığı faydalar saymakla bitmez. Öncelikle, bağlam yönetimi çok daha etkili hale gelir. Model, geçmiş etkileşimleri dikkate alarak daha alakalı ve tutarlı yanıtlar üretebilir. Bu, kullanıcıların aynı bilgileri tekrar tekrar sağlamak zorunda kalmamasını, dolayısıyla zaman ve çaba tasarrufu yapmasını sağlar. İkincil olarak, kişiselleştirme imkanları artar. Model, kullanıcının geçmişteki tercihlerini, ilgi alanlarını veya özel bilgilerini hatırlayarak, onlara özel içerikler, öneriler veya çözümler sunabilir. Bu da kullanıcı memnuniyetini ve bağlılığını önemli ölçüde artırır. Örneğin, bir alışveriş asistanı, daha önce satın aldığınız ürünleri veya beğendiğiniz kategorileri hatırlayarak size daha isabetli tavsiyelerde bulunabilir.

Ayrıca, kalıcı bellek, öğrenme ve adaptasyon süreçlerini destekler. Model, her etkileşimden edindiği bilgiyi depolayarak zamanla daha akıllı ve daha yetenekli hale gelebilir. Bu, modelin sürekli olarak kendini geliştirmesine ve kullanıcıların değişen ihtiyaçlarına daha iyi yanıt vermesine olanak tanır. Özellikle Claude gibi gelişmiş bir modelle çalışırken, onun karmaşık akıl yürütme yeteneklerini tam anlamıyla kullanabilmek için ona geçmişe dönük bilgilere erişim sağlamak kritik öneme sahiptir. Bu sayede Claude, sadece anlık verilere dayanmak yerine, zengin bir geçmiş bağlamından yararlanarak daha derinlemesine ve anlamlı konuşmalar yapabilir. Bu makalede sunacağımız ücretsiz çözüm, bu değerli yeteneği, bütçenizi zorlamadan elde etmenizi sağlayacak.

Cloudflare’ın Ücretsiz Katmanı ve Sunabileceği Çözümler Nelerdir?

Cloudflare, dünya genelinde milyonlarca web sitesi ve uygulamanın performansını, güvenliğini ve güvenilirliğini artıran bir dizi hizmet sunan devasa bir ağ altyapısıdır. Ancak Cloudflare’ın sundukları sadece CDN (İçerik Dağıtım Ağı) ve DDoS korumasından ibaret değildir. Özellikle geliştiriciler için sunduğu “edge computing” (kenar bilişim) ve sunucusuz (serverless) çözümler, yenilikçi ve maliyetsiz uygulamalar geliştirmek için benzersiz fırsatlar sunar.

Cloudflare’ın en dikkat çekici hizmetlerinden biri, bu makalede Claude için kalıcı bellek oluşturmak için kullanacağımız Cloudflare Workers‘tır. Workers, geliştiricilerin JavaScript, TypeScript veya WebAssembly kullanarak kodlarını Cloudflare’ın dünya genelindeki yüzlerce veri merkezinde, yani kullanıcılarınıza coğrafi olarak en yakın noktalarda çalıştırmasına olanak tanır. Bu “kenar bilişim” yeteneği, uygulamalarınızın gecikme süresini (latency) önemli ölçüde azaltır ve performansını artırır. En önemlisi, Cloudflare Workers’ın oldukça cömert bir ücretsiz katmanı bulunur. Bu katman, günlük belirli sayıda istek (genellikle 100.000 istek) ve CPU süresi (genellikle 50 ms) gibi limitlerle gelir ki, bu limitler küçük ve orta ölçekli projeler veya kişisel denemeler için fazlasıyla yeterlidir.

Workers’ın yanında, kalıcı bellek ihtiyacımızı karşılayacak temel bileşen ise Cloudflare KV (Key-Value) hizmetidir. KV, anahtar-değer çiftleri şeklinde veri depolamanıza olanak tanıyan, dağıtık ve ultra hızlı bir veri deposudur. Basit anahtarlar (örneğin, bir kullanıcı ID’si) ve bunlara karşılık gelen değerler (örneğin, kullanıcının sohbet geçmişi veya tercihleri) depolamak için idealdir. KV’nin en büyük avantajlarından biri, Workers ile sorunsuz entegrasyonu ve yine ücretsiz katmanının olmasıdır. Genellikle belirli bir depolama alanı (örneğin, 1 GB) ve günlük okuma/yazma işlemleri için belirli limitler sunar. Bu limitler, çoğu kalıcı bellek ihtiyacını sıfır maliyetle karşılamak için yeterlidir. KV, yüksek erişilebilirlik ve düşük gecikme süresi sunarak, yapay zeka modelinizin bellek verilerine anında erişmesini sağlar.

Cloudflare ekosisteminde KV ve Workers dışında başka değerli hizmetler de bulunmaktadır:

  • Cloudflare D1: SQLite uyumlu, sunucusuz bir ilişkisel veritabanıdır. Eğer daha yapılandırılmış veri depolama ihtiyacınız varsa veya SQL sorguları yapmanız gerekiyorsa D1 ideal bir seçenek olabilir. Ancak D1’in ücretsiz katmanı KV kadar geniş olmayabilir ve henüz daha yeni bir hizmettir.
  • Cloudflare R2: S3 uyumlu bir nesne depolama hizmetidir. Büyük dosyaları, görselleri veya çok uzun sohbet geçmişlerini depolamak için kullanılabilir. KV’nin aksine, R2 daha çok büyük blob (ikili büyük nesne) verileri için tasarlanmıştır ve yine ücretsiz katmanı mevcuttur.

Bu makalede Claude için kalıcı bellek çözümünü oluştururken, basitliği, hızı ve cömert ücretsiz katmanı nedeniyle Cloudflare Workers ve KV kombinasyonuna odaklanacağız. Bu iki hizmetin birleşimi, yapay zeka modelinize dinamik, kişiselleştirilmiş ve durum bilgisi olan bir deneyim kazandırmanın en maliyetsiz ve etkili yollarından birini sunar. Cloudflare’ın küresel ağı sayesinde, belleğe erişim dünyanın neresinde olursa olsun hızlı ve güvenilir olacaktır. Bu da kullanıcılarınız için kesintisiz ve akıcı bir yapay zeka etkileşimi anlamına gelir.

Claude’un Bellek İhtiyacını Anlamak: Bağlam Yönetimi ve Durum Bilgisi

Claude gibi büyük dil modelleri (LLM’ler), inanılmaz derecede gelişmiş doğal dil işleme yeteneklerine sahiptir. İnsan dilini anlayabilir, üretebilir, özetleyebilir ve hatta karmaşık akıl yürütme görevlerini yerine getirebilirler. Ancak, bu modellerin temel çalışma prensibi, “bağlam penceresi” (context window) adı verilen belirli bir girdi uzunluğuyla sınırlıdır. Bu pencere, modelin tek seferde işleyebileceği metin miktarını ifade eder ve genellikle binlerce token (kelime veya karakter parçacığı) ile ölçülür. Claude’a bir soru sorduğunuzda, model bu soruyu ve ona eşlik eden tüm diğer metinleri (örneğin, önceki konuşmaların bir kısmı) bu bağlam penceresine alır ve bu pencere içindeki bilgilere dayanarak bir yanıt üretir.

Sorun şu ki, bu bağlam penceresi sınırlıdır. Bir sohbet uzadıkça veya modelin hatırlaması gereken bilgiler arttıkça, pencere dolar. Model, pencereye sığmayan eski bilgileri “unutmak” zorunda kalır. Bu durum, modelin durum bilgisi olmayan (stateless) yapısından kaynaklanır; yani her yeni etkileşim, önceki etkileşimlerden bağımsız olarak değerlendirilir. Kullanıcı deneyimi açısından bu, sohbetin tutarlılığını kaybetmesine, modelin tekrarlayıcı sorular sormasına veya kullanıcının daha önce verdiği bilgileri tekrar talep etmesine yol açabilir.

Claude’un bellek ihtiyacını anlamak, bu bağlam penceresi sınırlamasını aşmakla ilgilidir. Modelin, yalnızca anlık bağlam penceresindeki bilgilere değil, aynı zamanda geçmişte gerçekleşen tüm etkileşimlere ve öğrenilen bilgilere de erişebilmesini sağlamak istiyoruz. Bu, “uzun süreli bellek” (long-term memory) kavramını devreye sokar. Uzun süreli bellek, modelin anlık bağlam penceresine sığmayan, ancak gelecekteki etkileşimler için kritik olabilecek bilgileri depolamasına olanak tanır.

Peki, bu bellek nasıl yönetilmeli?

  • Sohbet Geçmişini Depolama: En temel yaklaşım, kullanıcının tüm sohbet geçmişini bir veri deposunda saklamaktır. Her yeni mesaj geldiğinde, bu geçmiş alınır, yeni mesaj eklenir ve Claude’a gönderilir. Claude, bu genişletilmiş bağlamı kullanarak daha tutarlı yanıtlar üretebilir. Ancak, sohbet geçmişi çok uzadığında, Claude’un bağlam penceresi yine de dolabilir veya API maliyetleri artabilir (çünkü daha fazla token işlenir).
  • Özetleme (Summarization): Daha gelişmiş bir strateji, sohbet geçmişini periyodik olarak özetlemektir. Uzun bir konuşma belirli bir noktaya geldiğinde, Claude’dan veya başka bir LLM’den, o ana kadar olan konuşmanın kısa bir özetini çıkarmasını isteyebilirsiniz. Bu özet, gelecekteki etkileşimler için “bellek” olarak depolanır ve orijinal uzun sohbet geçmişinin yerine Claude’a gönderilir. Bu, bağlam penceresini daha verimli kullanır ve token maliyetlerini düşürür.
  • Anahtar Bilgileri Çıkarma: Sohbet geçmişinden sadece kritik anahtar bilgileri (örneğin, kullanıcının adı, tercihleri, daha önce sorduğu önemli sorular) çıkarıp depolamak da bir yaklaşımdır. Bu bilgiler, her etkileşimde Claude’a “sistem mesajı” veya “kullanıcı profili” olarak gönderilebilir.
  • Vektör Veritabanları (Vector Databases): Daha karmaşık senaryolarda, sohbet geçmişini veya diğer ilgili belgeleri “gömme” (embeddings) adı verilen sayısal vektörlere dönüştürüp vektör veritabanlarında depolayabilirsiniz. Bir kullanıcı yeni bir soru sorduğunda, bu sorunun vektörünü oluşturur ve veritabanında anlamsal olarak en alakalı geçmiş bellek parçalarını ararsınız. Bu parçalar daha sonra Claude’un bağlam penceresine eklenir. Bu yöntem, çok büyük bilgi tabanları için idealdir, ancak Cloudflare’ın ücretsiz katmanında doğrudan bir vektör veritabanı hizmeti bulunmamaktadır; bu, üçüncü taraf bir hizmetin entegrasyonunu gerektirebilir.

Bu makalede, Cloudflare KV’nin basit ve etkili doğası nedeniyle, öncelikle sohbet geçmişini doğrudan depolama ve yönetme stratejisine odaklanacağız. Bu yaklaşım, Claude’un temel bellek ihtiyacını sıfır maliyetle karşılamak için yeterli ve kolayca uygulanabilir bir çözümdür. Daha karmaşık özetleme veya anahtar bilgi çıkarma stratejileri, bu temel yapının üzerine kolayca inşa edilebilir.

Adım Adım Claude Belleği Oluşturma: Cloudflare Workers ve KV Kullanımı

Şimdi pratik kısma geçelim! Claude’a ücretsiz kalıcı bellek kazandırmak için Cloudflare Workers ve KV’yi nasıl kullanacağımızı adım adım göreceğiz. Bu süreç, bir Cloudflare Worker oluşturmayı, bir KV depolama alanı bağlamayı ve bu ikisini Claude API ile entegre etmeyi içerir.

Cloudflare Workers Projesi Başlatma

Öncelikle, Cloudflare Workers projenizi oluşturmanız gerekiyor. Bunun için Wrangler CLI‘yı (Cloudflare Workers komut satırı aracı) yüklemiş olmanız gerekmektedir. Eğer yüklü değilse, npm install -g wrangler komutuyla kurabilirsiniz.

Yeni bir Worker projesi oluşturmak için terminalinizde şu komutu çalıştırın:

wrangler generate my-claude-memory-worker

Bu komut, my-claude-memory-worker adında yeni bir dizin oluşturacak ve içine temel Worker şablon dosyalarını yerleştirecektir. Dizine girdikten sonra, projenizin temel yapısı hazır olacaktır.

Cloudflare KV Depolama Alanı Kurulumu

Şimdi, sohbet geçmişini depolamak için bir Cloudflare KV namespace (ad alanı) oluşturmamız gerekiyor. Bu ad alanı, Worker'ınızın erişeceği bir anahtar-değer deposu olacaktır.

Proje dizininizdeyken aşağıdaki komutu çalıştırın:

wrangler kv namespace create "CLAUDEMEMORY"

Bu komut size iki bilgi verecektir: bir "id" ve bir "preview_id". Bu ID'leri kopyalayın. Şimdi, Worker projenizin kök dizinindeki wrangler.toml dosyasını açın ve aşağıdaki satırları ekleyin (ID'leri kendi oluşturduğunuz ID'lerle değiştirin):

[[kv_namespaces]]
binding = "CLAUDEMEMORY" # Worker kodunuzda KV'ye erişmek için kullanacağınız değişken adı
id = "YOUR_KV_NAMESPACE_ID" # Yukarıdaki komuttan aldığınız id
preview_id = "YOUR_KV_NAMESPACE_PREVIEW_ID" # Yukarıdaki komuttan aldığınız preview_id (geliştirme ortamı için)

Bu yapılandırma, Worker'ınızın CLAUDEMEMORY adıyla KV depolama alanına erişmesini sağlayacaktır.

Worker ile Claude API Entegrasyonu ve Bellek Yönetimi

Şimdi asıl işi yapacak olan Worker kodunu yazalım. src/index.js (veya src/worker.js) dosyasını açın ve içeriğini aşağıdaki gibi güncelleyin. Bu kod, gelen isteği işleyecek, KV'den geçmiş sohbeti alacak, Claude API'ye gönderecek ve yanıtı KV'ye geri kaydedecektir.

Claude API anahtarınızı (CLAUDE_API_KEY) Cloudflare Workers ortam değişkenlerine eklemeniz gerekmektedir. Bunu Wrangler CLI ile yapabilirsiniz:

wrangler secret put CLAUDE_API_KEY

Ardından API anahtarınızı girmeniz istenecektir.

İşte src/index.js dosyasının içeriği:


export default {
  async fetch(request, env, ctx) {
    if (request.method !== 'POST') {
      return new Response('Method Not Allowed', { status: 405 });
    }

    const { messages, user_id } = await request.json();

    if (!user_id || !messages) {
      return new Response('Missing user_id or messages in request body', { status: 400 });
    }

    // 1. KV'den geçmiş sohbeti al
    let conversationHistory = [];
    const historyString = await env.CLAUDEMEMORY.get(user_id);
    if (historyString) {
      conversationHistory = JSON.parse(historyString);
    }

    // 2. Yeni mesajları geçmişe ekle
    // Claude API'si "user" ve "assistant" rollerini bekler.
    // Gelen 'messages' dizisi genellikle { role: "user", content: "..." } şeklinde tek bir mesaj içerir.
    // Eğer Claude'a doğrudan gönderilecek bir formatta geliyorsa, direkt kullanabiliriz.
    // Basitlik için, buraya sadece kullanıcının son mesajını ekleyelim.
    // Gerçek bir uygulamada, 'messages' dizisini doğru bir şekilde birleştirmeniz gerekebilir.
    const userMessage = messages[messages.length - 1]; // Son mesajı alıyoruz

    // Claude API'sinin beklediği formatta mesajları birleştir
    const claudeMessages = [
      ...conversationHistory,
      userMessage
    ];

    // 3. Claude API'ye isteği gönder
    const claudeResponse = await fetch('https://api.anthropic.com/v1/messages', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'x-api-key': env.CLAUDE_API_KEY,
        'anthropic-version': '2023-06-01' // Claude API versiyonu
      },
      body: JSON.stringify({
        model: 'claude-3-opus-20240229', // Kullanmak istediğiniz Claude modeli
        max_tokens: 1024,
        messages: claudeMessages
      })
    });

    if (!claudeResponse.ok) {
      const errorText = await claudeResponse.text();
      console.error('Claude API Error:', claudeResponse.status, errorText);
      return new Response(Claude API error: ${errorText}, { status: claudeResponse.status });
    }

    const claudeData = await claudeResponse.json();
    const assistantResponse = claudeData.content[0].text;

    // 4. Claude'un yanıtını ve yeni kullanıcı mesajını geçmişe ekle ve KV'ye kaydet
    const updatedConversationHistory = [
      ...conversationHistory,
      userMessage,
      { role: 'assistant', content: assistantResponse }
    ];

    await env.CLAUDEMEMORY.put(user_id, JSON.stringify(updatedConversationHistory));

    // 5. Claude'un yanıtını geri döndür
    return new Response(JSON.stringify({ response: assistantResponse }), {
      headers: { 'Content-Type': 'application/json' }
    });
  },
};
  

Bu Worker, gelen her POST isteğinde:

  1. İstek gövdesinden user_id ve messages (kullanıcının yeni mesajı) alır.
  2. user_id kullanarak CLAUDEMEMORY KV deposundan o kullanıcının geçmiş sohbetini (varsa) çeker.
  3. Mevcut geçmişe yeni kullanıcı mesajını ekleyerek Claude API'sine göndereceği mesaj dizisini oluşturur.
  4. Claude API'ye isteği gönderir ve yanıtı alır.
  5. Claude'un yanıtını da sohbet geçmişine ekler.
  6. Güncellenmiş sohbet geçmişini tekrar user_id anahtarıyla KV deposuna kaydeder.
  7. Claude'un yanıtını istemciye geri döndürür.

Bu sayede, her etkileşimde Claude, kullanıcının tüm geçmiş konuşma bağlamına sahip olacak ve daha tutarlı ve kişiselleştirilmiş yanıtlar üretebilecektir. Worker'ınızı dağıtmak için wrangler deploy komutunu kullanabilirsiniz.

Gelişmiş Bellek Stratejileri: Büyük Veri ve Karmaşık Bağlamlar İçin Çözümler

Yukarıda anlattığımız temel Cloudflare KV tabanlı bellek çözümü, birçok senaryo için harika ve maliyetsiz bir başlangıç noktasıdır. Ancak, yapay zeka uygulamanızın ihtiyaçları büyüdükçe veya daha karmaşık hale geldikçe, sadece tüm sohbet geçmişini KV'de depolamak yeterli olmayabilir. Özellikle aşağıdaki durumlarda daha gelişmiş stratejilere ihtiyaç duyulabilir:

  • Çok Uzun Sohbet Geçmişleri: Kullanıcılar aylarca veya yıllarca bir botla etkileşimde bulunuyorsa, tüm sohbet geçmişini Claude'un bağlam penceresine sığdırmak imkansız hale gelir ve API maliyetlerini astronomik seviyelere çıkarabilir.
  • Büyük Bilgi Tabanları: Botun, sadece sohbet geçmişini değil, aynı zamanda büyük bir doküman koleksiyonunu, makaleleri veya diğer yapılandırıl
Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version