@shinyaz

Strands Agents の Structured Output は内部的にツールとして動作する

Strands Agents SDK の Structured Output で ConversionResult という Pydantic モデルを structured_output_model に渡したところ、メトリクスに見慣れないツール名が表示されて驚いた。

Output
tool_usage:
  get_exchange_rate: calls=1, success=1
  ConversionResult: calls=1, success=1

ConversionResult がツールとして計上されている。自分で定義したツールではないのに、なぜ tool_usage に出てくるのか。

調べてみると、Structured Output は内部的に Pydantic モデルをツール仕様に変換して LLM に登録する仕組みだった。LLM は通常のツール呼び出しと同じ方法で構造化データを出力し、SDK がバリデーションする。つまりエージェントループは「LLM → get_exchange_rate 呼び出し → 結果を受け取り → ConversionResult ツール呼び出し → バリデーション成功 → 完了」という流れになる。

デバッグ時に tool_usage に Pydantic モデル名が出ていたら、Structured Output の内部動作だと分かっていれば混乱しない。call_counterror_count でバリデーションの成功率も確認できるので、リトライが多発していないかのチェックにも使える。

共有する

田原 慎也

田原 慎也

ソリューションアーキテクト @ AWS

AWS ソリューションアーキテクトとして金融業界のお客様を中心に技術支援をしており、クラウドアーキテクチャや AI/ML に関する学びをこのサイトで発信しています。このサイトの内容は個人の見解であり、所属企業の公式な意見や見解を代表するものではありません。