Özet Belleği ve Token Farkındalıklı Kısaltma
Eski konuşma dönüşlerini otomatik olarak özetlemek için ConversationSummaryMemory kullanın; böylece kullanıcı tarafından daha önce belirtilen temel gerçekleri korurken konuşmayı yoğunlaştırın.
Özet Belleği ve Token Farkındalıklı Kısaltma, CoddyKit'te ücretsiz bir AI Engineering Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.
Geçmişin Tamamının Belirteç Maliyeti
Conversation Buffer Memory, şimdiye kadar değiş tokuş edilen her iletiyi saklar ve bu da bağlam pencerenizi hızla tüketir. 100 turluk bir görüşme yalnızca geçmiş için 20.000 belirteç kullanabilir; bu durumda gerçek yanıt için çok az yer kalır. Summary Memory, eski turları sıkıştırılmış bir özetle değiştirerek bu sorunu çözer.
Özet Belleği Nasıl Çalışır
Toplam belirteç sayısı bir eşiği aştığında ConversationSummaryMemory, en eski görüşme turlarını bir LLM'ye gönderir ve temel noktaları özetlemesini ister. Tam turlar atılır ve yerlerine bu kısa özet konur. Gelecekteki turlar özetin üzerine eklenir.
- Eski turlar: özetle değiştirilir
- Güncel turlar: olduğu gibi korunur
- Sonuç: en az bilgi kaybıyla anlamlı sıkıştırma
LangChain ConversationSummaryMemory
LangChain, arabellek çok büyüdüğünde otomatik olarak özet oluşturan ConversationSummaryMemory bileşenini sağlar. Bellek nesnesine bir LLM geçirirsiniz; böylece gerektiğinde özet oluşturmak için modeli çağırabilir.
from langchain.memory import ConversationSummaryMemory
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model='gpt-4o-mini')
memory = ConversationSummaryMemory(
llm=llm,
return_messages=True
)
# Add messages manually
memory.save_context(
{'input': 'My name is Alice and I am building a RAG system.'},
{'output': 'Great, I can help you build a RAG system, Alice.'}
)
print(memory.load_memory_variables({}))Özet Arabellek Belleği: İki Yaklaşımın En İyisi
ConversationSummaryBufferMemory karma bir yaklaşımdır: doğruluk için en güncel turları olduğu gibi korur ve yalnızca max_token_limit değerini aşan daha eski turları özetler. Böylece yakın bağlamı tam olarak hatırlarken eski bağlamı sıkıştırılmış biçimde hatırlayabilirsiniz.
from langchain.memory import ConversationSummaryBufferMemory
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model='gpt-4o-mini')
memory = ConversationSummaryBufferMemory(
llm=llm,
max_token_limit=500, # Summarize when older turns exceed 500 tokens
return_messages=True
)
# As the conversation grows, old turns get summarized automatically
print('Moving summary:', memory.moving_summary_buffer)Kısaltmadan Önce Belirteçleri Sayma
Akıllı kısaltma kararları verebilmek için iletilerinizin kaç belirteç tükettiğini bilmeniz gerekir. tiktoken kütüphanesi, herhangi bir OpenAI modeli için belirteçleri saymanıza olanak tanır. Bu sayede bütçenin kesinlikle altında kalan belirteç farkındalıklı kısaltmayı uygulayabilirsiniz.
import tiktoken
def count_tokens(messages: list, model: str = 'gpt-4o') -> int:
encoding = tiktoken.encoding_for_model(model)
total = 0
for msg in messages:
# Each message has overhead tokens for role framing
total += 4
total += len(encoding.encode(msg.get('content', '')))
total += 2 # Reply primer
return total
messages = [
{'role': 'user', 'content': 'Explain RAG to me.'},
{'role': 'assistant', 'content': 'RAG stands for Retrieval-Augmented Generation...'}
]
print('Token count:', count_tokens(messages))Elle Belirteç Farkındalıklı Kısaltma
Bazen LangChain'in bellek sınıflarını kullanmadan kısaltma üzerinde tam denetim sahibi olmak istersiniz. Basit bir yaklaşım şudur: tüm iletileri saklayın, ardından toplam belirteç sayısı bütçenize sığana kadar sistem dışındaki en eski iletileri teker teker kaldırın.
def truncate_to_budget(messages: list, budget: int, model: str = 'gpt-4o') -> list:
'''Remove oldest non-system messages until under budget.'''
import tiktoken
encoding = tiktoken.encoding_for_model(model)
def token_count(msgs):
total = 2
for m in msgs:
total += 4 + len(encoding.encode(m.get('content', '')))
return total
result = list(messages)
while token_count(result) > budget and len(result) > 1:
# Never remove the system prompt at index 0
if result[0]['role'] == 'system':
del result[1]
else:
del result[0]
return resultÖzet İstemini Oluşturma
Kendi özet belleğinizi oluştururken LLM'den temel gerçekleri damıtmasını isteyen bir istem hazırlarsınız. İstem, modelden kullanıcı tercihlerini, özel adları ve çözülmemiş soruları — gelecekteki turlarda önem taşıması en muhtemel gerçekleri — yakalamasını istemelidir.
from openai import OpenAI
client = OpenAI()
def summarize_history(old_summary: str, new_turns: list) -> str:
turns_text = '\n'.join(
f'{m["role"].capitalize()}: {m["content"]}' for m in new_turns
)
prompt = f'''Current summary:\n{old_summary}\n\nNew conversation turns:\n{turns_text}\n\nWrite an updated summary that captures key facts, user preferences, and open questions.'''
resp = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}]
)
return resp.choices[0].message.contentÖzeti Sistem İstemine Tümleştirme
Bir özet elde ettiğinizde, LLM'nin görüşme geçmişi hakkında her zaman bağlama sahip olması için özeti sistem istemine ekleyin. Özeti, ana kişilik yönergelerinden önce kısa bir bağlam bloğu olarak başa yerleştirin.
def build_messages_with_summary(summary: str, recent_turns: list, user_input: str) -> list:
system_content = (
'You are a helpful AI assistant.'
+ ('\n\n[Conversation summary]\n' + summary if summary else '')
)
messages = [{'role': 'system', 'content': system_content}]
messages.extend(recent_turns)
messages.append({'role': 'user', 'content': user_input})
return messagesÖzetlemeyi Otomatik Olarak Tetikleme
Yaygın bir yaklaşım, görüşme belirteç eşiğini aştığında özetlemeyi tetiklemektir — örneğin, biriken geçmiş 2.000 belirteci geçtiğinde. Bu noktada son iki tur dışındaki tüm turları özetler ve bunların yerine özeti koyarsınız.
class SummaryBufferChat:
def __init__(self, max_tokens=2000):
self.summary = ''
self.recent_turns = []
self.max_tokens = max_tokens
def chat(self, user_message: str) -> str:
from openai import OpenAI
client = OpenAI()
messages = build_messages_with_summary(self.summary, self.recent_turns, user_message)
resp = client.chat.completions.create(model='gpt-4o', messages=messages)
reply = resp.choices[0].message.content
self.recent_turns.append({'role': 'user', 'content': user_message})
self.recent_turns.append({'role': 'assistant', 'content': reply})
if count_tokens(self.recent_turns) > self.max_tokens:
to_summarize = self.recent_turns[:-2]
self.recent_turns = self.recent_turns[-2:]
self.summary = summarize_history(self.summary, to_summarize)
return replyÖzetlerde Özel Adları Koruma
Özet kalitesi büyük ölçüde özetleme istemine bağlıdır. Kullanıcılar adlarından, konumlarından, tercihlerinden veya son tarihlerinden söz ederse isteminiz, modele bu gerçekleri eklemesini açıkça bildirmelidir. Genel özetler, kişiselleştirme açısından en önemli özel adları sıklıkla atlar.
- Ekleyin: adlar, tarihler, alınan teknik kararlar, açık sorular
- Çıkartın: dolgu niteliğindeki konuşmalar, onaylamalar, tekrarlanan nezaket ifadeleri
Ödünleşimler: Özet ve Pencere Belleği
Özet belleği ile pencere belleği arasındaki seçim, kullanım alanınıza bağlıdır. Pencere belleği kesin hatırlama için önemli olan ifadeleri aynen korur; ancak ilgisiz bağlam için belirteç harcar. Özet belleği agresif biçimde sıkıştırır, ancak ek bir LLM çağrısı gerektirir ve uç durum ayrıntılarını kaybedebilir. Üretimdeki sohbet botlarının çoğu karma bir yaklaşım kullanır: yakın geçmişteki tam turlar ve daha eski geçmişin sürekli güncellenen özeti.
Kısa Kontrol
Özet belleği ve belirteç farkındalıklı kısaltma kavramlarını anlayıp anlamadığınızı sınayın.
Ders Özeti
Bu derste şunları öğrendiniz: özet belleği, eski turları bir LLM çağrısıyla sıkıştırır; ConversationSummaryBufferMemory, yakın zamandaki tam turları özetlenmiş eski turlarla birleştirir; tiktoken, görüşmeleri bütçe içinde tutmak için belirteç farkındalıklı kısaltmayı mümkün kılar. Sırada kalıcı ve ölçeklenebilir depolama için sohbet geçmişini Redis ve PostgreSQL'de saklamayı inceleyeceğiz.
Yapay zeka eğitmeniyle Python öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“Özet Belleği ve Token Farkındalıklı Kısaltma” dersi ücretsiz mi?
Evet — “Özet Belleği ve Token Farkındalıklı Kısaltma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.
“Özet Belleği ve Token Farkındalıklı Kısaltma” dersinde ne öğreneceğim?
Eski konuşma dönüşlerini otomatik olarak özetlemek için ConversationSummaryMemory kullanın; böylece kullanıcı tarafından daha önce belirtilen temel gerçekleri korurken konuşmayı yoğunlaştırın. AI Engineering Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Özet Belleği ve Token Farkındalıklı Kısaltma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Engineering Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Engineering Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Durumsuz LLM'lerin Harici Belleğe İhtiyaç Duymasının Nedeni
- Tampon ve Pencere Belleği
- Özet Belleği ve Token Farkındalıklı Kısaltma
- Redis ve PostgreSQL'de Sohbet Geçmişini Kalıcı Hâle Getirme