圧縮としての要約
古いターンを定期的に継続要約へ置き換え、正確な想起とコンテキストウィンドウの容量をトレードオフします。
「圧縮としての要約」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
メモリとしての圧縮
会話が長くなったら、古いターンを短い要約に置き換えます。正確な想起とコンテキスト領域をトレードオフにします。
要約には要点(事実、決定事項、保留中の項目)が含まれます。逐語的なテキストは失われます。
要約するタイミング
次のような場合に要約を開始します。
- 合計トークン数がしきい値を超えたとき(例:8k)
- ターン数がNを超えたとき(例:20)
- ユーザーが新しいトピックを始めたとき
古いターンを要約する
最近のターンは逐語的に保持し、範囲から外れた部分だけを要約します。
def compact(messages, keep_recent=10):
system = messages[0]
old = messages[1:-keep_recent]
recent = messages[-keep_recent:]
if not old:
return messages
summary = summarise(old)
return [
system,
{'role': 'system', 'content': f'Earlier conversation summary:\n{summary}'},
*recent
]要約用プロンプト
要約を作成するには、別の安価なモデル呼び出しを使用します。
def summarise(messages):
text = '\n'.join(f'{m["role"]}: {m["content"]}' for m in messages)
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Summarise this conversation in 5 bullet points. Preserve facts, decisions, and pending TODOs.'},
{'role': 'user', 'content': text}
],
max_tokens=300,
)
return response.choices[0].message.content継続的な要約
毎回最初から要約し直すのではなく、1つの要約を継続的に更新します。
running_summary = ''
def extend_summary(new_messages):
global running_summary
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Extend the existing summary with the new turns. Keep it under 200 words.'},
{'role': 'user', 'content': f'Existing summary:\n{running_summary}\n\nNew turns:\n{format(new_messages)}'}
],
max_tokens=500,
)
running_summary = response.choices[0].message.content構造化された要約
要約から特定のフィールドを抽出するよう強制します。
summary_schema = {
'topics_discussed': '...',
'user_facts': {'name': '...', 'preferences': '...'},
'open_questions': ['...'],
'decisions_made': ['...']
}
# Use json_object response_format to enforce.
import json
print(json.dumps(summary_schema, indent=2))
階層型の要約
非常に長い履歴には、次の方法を使います。
- 100ターンごとの要約(中間レベル)
- 1000ターンごとの要約(高レベル)
- 全期間の要約(最上位レベル)
コンテキストには適切なレベルだけを注入してください。
失われる詳細
要約では、具体的な引用や正確な言い回しが失われます。ユーザーが「以前、料金について私が正確に何と言ったか」と尋ねても、モデルは答えられません。
逐語的な想起には、より大きなコンテキストか、ベクトル検索によるアーカイブのいずれかが必要です。
ベクトルアーカイブも併用する
両方の利点を組み合わせます。
- 古いターンをシステムメッセージ内に要約する
- さらに、各ターンをベクトルストアに埋め込む
- ユーザーが詳細を尋ねたら、ベクトルストアから逐語的な内容を検索する
要約の品質が重要
質の悪い要約は、要約がないよりも悪い結果を招きます。要約の呼び出しには、最安値のティアではなく、安価で十分な能力を持つモデル(gpt-4o-mini、haiku)を使用してください。
要約の更新にはコストがかかる
8000トークンの会話を要約するには、実際のLLM呼び出しが必要です。1〜2秒、0.5セントかかります。クリティカルパス上で実行するのではなく、ターン間で非同期に行ってください。
要約のトレードオフ
メモリとして要約を使う場合の主なトレードオフは何でしょうか。
まとめ
要約は、メモリを拡張する安価な方法です。正確な引用の想起には、ベクトル検索を組み合わせてください。
よくある質問
「圧縮としての要約」レッスンは無料ですか?
はい。「圧縮としての要約」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「圧縮としての要約」で何を学びますか?
古いターンを定期的に継続要約へ置き換え、正確な想起とコンテキストウィンドウの容量をトレードオフします。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「圧縮としての要約」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。