【要約】入出力フォーマットで LLM トークンはどれだけ変わるのか [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
LLMをアプリケーションに組み込む際、データの構造化がコストやレイテンシに与える影響が不明確である。開発者は、JSON形式の入出力がテキスト形式と比較して、どの程度コストを増大させるか正確に把握できていない。具体的には以下の課題がある。
- ・JSON化がトークン効率を向上させるという直感的な予測が、実際には成立しない可能性がある。
- ・Structured Outputを利用した際のコスト増の所在が、入力側か出力側かが不明である。
- ・入力形式の選択が、モデルの解釈や出力の粒度にどう影響するかが未知数である。
// Approach
検証者は、Bedrock Converse APIとClaude Haiku 4.5を用い、4つの入出力パターンを比較した。入力と出力の組み合わせを変えることで、コストの所在を特定する手法を採用している。
- ・「text2text」「text2json」「json2text」「json2json」の4パターンを定義。
- ・LangChainの
with_structured_outputとPydanticモデルを使用。 - ・肉じゃがのレシピを題材に、入力・出力それぞれのトークン数を定量的に測定。
- ・スキーマ定義が
toolConfig経由で送信される仕組みに着目して分析。
// Result
検証の結果、Structured Outputのコスト増はほぼすべて「入力側」に発生することが判明した。出力の構造化は、信頼性と引き換えに入力コストを大幅に押し上げる。
- ・text2jsonでは、text2textと比較して入力トークンが約3.1倍(518→1,617)に増加。
- ・この増分は、
toolConfig経由で送信されるスキーマ定義に起因する。 - ・入力形式(text/JSON)によるトークン差は軽微(+28 tokens)であり、効率性に大きな差はない。
- ・JSON入力は、モデルが構造化データとして扱うため、出力トークンが増える傾向にある。
Senior Engineer Insight
> 開発者は「JSON出力=入力コスト増」というトレードオフを認識すべきだ。Structured Outputは出力の信頼性を担保するが、スキーマが複雑になるほど入力コストが跳ね上がる。大規模運用では、スキーマの簡素化や、コストと精度のバランスを考慮したプロンプト設計が不可欠である。また、JSON入力が必ずしもトークン節約に繋がらない点も、設計時の留意点となる。