mem0'ı özel bir OpenAI uyumlu base URL'ine karşı çalıştırın.

Updated 2026-07-29

mem0'ın OpenAI sağlayıcısı bir openai_base_url yapılandırma anahtarı alır. Bunu https://api.apisrouter.com/v1 olarak ayarlayın, tek bir anahtar geçirin ve hafızaları çıkaran ve güncelleyen model, hafıza pipeline'ınızın geri kalanına dokunmadan katalogdaki herhangi bir id olabilir, Claude ve DeepSeek dahil.

Hızlı yanıt: llm bloğu içinde tek bir yapılandırma anahtarı.

mem0'ın OpenAI LLM sağlayıcısı endpoint'ini önce yapılandırma, sonra ortam, son olarak varsayılan sırasıyla çözer: self.config.openai_base_url, ardından OPENAI_BASE_URL ortam değişkeni, ardından https://api.openai.com/v1. Yani en temiz geçersiz kılma yöntemi, llm yapılandırma sözlüğündeki tek bir anahtardır: openai_base_url'i https://api.apisrouter.com/v1 olarak ayarlayın, api_key'i onun yanına ayarlayın (veya OPENAI_API_KEY'i dışa aktarın) ve her hafıza çıkarma çağrısı gateway üzerinden yönlendirilir. Bu, bir fork değil, mem0/llms/openai.py'de okunabilen upstream mem0 davranışıdır. TypeScript SDK'sı aynı çifti camelCase olarak sunar: openaiBaseUrl ve apiKey. Yapılandırma sözlüğündeki değerler ortam değişkenlerini geçersiz kılar, bu da varsayılanları geçersiz kılar, bu yüzden OPENAI_BASE_URL'in başka bir yeri işaret ettiği makinelerde bile yapılandırma seviyesindeki bir base URL kazanır.

config = {
    "llm": {
        "provider": "openai",
        "config": {
            "model": "claude-sonnet-4-6",
            "openai_base_url": "https://api.apisrouter.com/v1",
            "api_key": os.environ["APISROUTER_API_KEY"],
        },
    }
}

mem0'ın LLM'iyle gerçekte yaptığı şey.

mem0 (GitHub'da mem0ai, kabaca 61K yıldız), AI ajanları için bir hafıza katmanıdır. Her add() çağrısı bir pipeline çalıştırır: LLM yeni konuşma turlarını okur, aday hafızaları çıkarır, bunları zaten depolanmış olanlarla karşılaştırır ve her hafıza için eklenip eklenmeyeceğine, güncellenip güncellenmeyeceğine, silinip silinmeyeceğine veya atlanıp atlanmayacağına karar verir. Bu gerçek bir akıl yürütme işidir ve her yazmada gerçekleşir, bu yüzden LLM yuvası, insanların bir üretim ajanına hafıza eklerken beklediğinden çok daha sık ateşlenir. Retrieval diğer yarısıdır ve LLM'i hiç kullanmaz: search() sorguyu gömer (embed) ve depoya karşı vektör benzerliği çalıştırır. İki farklı istemci, iki farklı model, iki farklı blokta yapılandırılmış (llm ve embedder). Bu ayrım, herhangi bir şeyi yeniden yönlendirmeden önce anlaşılması gereken tek en önemli şeydir, çünkü bu, embedder'ın mevcut sağlayıcısını ve indeksini dokunulmadan bırakırken çıkarma iş yükünü çok satıcılı bir gateway'e taşıyabileceğiniz anlamına gelir. Sağlayıcı, yapılandırmada "openai" olarak kalır; mem0, model alanını /v1/chat/completions üzerinden düz bir string olarak iletir. openai_base_url'in arkasındaki endpoint birden fazla satıcıya hizmet verdiğinde, bu string bir Claude, GPT, DeepSeek veya GLM id'si olabilir ve çıkarma modelini değiştirmek, bir sağlayıcı geçişi yerine tek satırlık bir yapılandırma değişikliği haline gelir.

Tam kurulum: yapılandırma sözlüğü veya ortam değişkeni.

Yapılandırma-sözlüğü yolu kesin olanıdır: yalnızca LLM'i taşır. Sözlüğü oluşturun, Memory.from_config'e verin ve hafıza API'sini normal şekilde kullanın. api_key alanı, gateway anahtarını vektör deponuzdan ve embedder ayarlarınızdan tamamen uzak tutar. Ortam yolu da mevcuttur: mem0'ın OpenAI sınıfları, yapılandırma anahtarı yokken OPENAI_BASE_URL'i okur. Bu, dışa aktarılan tek bir değişken ve sıfır kod değişikliğidir, ama kapsamına dikkat edin: embedder'ın OpenAI sınıfı aynı değişkenleri okur (ayrıca LLM sınıfının okumadığı eski OPENAI_API_BASE adını da onurlandırır). OPENAI_BASE_URL'i dışa aktarırsanız her iki bileşeni de taşımış olursunuz, bu da yalnızca endpoint sizin embedding modelinize de hizmet veriyorsa doğrudur. Şüpheye düştüğünüzde, yapılandırma sözlüğünü tercih edin ve ortamı olduğu gibi bırakın.

import os
from mem0 import Memory

config = {
    "llm": {
        "provider": "openai",
        "config": {
            "model": "claude-sonnet-4-6",   # any catalog id
            "openai_base_url": "https://api.apisrouter.com/v1",
            "api_key": os.environ["APISROUTER_API_KEY"],
            "temperature": 0.1,
        },
    },
    # embedder block unchanged: keeps its own provider and key
}

m = Memory.from_config(config)
m.add("I prefer window seats and vegetarian meals.", user_id="alice")
print(m.search("seat preference?", user_id="alice"))

Çıkarma modelini seçmek.

Pratik döngü: embedder'ınızı sabit tutun, aynı konuşma fixture'larını iki veya üç çıkarma modelinden geçirin ve depolanan hafızaları karşılaştırın (diff). Tek bir endpoint arkasında bu karşılaştırma, aday başına bir yapılandırma-string düzenlemesidir ve anahtar başına kullanım günlüğü, her adayın çalışmasını sizin için fiyatlandırır.

  • Çıkarma kalitesi hafıza kalitesidir. LLM neyin hatırlanmaya değer olduğuna ve yeni bilginin eskisiyle çelişip çelişmediğine karar verir; bir güncellemeyi kaçıran model, gelecekteki her oturum için retrieval'i kirletir. claude-sonnet-4-6 ve gpt-5.5, bu değiş tokuşun güvenilir ortasıdır.
  • Hacim her yazmadadır. Her alışverişten sonra add() çağıran bir sohbet ürünü, çıkarmayı günde binlerce kez çalıştırır; claude-haiku-4-5-20251001 veya deepseek-v4-flash gibi hızlı bir id'nin hafıza katmanının token faturasına hakim olmasını engellediği yer burasıdır.
  • Çelişki ağırlıklı alanlar (değişen tercihler, süresi dolan gerçekler), çağrı başına daha maliyetli olsa bile add()'de daha güçlü bir modelden faydalanır, çünkü yanlış bir güncelleme kararını daha sonra tespit etmek pahalıdır.
  • Temperature düşük olmalıdır. Çıkarma, yaratıcı yazım değil yapılandırılmış bir karar görevidir; mem0, temperature'ı aynı yapılandırma bloğunda sunar ve yaklaşık 0.1, add/update/delete kararlarını tutarlı tutar.

Kullandıkça öde · resmi fiyatların altında

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

ModelResmi FiyatBizim Fiyatımız
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M
DeepSeek V4 Flash$0.14 / $0.28 per M$0.10 / $0.30 per M
GLM-5.2$1.14 / $4.00 per M$1.10 / $4.00 per M

mem0'a özgü hata modları.

Kalıcı bir OPENROUTER_API_KEY yönlendirmeyi ele geçirir. mem0'ın OpenAI LLM sınıfı bu değişkeni özel olarak ele alır: ayarlandığında, sınıf OpenRouter'ın endpoint'ine geçer ve niyetinizi göz ardı eder. İstekler yapılandırdığınız base URL'ye ulaşmıyorsa, önce bu değişkeni kontrol edin ve ayarını kaldırın. Ortam değişkeni, kastettiğinizden fazlasını taşır. OPENAI_BASE_URL hem LLM hem de embedder tarafından okunur. Gateway sizin embedding modelinize hizmet vermiyorsa, ortam seviyesindeki bir geçersiz kılma search()'i bozarken add() çalışmaya devam eder, bu da "hafıza yazma iyi çalışıyor ama retrieval boş veya hata veriyor" şeklinde kendini gösterir. Geçersiz kılmayı llm yapılandırma bloğuyla sınırlayın ve embedder bunu hiç fark etmez. Yapılandırma anahtarları SDK'ya özeldir. Python snake_case kullanır (openai_base_url, api_key); TypeScript camelCase kullanır (openaiBaseUrl, apiKey). Python sözlüğündeki bir camelCase anahtar sessizce yok sayılır ve varsayılan endpoint'e düşersiniz, bu da geçersiz kılmanın "çalışmıyor" olmasıyla tamamen aynı görünür. Model id'leri tam string'lerdir. mem0, model alanını doğrulamaz; olduğu gibi iletir. Bir yazım hatası, ilk add()'de gateway'den bir model-not-found hatası olarak ortaya çıkar ve /v1/models listesi yetkili yazımdır. Embedder'ı değiştirmek bir yapılandırma kararı değil, bir indeks kararıdır. Farklı modellerden gelen embedding'ler farklı vektör uzaylarında yaşar, bu yüzden embedder'ı yeniden yönlendirmek mevcut vektörlere karşı benzerliği geçersiz kılar. LLM'i taşımak bedavadır; embedder'ı taşımak ise deponun yeniden embed edilmesi anlamına gelir. Bunları ayrı geçişler olarak planlayın.

mem0'ı bir gateway üzerinden kim yönlendirir.

  • Asistanlara kalıcı hafıza ekleyen ajan geliştiricileri. Çıkarma her yazmada çalışır, bu yüzden anahtar başına kullanımı olan tek bir faturalandırma yüzeyi, yığına eklenmiş ikinci bir satıcı panosunu geride bırakır.
  • OpenAI şeklinde bir yapılandırmanın arkasında Claude kalitesinde çıkarma isteyen ekipler. Sağlayıcı string'i "openai" olarak kalır; yalnızca base URL ve model id'si değişir.
  • Hafıza katmanının birim maliyetini, sınır bir sohbet modelini hızlı bir çıkarma id'siyle eşleştirerek kontrol eden yüksek hacimli sohbet ürünleri, her biri aynı endpoint üzerinden adreslenebilir.
  • Çıkarma modellerini yan yana değerlendiren geliştiriciler. Her aday, satıcı başına yeni bir sağlayıcı entegrasyonu değil, sabit fixture'lara karşı tek bir model string'idir.
  • Belirli bir satıcının faturalandırmasına erişimi olmayan geliştiriciler. Kart gerektirmeyen yükleme tabanlı erişim, sağlayıcı başına kayıt bağımlılığını ortadan kaldırır.

Endpoint'i doğrulayın ve ilk add()'i hata ayıklayın.

Pipeline'ı çalıştırmadan önce gateway'in yapılandırdığınız modeli listelediğini doğrulayın; model alanı, sunulan bir id ile tam olarak eşleşmelidir. İlk çalıştırma başarısızlıkları bir örüntü izler. 401, LLM'in çözdüğü anahtarın, çözdüğü endpoint için yanlış olduğu anlamına gelir ve her ikisi de bir yapılandırma-üzerine-ortam kademesinden geldiği için, varsaymak yerine her iki etkin değeri de yazdırın; bir ortam base URL'i ile bir yapılandırma api_key'i (veya tersi) klasik bir uyumsuzluktur. Bir model-not-found hatası bir id yazım hatasıdır. İsteklerin görünür şekilde openrouter.ai'a gitmesi, OPENROUTER_API_KEY özel durumunun tetiklendiği anlamına gelir. Ve add() başarılı olurken search() başarısız olursa, embedder'ı ortam aracılığıyla yanlışlıkla taşımışsınızdır; base URL'yi llm bloğunun içine sınırlayın. Hafızalar akmaya başladığında, APIsRouter konsolu istek başına model, token sayıları ve harcamayı gösterir. Çıkarma çağrıları küçük ama amansızdır ve kullanım görünümü, hafıza katmanının bin yazma başına gerçekte ne kadara mal olduğunu tahmin etmek yerine görmenizi sağlar.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

Sık sorulan sorular

Hangi yapılandırma anahtarı mem0'ı özel bir OpenAI uyumlu endpoint'e yönlendirir?

Python'da llm sağlayıcı yapılandırması içindeki openai_base_url (TypeScript'te openaiBaseUrl). Yapılandırma değerleri, OPENAI_BASE_URL ortam değişkenini geçersiz kılar, bu da varsayılan https://api.openai.com/v1'i geçersiz kılar, bu yüzden yapılandırma sözlüğü bunu ayarlamak için en deterministik yerdir.

mem0 bu kurulum üzerinden Claude veya DeepSeek modelleriyle hafıza çıkarabilir mi?

Evet. Sağlayıcı "openai" olarak kalır ve mem0, model alanını /v1/chat/completions üzerinden düz bir string olarak iletir. openai_base_url'in arkasındaki endpoint tarafından sunulan her id çalışır, Claude, DeepSeek ve GLM id'leri dahil.

OPENAI_BASE_URL ayarlamak embedder'ı da etkiler mi?

Evet. mem0'ın OpenAI embedder'ı aynı ortam değişkenlerini okur (artı eski OPENAI_API_BASE adı). Yalnızca LLM'i taşımak istiyorsanız, openai_base_url'i llm yapılandırma bloğunun içine ayarlayın ve ortamı olduğu gibi bırakın.

Bunu kullanmak için embedder'ımı veya vektör deposunu değiştirmem gerekir mi?

Hayır. llm ve embedder blokları bağımsız istemcilerdir. Çıkarma LLM'i, embedder mevcut sağlayıcısını korurken ve mevcut vektörleriniz geçerli kalırken gateway üzerinden yönlendirilebilir. Embedder'ı yeniden yönlendirmek, deponun yeniden embed edilmesini gerektiren ayrı bir geçiştir.

mem0 isteklerim neden base URL'im yerine OpenRouter'a gidiyor?

mem0'ın OpenAI LLM sınıfı, OPENROUTER_API_KEY ortam değişkenini özel olarak ele alır: ayarlandığında, base URL'nizden bağımsız olarak OpenRouter'a yeniden yönlendirir. O değişkenin ayarını kaldırın ve openai_base_url yapılandırması devreye girer.

Bu, barındırılan Mem0 platformu için mi yoksa açık kaynak SDK için mi geçerli?

Açık kaynak SDK (Memory / Memory.from_config), burada LLM yapılandırmasını siz kontrol edersiniz. Barındırılan Mem0 platformu kendi model çağrılarını sunucu tarafında yönetir, bu yüzden özel bir base URL, hafıza katmanını kendiniz barındırdığınızda geçerlidir.