Share
Embed
Transcript
12 slides
-
自己紹介 鈴木 辰弥(す ずたつ) (X:@tatsupoyo37685) • • • • •
所属:SIer(社会人2年目エンジニア) 業務:電力系グローバルPJの開発支援 趣味:ライブ/フェス参戦 好きなAWSサービス:AWS CloudFormation 入門中の技術スタック:Strands Agents -
話すこと/話さないこと • 話すこと ◦ Strands Harnessの概要 ◦ Strands Harnessのトークンコストを削減する3つのメカニズム •
話さないこと ◦ Strands Harnessが提供する組み込み機能の詳細 ◦ トークンコスト削減のベストプラクティス -
高効率エージェントを提供: Strands Harness • 他のハーネス(エージェントを動かす実行基盤)と比較して、 Strands harnessはコストが28%(⇒34%)低い Strands Harnessってなに? どうしてトークンコスト削減できてるの?
https://strandsagents.com/blog/introducing-strands-harness/ -
Strands Harness とは 1行で構築できる “完成形”のAgentを提供 • システムプロンプト/ツール/セッション管理/メモリ/コンテキスト管理が最初か ら設定済み • create_harness()
のわずか1行で実運用向けのエージェントが構築 • 優れたトークン効率 ⇒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":"どのようなユースケース…"]} ] -
メカニズム②: 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 -
メカニズム③:プロンプトキャッシング • 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 ③ -
メカニズム③:プロンプトキャッシング ① 初回リクエスト: 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処理 -
まとめ • Strands Harnessは「コンテキストを効率的に扱う」ことで トークンコストを削減 1. コンテキストの自動要約 ⇒ 圧迫した過去の会話を要約 2.
Tool実行結果の最適化 ⇒ 不要なTool実行結果を退避 3. プロンプトキャッシング ⇒ 繰り返し使う部分をCache Readで再利用 • トークンコストを抑えたエージェント開発の第一歩にStrands Harness