0Pricing
AI Agents · レッスン

圧縮としての要約

古いターンを定期的に継続要約へ置き換え、正確な想起とコンテキストウィンドウの容量をトレードオフします。

「圧縮としての要約」は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ターンごとの要約(高レベル)
  • 全期間の要約(最上位レベル)

コンテキストには適切なレベルだけを注入してください。

失われる詳細

要約では、具体的な引用や正確な言い回しが失われます。ユーザーが「以前、料金について私が正確に何と言ったか」と尋ねても、モデルは答えられません。

逐語的な想起には、より大きなコンテキストか、ベクトル検索によるアーカイブのいずれかが必要です。

ベクトルアーカイブも併用する

両方の利点を組み合わせます。

  1. 古いターンをシステムメッセージ内に要約する
  2. さらに、各ターンをベクトルストアに埋め込む
  3. ユーザーが詳細を尋ねたら、ベクトルストアから逐語的な内容を検索する

要約の品質が重要

質の悪い要約は、要約がないよりも悪い結果を招きます。要約の呼び出しには、最安値のティアではなく、安価で十分な能力を持つモデル(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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. コンテキストウィンドウにおける短期記憶
  2. 長いコンテキストがスケールしない理由
  3. 圧縮としての要約
  4. シンプルなメモリストア(Key-Value)
← AI Agentsに戻る