概要
このリリースでは、コンテキストウィンドウのサイズ(トークン数)を追跡できる新機能が追加されました。また、テレメトリのスパン終了タイミングに関するリグレッションの修正や、型互換性の問題の解消が含まれています。
リリース: v1.34.1
新機能
コンテキストトークンの追跡 (#2009)
この機能でできること:
EventLoopMetricsにlatest_context_sizeプロパティが追加され、モデルから報告される最新のコンテキストウィンドウサイズ(トークン数)を取得できますAgentResultにcontext_sizeプロパティが追加され、簡単にアクセスできます
使用例:
from strands import Agent
agent = Agent(tools=[...])
result = agent("Do something with tools")
# AgentResult から直接取得
print(f"コンテキストサイズ: {result.context_size} トークン")
# EventLoopMetrics から取得
print(f"最新のコンテキストサイズ: {agent.event_loop_metrics.latest_context_size} トークン")
ポイント:
- この値は LLM 呼び出し後に取得できる「遅延指標」です(呼び出し前の推定値ではありません)
- 追加の API 呼び出しは不要で、LLM が返す
inputTokensを再利用します - コンテキスト圧縮や外部化などの機能で、閾値ベースの判断を行う際に活用できます
- 全てのプロバイダーで動作します(
UsageTypedDict のinputTokensに正規化されます)
バグ修正
スパン終了タイミングのリグレッション修正 (#2032)
- v1.24.0 以降、
execute_event_loop_cycleスパンがサイクルごとの実際の所要時間を反映しなくなっていた問題を修正 - ツール使用で再帰呼び出しが発生した場合、親サイクルの OTel スパンが全ての再帰的な子が完了するまで開いたままになり、Langfuse や Jaeger などの可観測性バックエンドでサイクルごとのレイテンシーではなく累積レイテンシーが表示されていました
end_on_exit=Falseに切り替え、_end_span()で明示的にspan.end()を呼び出すように修正されました
型の非互換性を修正 (#2018)
Tracer._add_system_prompt_eventで mypy の型エラーが発生していた問題を修正content_blocks変数の型がlist[ContentBlock]として明示的にアノテーションされるようになりました
テスト環境での Langfuse 環境変数の分離 (#2022)
- 開発者がローカルで Langfuse 環境変数を設定している場合にテストが失敗する問題を修正
moto_envテストフィクスチャでOTEL_EXPORTER_OTLP_TRACES_ENDPOINTとLANGFUSE_BASE_URLもクリアするようになりました
まとめ
コンテキストウィンドウのトークン数を追跡できる便利な機能が追加され、テレメトリ関連の重要なバグが修正されたリリースです。