0Pricing
AI Engineering Academy · レッスン

Context Window:サイズと影響

context windowとは何か、会話の長さやドキュメント処理をどのように制限するかを学び、GPT-4o、Claude、Geminiのコンテキストサイズを比較します。

「Context Window:サイズと影響」はCoddyKit上の無料AI Engineering Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Engineering Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Engineering Academyコースには全4レッスンが含まれています。

コンテキストウィンドウとは何か

コンテキストウィンドウとは、LLMが1回のAPI呼び出しで処理できるトークン数の最大値です。システムプロンプト、過去のすべての会話ターン、RAGのために注入するドキュメント、モデルの応答用に確保された領域など、すべてが含まれます。合計がコンテキストウィンドウを超えると、APIはエラーを返します。

コンテキストウィンドウは、モデルの作業メモリだと考えてください。セッションをまたいで過去の会話を記憶できる人間とは異なり、LLMには永続的なメモリがありません。現在のコンテキストウィンドウに存在する内容だけを「知る」ことができます。会話がウィンドウの容量を超えると、古い内容から削除する必要があり、モデルが以前の重要なコンテキストを見失う可能性があります。

2025年のコンテキストウィンドウサイズ

コンテキストウィンドウは大幅に拡大してきました。2020年にはGPT-3が提供していたのは4,096トークンでした。2025年には、主要なモデルが次のサイズを提供しています。

  • GPT-4o and GPT-4o-mini: 128,000トークン(約100,000語)
  • Claude 3.5 Sonnet / Opus: 200,000トークン
  • Gemini 1.5 Pro: 1,000,000トークン(100万)
  • Gemini 1.5 Flash: 1,000,000トークン

128Kのコンテキストウィンドウには、約300ページのテキスト、長編小説1冊、または中規模のコードベース全体を格納できます。それでも、無限のコンテキストはまだ解決済みの問題ではありません。系列の長さに対してアテンションのコストが二次関数的に増加するため、非常に長いコンテキストは高コストになり、短く焦点を絞ったコンテキストより精度が低くなる場合もあります。

Lost in the Middle問題

研究によると、LLMはコンテキストウィンドウのすべての部分に同じように注意を向けるわけではありません。コンテキストの先頭(初頭効果)と末尾(親近性効果)の内容に最も注意を向ける傾向がある一方で、中央の内容はあまり安定して処理されません。

これはLost in the Middle問題と呼ばれます。RAGシステムには実際的な影響があります。取得した10個のドキュメントを連結し、最も関連性の高いものが中央に配置されると、モデルがそれを効果的に利用できない可能性があります。ベストプラクティスは、注入するドキュメントの中で最も重要なコンテキストを中央ではなく、先頭または末尾に配置することです。

コンテキストと会話:実践例

チャットアプリケーションでは、会話履歴全体がすべてのAPI呼び出しに含まれます。会話が長くなるほど、トークン数も増加します。平均100トークンのメッセージが50件ある会話では、履歴だけですでに5,000トークンを使用します。さらに2,000トークンのシステムプロンプトと10,000トークンのRAGコンテキストを加えると、ユーザーが次の質問をする前に17,000トークンに達します。

import tiktoken

def estimate_conversation_tokens(messages, model='gpt-4o'):
    enc = tiktoken.encoding_for_model(model)
    total = 3  # priming
    for msg in messages:
        total += 4  # per-message overhead
        total += len(enc.encode(msg.get('content', '')))
    return total

# Simulate a growing conversation
conversation = [
    {'role': 'system', 'content': 'You are a helpful coding assistant. ' * 20},  # ~100 tokens
]

for i in range(1, 21):
    conversation.append({'role': 'user', 'content': f'Question {i}: How do I implement feature X?'})
    conversation.append({'role': 'assistant', 'content': 'Here is how to implement that feature...' * 5})
    if i % 5 == 0:
        tokens = estimate_conversation_tokens(conversation)
        print(f'After {i} exchanges: {tokens} tokens')

実効コンテキストと最大コンテキスト

コンテキストウィンドウが大きいからといって、完全に埋めるべきとは限りません。研究では一貫して、コンテキストが埋まるほどモデルの精度が低下することが示されています。特に、長いコンテキストから特定の事実を正確に取得する必要があるタスクで顕著です。焦点が絞られた関連性の高い5,000トークンのコンテキストは、焦点の定まらない50,000トークンのコンテキストより良い回答を生成することがよくあります。

これが、すべてのドキュメントをコンテキストに詰め込むよりRAGが有効である中心的な理由です。RAGシステムは最も関連性の高い2~5個のチャンクだけを取得するため、コンテキストの焦点が保たれ、モデルの注意を重要な内容に集中させられます。1つの質問に答えるために本を丸ごと読むのではなく、本の索引を検索するようなものです。

ドキュメント処理への影響

長いコンテキストウィンドウにより、以前は不可能だった強力なドキュメント処理ワークフローが可能になります。現在では、50ページのPDF全体をGPT-4oに送って質問したり、複数の契約書を同時に要約して相互参照させたり、コードベース全体を分析してパターンやアンチパターンを見つけたりできます。

ただし、入力トークン100万個あたり約$0.15の場合、100,000トークンのドキュメントを1回のクエリで処理すると、1回あたり約$0.015かかります。ほとんど変更されないドキュメントに対して1日10,000回クエリを実行すると、重複した処理に1日$150を支払うことになります。そのため、実運用のドキュメント分析システムでは、キャッシュと前処理の戦略が非常に重要です。

コンテキストウィンドウとMax Tokensの関係

APIのmax_tokensパラメータは、合計コンテキストではなく出力の長さを制限します。コンテキストの合計は、入力トークンと出力トークンを合わせたものです。コンテキストウィンドウが128,000トークンで、入力に120,000トークンを使用する場合、max_tokensに何を設定しても、応答に使えるのは残りの8,000トークンだけです。

常に十分な出力用の予算を確保してください。会話型アシスタントでは、通常、出力用に2,000~4,000トークンを確保すれば十分です。コード生成や長文コンテンツでは、8,000~16,000トークンが必要になる場合があります。トークン予算の計算をコンテキスト組み立てロジックに組み込んでください。

import tiktoken

def check_context_budget(
    messages,
    model='gpt-4o',
    max_context=128000,
    min_output_tokens=2000
):
    enc = tiktoken.encoding_for_model(model)
    input_tokens = sum(
        len(enc.encode(m.get('content', ''))) + 4
        for m in messages
    ) + 3

    available_output = max_context - input_tokens
    if available_output < min_output_tokens:
        raise ValueError(
            f'Not enough output budget: only {available_output} tokens '
            f'remaining, need at least {min_output_tokens}.'
        )
    return input_tokens, available_output

コンテキスト要件に基づくモデルの選択

モデルを選ぶ際、コンテキストウィンドウのサイズは重要な基準の1つにすべきです。モデルのコンテキストウィンドウを、実際のユースケースに合わせてください。

  • 短いセッションのチャットアシスタント: 通常は8K~16Kで十分です。コスト効率を重視するならgpt-4o-miniを使用します
  • 中規模ドキュメントに対するドキュメントQ&A: 32K~128K。gpt-4oは品質とコストのバランスに優れています
  • 数百ページに及ぶ法務・契約分析: 128K~200K。長いコンテキストの処理性能を重視してClaudeを検討します
  • コードベース全体または書籍の分析: 500K~1M。現在はGemini 1.5 Proがトップです

必要なのが8Kだけなのに、1Mトークンのコンテキストウィンドウに料金を支払うのは、過剰で高コストです。実際のコンテキスト要件に合ったサイズのモデルを選んでください。

コンテキストキャッシュによるコスト削減

同じ大きなドキュメントやシステムプロンプトに対して何度もクエリを実行すると、毎回同じ内容のトークン化と処理に料金を支払うことになります。OpenAIのprompt cachingでは、同じプレフィックスが1,024トークンを超える場合、繰り返し使用されるプロンプトプレフィックスの入力トークン料金が自動的に50%割引されます。

キャッシュヒットを最大化するには、メッセージを安定した内容が先頭に来るように構成します。つまり、システムプロンプト、次に大きなドキュメントまたはコンテキスト、最後に変化するユーザーの質問という順序です。これにより、長く安定したプレフィックスがキャッシュされ、変化する小さなクエリだけがリクエストごとに通常料金で処理されます。

拡張すべき場合と要約すべき場合

大きなコンテキストウィンドウがある場合、増え続ける会話や大きなドキュメントを扱う方法は2つあります。拡張(すべてをコンテキストに保持する)と、要約(古い内容を圧縮してトークンを節約する)です。適切な選択はユースケースによって異なります。

次の場合は拡張を選びます。会話の以前の内容から具体的な事実を参照する必要がある場合、特定のセクションを引用する必要があるドキュメントを分析している場合、または要約によって重要なニュアンスが失われる場合です。次の場合は要約を選びます。以前の会話の具体的な表現よりも全体的なテーマが重要な場合、コンテキストの上限に近づいている場合、または同じコンテキストを何度も再利用する場合(要約を1回だけ実行すれば済むため)です。

本番環境でのコンテキスト長の監視

本番環境では、リクエストごとのコンテキスト長を重要な指標として追跡してください。コンテキスト長の平均が突然増加した場合、コンテキスト組み立てコードのバグ、ユーザーによる非常に長い入力の貼り付け、またはモデルの長い応答がコンテキストに再び追加されるフィードバックループを示している可能性があります。コンテキスト長がモデルの最大値の80%を超えたときにアラートを設定してください。

また、切り詰めイベントも追跡してください。これは、ウィンドウ内に収めるためにコンテキストを削る必要が生じた場合です。切り詰めが頻繁に発生する場合は、コンテキスト管理戦略の改善、より大きなコンテキストを持つモデルの採用、またはすべてを送信するのではなく関連する内容だけを取得するRAGベースのアプローチが必要です。

クイックチェック

このレッスンで扱ったAI Engineeringの概念を理解できているか確認しましょう。

レッスンのまとめ

このレッスンでは、コンテキストウィンドウとは、1回のAPI呼び出しにおける入力と出力を合わせた総トークン予算であること、Lost in the Middle問題とは、コンテキストの先頭と末尾の内容のほうが安定して処理される現象であること、そして焦点を絞った小さなコンテキストは、焦点の定まらない大きなコンテキストを上回ることが多いため、すべてのドキュメントを詰め込むよりRAGが適していることを学びました。次は、リクエストを送信する前にAPIコストを計算・予測する方法を見ていきます。

よくある質問

「Context Window:サイズと影響」レッスンは無料ですか?

はい。「Context Window:サイズと影響」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Engineering Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Engineering Academyコースには全4レッスンが含まれています。

「Context Window:サイズと影響」で何を学びますか?

context windowとは何か、会話の長さやドキュメント処理をどのように制限するかを学び、GPT-4o、Claude、Geminiのコンテキストサイズを比較します。 ブラウザで直接実行するハンズオンコードでAI Engineering Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Engineering Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Engineering Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Context Window:サイズと影響」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Engineering Academyレッスンでコードを書いて実行できますか?

はい。すべてのAI Engineering Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

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

  1. Tokenとは何か
  2. Context Window:サイズと影響
  3. APIコストの計算と予測
  4. Context内に収めるための戦略
← AI Engineering Academyに戻る