Bağlam Sağlayıcıları Ekleme

Önceki sayfada ara yazılımların, aracının temel mantığına dokunmadan yürütme işlem hattını günlüğe kaydetme, güvenlik önlemleri, hata işleme gibi tüm sistemi etkileyen endişelerle nasıl sarmaladığı gösterildi. Ancak ara yazılım, aracının ne bildiğiyle değil, aracının nasıl çalıştığıyla ilgilenir. Şu ana kadar ajanın bilgisi iki yerden geliyor: eğitim verileri ve kullanıcının o anki turda söylediği her şey.

Bu bir sorun. Yararlı bir ajan bundan daha fazlasına ihtiyaç duyar. Kullanıcının üç dönüş önce söylediklerini hatırlaması, kullanıcının tercihlerini bilmesi veya yanıt oluşturmaya başlamadan önce bilgi bankasından ilgili bilgileri çekmesi gerekir. Araçlar bilgi getirebilir, ancak reaktiftirler: modelin bunları çağırmaya karar vermesi gerekir. Model bağlam gerektiğini anlamazsa bunu istemeyecek.

Bağlam sağlayıcıları bunu çözer. Bunlar, her aracı çağrısından önce ve sonra çalışan, bağlam penceresine ilgili bilgileri proaktif olarak ekleyen ve isteğe bağlı olarak gelecekte kullanılmak üzere depolanacak yanıttan durum ayıklayan bileşenlerdir. Aracınızın yönergelerini veya kodunu değiştirmeden aracınıza bellek, kişiselleştirme ve dış bilgilere erişim sağlar.

Bunu kullanmanız gereken durum

Aracınıza şu durumlarda bağlam sağlayıcıları ekleyin:

  • Temsilcinin konuşma geçmişine ihtiyacı vardır; yalnızca şimdiki iletiyi değil, önceki dönüşlerde söylenenleri hatırlamalıdır.
  • Kullanıcının yanıtlarını kişiselleştirebilmesi için profiller, tercihler, hesap ayrıntıları veya oturum durumu gibi kullanıcıya özgü veriler eklemek istiyorsunuz.
  • Her yanıttan önce bir bilgi bankasından ilgili belgeleri veya olguları otomatik olarak getiren alma artırılmış oluşturma (RAG) gerekir.
  • Aracı dinamik yönergeler gerektirir; çağrılar arasında günün saatlerine, kullanıcının konumuna veya diğer çalışma zamanı koşullarına göre değişen bağlam.
  • Aracı mantığından veri kaynağını ayrıştırmak istiyorsunuz; aracının bağlamın nereden geldiğini bilmesi gerekmez, yalnızca kullanılabilir olduğunu bilmesi gerekmez.

Neden sadece araçları kullanmıyorsunuz?

Hem araçlar hem de bağlam sağlayıcıları aracılara dış bilgilere erişim verir, ancak temelde farklı yollarla çalışır:

Görünüş Tools Bağlam sağlayıcıları
Trigger Reaktif — bir aracın ne zaman çağrılacağına model karar verir Proaktif — her çağrıdan önce otomatik olarak çalışır
Kontrol Model yönlendirmeli: Model, hangi aracı, ne zaman ve hangi bağımsız değişkenlerle seçeceğini belirler. Geliştirici odaklı: Her zaman hangi bağlamı kullanabileceğinize siz karar verirsiniz
Görünürlük Modelin bir aracın mevcut olduğunu bilmesi ve ilgili olduğunu belirlemesi gerekir Bağlam saydam bir şekilde eklenir; model bunu istemin bir parçası olarak görür
Kullanım örneği İsteğe bağlı eylemler ve aramalar: "web'de arama", "veritabanını sorgulama" Her zaman mevcut bağlam: konuşma geçmişi, kullanıcı profilleri, önceden yüklenmiş bilgi
Token maliyeti Yalnızca araç çağrıldığında harcanan belirteçler Her çağrıya harcanan belirteçler (bağlam her zaman istemdedir)

İkisi de kesinlikle daha iyi değil. Birçok aracı her ikisini de kullanır: her zaman mevcut olması gereken bilgiler için bağlam sağlayıcıları (geçmiş, kullanıcı profili, temel bilgi) ve aracının isteğe bağlı olarak getirmesi gereken bilgiler için araçlar (canlı arama sonuçları, veritabanı sorguları, API çağrıları).

Tavsiye

İyi bir temel kural: Aracının her çalıştığında bu bilgilere sahip olması gerekiyorsa bağlam sağlayıcısı kullanın. Aracı yazılımın yalnızca uygun olduğunda belirli verileri getirmesi gerekiyorsa bir yazılım aracı kullanın.

Bağlam sağlayıcıları nasıl çalışır?

Bağlam sağlayıcıları, her aracı çağrısının etrafında iki aşamalı bir yaşam döngüsüne katılır:

┌──────────────────────────────────────────────────────────────┐
│  Caller: agent.run("What's the return policy?")              │
└──────────────┬───────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────┐
│  BEFORE RUN — each context provider injects context          │
│                                                              │
│  • History provider loads past conversation messages         │
│  • Memory provider retrieves relevant facts/preferences      │
│  • RAG provider searches knowledge base and adds results     │
│  • Custom provider injects user profile, time, location      │
└──────────────┬───────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────┐
│  Agent core — model sees original input + all injected       │
│  context and generates a response                            │
└──────────────┬───────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────┐
│  AFTER RUN — each context provider processes the response    │
│                                                              │
│  • History provider saves the new messages                   │
│  • Memory provider extracts facts to remember for later      │
│  • Custom provider updates session state                     │
└──────────────────────────────────────────────────────────────┘

Önemli noktalar:

  1. Bağlam sağlayıcıları otomatik olarak çalışır. Temsilciyi oluştururken bunları bir kez kaydedersiniz. Bundan sonra, sizin tarafınıza ek kod olmadan her çağrıya katılırlar.
  2. Birden çok sağlayıcı birlikte oluşturur. Geçmiş sağlayıcısı, RAG sağlayıcısı ve özel sağlayıcı gibi çeşitli bağlam sağlayıcılarını kaydedebilirsiniz ve hepsi aynı bağlam penceresine katkıda bulunur. Katkıları kayıt sırasına göre birleştirilir.
  3. Sağlayıcıların iki kancası vardır. Önce kancası, istemine bağlam (iletiler, yönergeler, araçlar) ekler. Sonra kancası yanıtı işler; iletileri depolar, bellekleri ayıklar veya durumu güncelleştirir.
  4. Sağlayıcılar oturumları tanır. Bağlam sağlayıcıları geçerli oturumu alır, böylece belirli bir konuşma kapsamındaki verileri yükleyip depolayabilirler. Oturum yönetiminin nasıl çalıştığını öğrenmek için bkz. Oturumlar.

Tavsiye

Bağlam sağlayıcılarının ara yazılım ve sohbet istemcisinin yanı sıra tam aracı yürütme işlem hattında nerede yer aldığına ilişkin ayrıntılı bir görünüm için bkz. Aracı İşlem Hattı Mimarisi.

Bağlam penceresini yönetme

Eklediğiniz her bağlam parçası, modelin bağlam penceresindeki belirteçleri kullanır. Tarih her dönüşte büyür. RAG sonuçları belge öbekleri ekler. Kullanıcı profilleri meta veri ekler. Toplam, modelin sınırını aşarsa, en eski veya en az ilgili bilgiler kesilir ve önemli bağlamı kaybetme olasılığı vardır.

Bağlam sağlayıcıları kullanılırken bağlam penceresi yönetimi önemli bir noktadır: Sıkıştırma stratejileri, önemli bilgileri korurken belirteç sınırları içinde kalmak için eski geçmişi özetler veya keser. Bkz. Sıkıştırma.

Tavsiye

Bellek ve bağlam sağlayıcılarıyla uygulamalı deneyim için Başlarken öğreticisindeki 4. Adım: Bellek bölümüne bakın.

Önemli

Bağlam penceresi büyüdükçe modelin performansı düşebileceği için çok uzun bir bağlam penceresinin korunması önerilmez. Aracı düşük performansla karşılaşmaya başlarsa bağlam boyutunu küçültmek için sıkıştırma stratejilerini kullanmayı göz önünde bulundurun.

Değerlendirmeler

Değerlendirme Ayrıntılar
Belirteç bütçesi Eklenen her bağlam belirteçleri kullanır. Özellikle birden çok sağlayıcıyı birleştirirken toplam bağlam boyutunu dikkatle izleyin. Bağlam kontrolsüzce büyürse, önemli bilgiler sessizce kesintiye uğrar.
Alma gecikmesi Dış hizmetleri (veritabanları, arama dizinleri, API'ler) sorgulayan bağlam sağlayıcıları her çağrıya gecikme süresi ekler. Veri alma sürecini hızlı tutmak için önbelleğe alma, bağlantı havuzu ve eşzamansız işlemleri kullanın.
Relevance Ilgisiz bağlam eklemek yalnızca belirteçleri boşa harcamakla kalmaz, sinyali seyrelterek modelin yanıtlarını etkin bir şekilde düşürebilir. Sağlayıcılarınızın odaklanmış, ilgili bilgiler eklemesini sağlayın.
Eskime Durumu Önbelleğe alınmış veya önceden yüklenmiş bağlam eski hale gelebilir. Hizmet sağlayıcılarını, verileri uygun aralıklarla yenileyecek şekilde tasarlayın ve kullanım durumunuzda biraz eski verinin kabul edilebilir olup olmadığını değerlendirin.
Bestelenebilirlik Birden çok sağlayıcı aynı bağlam penceresine katkıda bulunuyorsa, katkıları beklenmeyen yollarla etkileşime başlayabilir. Birleştirilmiş bağlamın anlamlı olduğundan emin olmak için sağlayıcıları yalnızca tek tek değil birlikte test edin.

Sonraki Adımlar

Artık aracınızda araçlar, beceriler, ara yazılım ve bağlam sağlayıcıları olduğuna göre, bir sonraki adım aracıları araç olarak kullanarak kompozisyon yapmaktır; bu, bir aracı başka bir aracın aracı olarak kullanarak özelleştirmeyi ve yetki devrini sağlar.

Daha derine gidin: