Upgrade to Pro — share decks privately, control downloads, hide ads and more …

どうしてStrands Harnessはトークンコストを抑えられるのさ?

Avatar for Tatsuya Tatsuya
October 19, 2026

どうしてStrands Harnessはトークンコストを抑えられるのさ?

Avatar for Tatsuya

Tatsuya

October 19, 2026

More Decks by Tatsuya

Other Decks in Technology

Transcript

  1. 自己紹介 鈴木 辰弥(す ずたつ) (X:@tatsupoyo37685) • • • • •

    所属:SIer(社会人2年目エンジニア) 業務:電力系グローバルPJの開発支援 趣味:ライブ/フェス参戦 好きなAWSサービス:AWS CloudFormation 入門中の技術スタック:Strands Agents
  2. 話すこと/話さないこと • 話すこと ◦ Strands Harnessの概要 ◦ Strands Harnessのトークンコストを削減する3つのメカニズム •

    話さないこと ◦ Strands Harnessが提供する組み込み機能の詳細 ◦ トークンコスト削減のベストプラクティス
  3. メカニズム①:コンテキストの自動要約 • コンテキスト使用率が 85%に達すると、古いターンを要約 ⇒直近3件と一番古い1件を残し、それ以外の会話履歴全体を要約 コンテキスト変換前(コンテキスト使用率 85%超) コンテキスト変換後(要約済) [ [

    { "role": "user", "content": [{ "text": "フレームワークベスト3を調査して"}]}, { "role": "assistant", "content": [{ "text":"エージェント構築で代表的な…"}]}, { "role": "user", "content": [{ "text":"特徴と違いを詳しく教えて"}]}, { "role": "assistant", "content": [{ "text":"詳細解説… \n| 焦点 | 設計... | ... (長文Markdown比較表)"}] }, { "role": "user", "content": [{ "text":"メリットとデメリットは?"}]}, { "role": "assistant", "content": ["text": "メリット・デメリットの解説…"]}, { "role": "user", "content": ["text":"どのようなユースケース…"]} ] { "role": "user", "content": [ { "text": "フレームワークベスト3を調査して" }, { "text": "[Summarized: 3 messages, ~203 tokens]\n\nThe assistant explained... 1. Architecture-Based... 2. Event-Driven... 3. Agent-Oriented Simulation..." }, { "text": "メリットとデメリットは?" } ] }, { "role": "assistant", "content": ["text": "メリット・デメリットの解説…"]}, { "role": "user", "content": ["text":"どのようなユースケース…"]} ]
  4. メカニズム②: Tool実行結果の最適化 • 1,500トークン超のTool実行結果は真ん中の文章を切り詰め、前後の文章と 参照キー(toolUseId)のみをコンテキストに保持 ログ取得Tool実行結果(1,500トークン超) Agentが保持するコンテキスト(最適化後) [2026-10-12 22:00:01] INFO

    [MainThread] [Truncated: 1 block, ~1,806 tokens] [2026-10-12 22:00:01] INFO [MainThread] Starting application server on port 8080... Starting application server on port 8080... [2026-10-12 22:00:02] DEBUG [InitWorker] Loading configurations from /etc/app/config.yaml ... (中略:ログ出力が続く ) … [2026-10-12 22:30:15] ERROR [PaymentWorker] Transaction timeout occurred for tx_id=987654321. Rolling back… [2026-10-12 22:30:16] ERROR [PaymentWorker] Database deadlock detected on table 'orders'. Aborting transaction. ... [... 5,410 chars elided ...] … [2026-10-12 22:30:16] ERROR [PaymentWorker] Database deadlock detected on table 'orders'. Aborting transaction. [Stashed] [ref:{toolUseId}] 必要時に参照 (retrieve_context) ストレージに退避 toolUseId
  5. メカニズム③:プロンプトキャッシング • Cache Pointを追加することで、指定位置までのプロンプトがキャッシュ対象となる。 Cache Point 追加前のリクエスト { Cache Point

    追加後 (Bedrock上のClaudeモデル) { "toolConfig": { "tools": [ {"toolSpec": "search_aws"}, {"toolSpec": "get_cost"} ] }, "system": [ {"text": "あなたはAWSの専門家です"} ], "messages": [ {"role": "user", "content": [ {"text": "Prompt Cacheについて教えて"} ]} ] "toolConfig": { "tools": [ {"toolSpec": "search_aws"}, {"toolSpec": "get_cost"}, {"cachePoint": {"type":"default"}} ] }, "system": [ {"text": "あなたはAWSの専門家です"}, {"cachePoint": {"type":"default"}} ], "messages": [ {"role": "user", "content": [ {"text": "Prompt Cacheについて教えて"}, {"cachePoint": {"type":"default"}} ]} ] } } tools Tool definitions ↓ Cache Point ① ↓ system System Prompt ↓ Cache Point ② ↓ messages 固定された過去の会話 ↓ Cache Point ③
  6. メカニズム③:プロンプトキャッシング ① 初回リクエスト: Cache PointまでをCache Write { { "toolConfig": {

    "tools": [ {"toolSpec": "search_aws"}, {"toolSpec": "get_cost"}, {"cachePoint": {"type":"default"}} ] }, "system": [ {"text": "あなたはAWSの専門家です"}, {"cachePoint": {"type":"default"}} ], "messages": [ {"role": "user", "content": [ {"text": "Prompt Cacheについて教えて"}, {"cachePoint": {"type":"default"}} ]} ] } ② 2回目以降のリクエスト: キャッシュに共通部分があれば Cache Read 順番に確認 tools Tool definitions ↓ Cache Point ① ↓ system System Prompt ↓ Cache Point ② ↓ messages 固定された過去の会話 ↓ Cache Point ③ "toolConfig": { "tools": [ {"toolSpec": "search_aws"}, {"toolSpec": "get_cost"}, ] }, "system": [ {"text": "あなたはAWSの専門家です"}, ], "messages": [ {"role": "user", "content": [ {"text": "Prompt Cacheについて教えて"}, ]}, ・・・ {"role": "user", "content": [ {"text": "新規ユーザープロンプト"}, ]} ] } 共通する部分は Cache Read(安い) 新規入力は 通常のInput処理
  7. まとめ • Strands Harnessは「コンテキストを効率的に扱う」ことで トークンコストを削減 1. コンテキストの自動要約 ⇒ 圧迫した過去の会話を要約 2.

    Tool実行結果の最適化 ⇒ 不要なTool実行結果を退避 3. プロンプトキャッシング ⇒ 繰り返し使う部分をCache Readで再利用 • トークンコストを抑えたエージェント開発の第一歩にStrands Harness