Quivr'ın RAG beynini özel bir OpenAI uyumlu endpoint üzerinde çalıştırın.
Updated 2026-07-29
quivr-core'un LLMEndpointConfig'i bir llm_base_url alanı alır. supplier'ı openai olarak koruyun, llm_base_url'i https://api.apisrouter.com/v1 olarak ayarlayın, tek bir anahtar geçirin ve her brain.ask(), herhangi bir katalog model id'siyle yanıtını gateway üzerinden üretsin.
Hızlı yanıt: LLMEndpointConfig içinde llm_base_url.
Güncel Quivr, bir Python RAG kütüphanesi olan quivr-core'dur ve LLM bağlantısı açıktır. LLMEndpointConfig, supplier (varsayılan olarak openai), model, llm_base_url ve llm_api_key taşır; LLMEndpoint.from_config() bu alanlardan gerçek istemciyi kurar ve openai supplier'ı için bu istemci, sizin base URL'inizle oluşturulan LangChain'in ChatOpenAI'sidir. llm_base_url'i https://api.apisrouter.com/v1 olarak ayarlayın, model'i herhangi bir katalog id'sine ayarlayın ve endpoint'i Brain'inize verin. Anahtar, yapılandırma alanından veya ortamdan gelebilir: llm_api_key ayarlanmadığında, quivr-core onu supplier'ın adını taşıyan bir ortam değişkeninden çözer; bu, openai supplier'ı için OPENAI_API_KEY'dir. Her iki yol da upstream davranışıdır ve quivr_core/rag/entities/config.py ile quivr_core/llm/llm_endpoint.py içinde okunabilir.
from quivr_core.llm import LLMEndpoint
from quivr_core.rag.entities.config import (
DefaultModelSuppliers, LLMEndpointConfig)
llm = LLMEndpoint.from_config(LLMEndpointConfig(
supplier=DefaultModelSuppliers.OPENAI,
model="claude-sonnet-4-6", # any catalog id
llm_base_url="https://api.apisrouter.com/v1",
llm_api_key=os.environ["APISROUTER_API_KEY"],
))Quivr şimdi nedir ve LLM yuvası nerede yer alır.
Quivr (GitHub'da QuivrHQ, yaklaşık 39K yıldız), tam bir ikinci-beyin uygulaması olarak başladı ve quivr-core'a dönüştü: kendi ürününüze gömdüğünüz, belirgin görüşlü bir RAG kütüphanesi. Ona dosyalar verirsiniz, onları ayrıştırır ve parçalara böler, parçaları bir vector store'a gömer (varsayılan olarak FAISS, PGVector desteklenir) ve yapılandırılabilir bir retrieval iş akışı üzerinden bunlar hakkındaki soruları yanıtlar. Brain nesnesi birimdir: Brain.from_files() içe aktarır, brain.ask() getirir ve üretir. Generation, sohbet modeline ihtiyaç duyan tek adımdır. Retrieval iş akışı, belgelerinizden bağlamı bir araya getirir ve geçirdiğiniz LLMEndpoint temellendirilmiş yanıtı yazar. Bu endpoint, LLMEndpointConfig'ten bir kez kurulur, bu yüzden base URL kararı yapım anında verilir ve o brain üzerindeki her ask()'e uygulanır. ChatOpenAI, model alanını /v1/chat/completions üzerinden düz bir string olarak ilettiğinden, llm_base_url arkasındaki endpoint bunları sunduğunda id, Claude, DeepSeek, GPT veya Gemini olabilir. Proje durumu hakkında dürüst bir not: depo 2025 ortasından beri sessiz, bu yüzden quivr-core'u hızlı hareket eden bir kütüphane değil, kararlı bir kütüphane olarak ele alın. Burada açıklanan yapılandırma yüzeyi en güncel main dalıyla eşleşir ve sessiz geçmiş, ayağınızın altında kaymasının pek olası olmadığı anlamına gelir; ayrıca emekliye ayrılmış full-stack uygulamayı (backend .env dosyaları, barındırılan bir frontend) anlatan eski öğreticilerin artık kodla eşleşmediği anlamına gelir.
Tam kurulum: gateway üzerinden yönlendirilen bir LLM ile bir brain.
Tam örüntü, yapılandırılmış LLMEndpoint'i Brain.from_files'a geçirir. Brain hakkındaki her şey (parsing, chunking, FAISS store, retrieval iş akışı) LLM endpoint'inden bağımsızdır ve varsayılanlarını korur. Embedder'a dikkat edin. Bir tane geçirmezseniz, quivr-core kendi varsayılanlarıyla LangChain'in OpenAIEmbeddings'ini kurar; bu, OPENAI_API_KEY ile kimlik doğrular ve standart OpenAI endpoint'ini hedefler. Bu, sohbet LLM'inden ayrı bir istemcidir: generation'ı gateway üzerinden yönlendirmek onu taşımaz. Embedding yarısının bir OpenAI hesabına bağımlı olmasını istemiyorsanız, kendi embedder'ınızı (yerel bir sentence-transformers wrapper'ı veya yapılandırdığınız herhangi bir LangChain Embeddings örneği) geçirin.
import os
from quivr_core import Brain
from quivr_core.llm import LLMEndpoint
from quivr_core.rag.entities.config import (
DefaultModelSuppliers, LLMEndpointConfig)
llm = LLMEndpoint.from_config(LLMEndpointConfig(
supplier=DefaultModelSuppliers.OPENAI,
model="claude-sonnet-4-6",
llm_base_url="https://api.apisrouter.com/v1",
llm_api_key=os.environ["APISROUTER_API_KEY"],
max_output_tokens=2048,
temperature=0.3,
))
brain = Brain.from_files(
name="team-docs",
file_paths=["handbook.pdf", "runbook.md"],
llm=llm,
# embedder=... # separate component; see note above
)
print(brain.ask("What is the on-call escalation policy?").answer)RAG yanıtları için bir generation modeli seçmek.
Adayları karşılaştırmak, yapım anında bir değişikliktir: aynı base URL'e karşı iki LLMEndpoint, aynı dosyalar üzerinde iki brain kurun ve yanıtları sabit bir soru kümesinde karşılaştırın. Anahtar başına kullanım günlüğü her aday çalıştırmasını fiyatlandırır, bu yüzden token başına kalite tartışılmak yerine ölçülür.
- RAG generation girdi ağırlıklıdır: getirilen chunk'lar prompt'a hakimdir. Token başına girdi fiyatı, bir yanıtın maliyetini belirler; bu yüzden hızlı bir id, retrieval kalitesine dokunmadan genellikle faturayı yarıya indirir.
- claude-sonnet-4-6, getirilen bağlama saygı gösteren ve belgeler yanıtı içermediğinde temiz bir şekilde reddeden temellendirilmiş yanıtlar için güvenilir varsayılandır.
- Yüksek hacimli gömülü ürünler (Quivr'ın belirtilen kullanım senaryosu), günlük soru karışımı için claude-haiku-4-5-20251001, deepseek-v4-flash veya gemini-3.5-flash üzerinde iyi çalışır.
- Aynı yapılandırmadaki max_context_tokens, pipeline'ın ne kadar getirilen bağlam paketlediğini yönetir; onu yükseltmek doğal olarak uzun bağlamlı id'lerle eşleşir ve girdi harcamasını orantılı olarak artırır.
- Bilinmeyen model ön ekleri, bütçeleme için kozmetik olan genel bir tokenizer'a geri döner; isteğin kendisi id'nizi değişmeden endpoint'e taşır.
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.
| Model | Resmi Fiyat | Bizim Fiyatımız |
|---|---|---|
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.00 per M |
| GPT-5.4 mini | $0.75 / $4.50 per M | $0.60 / $3.60 per M |
| DeepSeek V4 Flash | $0.14 / $0.28 per M | $0.10 / $0.30 per M |
| Gemini 3.5 Flash | $1.50 / $9.00 per M | $1.20 / $7.20 per M |
Yaygın Quivr efsanelerine düzeltmeler.
Dolaşımdaki kılavuzlar, Quivr'ın artık sahip olmadığı yüzeyleri anlatıyor, bu yüzden güncel kodun gerçekte ne yaptığını belirtmeye değer. quivr-core, LiteLLM tabanlı değil, LangChain tabanlıdır. supplier enum'u bir LangChain sohbet sınıfı seçer ve openai, sizin llm_base_url'inizle ChatOpenAI'ye eşlenir. Bir öğretici size Quivr içinde bir LiteLLM proxy'si veya api_base ayarı yapılandırmanızı söylüyorsa, bu daha eski bir mimariyi anlatıyordur; güncel alan, LLMEndpointConfig üzerindeki llm_base_url'dir. Full-stack uygulama emekliye ayrıldı. Bir backend .env, Supabase kurulumu veya uygulama içi bir model seçici hakkındaki talimatlar, artık deponun sunduğu şey olmayan dönüşüm-öncesi uygulamaya atıfta bulunur. Yapılandırma artık sizin Python kodunuzda (veya kütüphanenin etrafındaki kendi uygulamanızda) gerçekleşir. Anahtar env değişkeni supplier'dan türetilir. supplier openai için bu, endpoint OpenAI olmasa bile OPENAI_API_KEY'dir. Bu adı aşırı yüklememeyi tercih ediyorsanız, yapılandırmada açıkça llm_api_key geçirin; bu önceliklidir ve ortamı temiz tutar. Embedder ayrıdır. Generation yönlendirmesi embedding'leri taşımaz; varsayılan embedder, kendi kimlik bilgilerine sahip OpenAIEmbeddings'tir. İki yarıyı bağımsız olarak karara bağlayın ve mevcut bir store'u yeniden embed etmek, yalnızca embedding modelinin kendisini değiştirirseniz gereklidir.
quivr-core'u bir gateway üzerinden kim yönlendirir.
- Generation modelinin, yığına gömülü bir satıcı taahhüdü değil bir yapılandırma değeri olmasını isteyen, uygulamalarına RAG gömen ürün ekipleri.
- Farklı kalite katmanlarında birçok brain çalıştıran geliştiriciler: tek anahtar, tek endpoint, brain başına model id'si.
- İkinci bir SDK veya sağlayıcı hesabı eklemeden, OpenAI şeklinde bir yapılandırmanın arkasında Claude kalitesinde temellendirilmiş yanıtlar isteyen ekipler.
- Sabit bir corpus üzerinde generation modellerini benchmark eden, her adayın bir LLMEndpointConfig değişikliği olduğu geliştiriciler.
- 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 ask()'i hata ayıklayın.
Herhangi bir şey ingest etmeden önce gateway'in modelinizi 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ı öngörülebilirdir. supplier openai için API key'in ayarlanmadığına dair bir uyarı, yapılandırma kurulduğunda ne llm_api_key'in ne de OPENAI_API_KEY'in görünür olmadığı anlamına gelir; uyarı yapım anında, başarısızlık ise ilk ask()'te gerçekleşir. Bir 401, çözülen anahtarın llm_base_url'deki endpoint'e ait olmadığı anlamına gelir. Bir model-not-found hatası, /v1/models'e karşı bir id yazım hatasıdır. Ve Brain.from_files sırasındaki embedding ile ilgili bir kimlik doğrulama hatası, hiçbir llm_base_url ayarının düzeltemeyeceği, kendi OpenAI kimlik bilgilerini isteyen ayrı varsayılan embedder'dır; kontrol ettiğiniz bir embedder geçirin. Yanıtlar akmaya başladığında, APIsRouter konsolu istek başına modeli, token sayılarını ve harcamayı gösterir. Her prompt'a getirilen chunk'ları paketleyen bir kütüphane için, gerçek corpus'unuzdaki yanıt başına token sayısı, model seçiminizi yönlendirmesi gereken rakamdır.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Sık sorulan sorular
Quivr, özel bir OpenAI uyumlu base URL destekliyor mu?
Evet. quivr-core'un LLMEndpointConfig'inde bir llm_base_url alanı vardır ve openai supplier'ı için kütüphane, o URL'e karşı LangChain'in ChatOpenAI'sini kurar. Onu gateway endpoint'ine ayarlayın ve herhangi bir katalog model id'si geçirin.
Quivr LiteLLM tabanlı mı?
Güncel kod tabanında değil. quivr-core, LangChain sohbet sınıflarını supplier'a göre seçer; openai supplier'ı, sizin llm_base_url'inizle ChatOpenAI kullanır. Quivr içinde bir LiteLLM api_base'i anlatan kılavuzlar, daha eski bir mimariyi ifade eder.
brain.ask(), Claude veya DeepSeek modelleriyle yanıt verebilir mi?
Evet. Model alanı, /v1/chat/completions üzerinden düz bir string olarak iletilir, bu yüzden claude-sonnet-4-6, deepseek-v4-flash veya endpoint'in sunduğu başka herhangi bir id, openai supplier'ı altında çalışır.
Anahtarı hangi ortam değişkeni tutar?
Yapılandırmada llm_api_key ayarlanmadığında, quivr-core değişkeni supplier adından türetir: supplier openai için OPENAI_API_KEY. LLMEndpointConfig'te açık bir llm_api_key önceliklidir ve o adın aşırı yüklenmesini önler.
llm_base_url, embedding'leri de taşır mı?
Hayır. Varsayılan embedder, kendi kimlik bilgilerine ve endpoint'ine sahip ayrı bir OpenAIEmbeddings istemcisidir. Generation'ı gateway üzerinden yönlendirin ve embedding yarısını da OpenAI'den uzak tutmak isterseniz kendi embedder'ınızı geçirin.
Quivr projesi hâlâ bakımda mı?
Depo 2025 ortasından beri sessiz, bu yüzden onu aktif değil kararlı bir kütüphane olarak ele alın. Burada belgelenen llm_base_url yüzeyi en güncel main dalıyla eşleşir ve onun yerini aldığı dönüşüm-öncesi full-stack uygulama emekliye ayrılmıştır.