<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>コスト分析 on KnightLiブログ</title>
        <link>https://www.knightli.com/ja/tags/%E3%82%B3%E3%82%B9%E3%83%88%E5%88%86%E6%9E%90/</link>
        <description>Recent content in コスト分析 on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Sat, 25 Apr 2026 08:44:32 +0800</lastBuildDate><atom:link href="https://www.knightli.com/ja/tags/%E3%82%B3%E3%82%B9%E3%83%88%E5%88%86%E6%9E%90/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>LLM API はなぜ Token 課金なのか：入力・出力・コンテキストのコストをまとめて理解する</title>
        <link>https://www.knightli.com/ja/2026/04/25/llm-token-pricing-principles/</link>
        <pubDate>Sat, 25 Apr 2026 08:44:32 +0800</pubDate>
        
        <guid>https://www.knightli.com/ja/2026/04/25/llm-token-pricing-principles/</guid>
        <description>&lt;p&gt;LLM API の料金体系で最も混乱しやすい点の 1 つは、なぜほとんどのプラットフォームが最終的に &lt;code&gt;token&lt;/code&gt; という単位で課金するのか、ということです。要するに、&lt;strong&gt;なぜ大規模モデルは token ごとに課金され、しかも token の種類によって価格まで違うのか&lt;/strong&gt;、という疑問です。&lt;/p&gt;
&lt;p&gt;モデル API を使い始めたばかりの人が戸惑いやすいのは、モデル性能よりもむしろ請求額です。少し質問しただけなのに、なぜこんなに料金が増えるのか。なぜ入力は安く、出力は高いのか。なぜコンテキストが長くなるとコストが急に制御しづらくなるのか。&lt;/p&gt;
&lt;p&gt;これをシンプルに捉えるなら、まず次の一文を覚えておくと分かりやすいです。&lt;strong&gt;課金されているのは「1 回の回答」ではなく、推論全体で消費された計算資源と帯域です。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;1-token-とは何か&#34;&gt;1. token とは何か
&lt;/h2&gt;&lt;p&gt;LLM の課金でいう &lt;code&gt;token&lt;/code&gt; は、文字数でも単語数でもありません。モデルがテキストを処理するときの分割単位です。&lt;/p&gt;
&lt;p&gt;1 つの token は、たとえば次のようなものになり得ます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 つの漢字&lt;/li&gt;
&lt;li&gt;英単語の一部&lt;/li&gt;
&lt;li&gt;句読点&lt;/li&gt;
&lt;li&gt;よく出る短いテキスト断片&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そのため、API プラットフォームは通常「1 文ごと」や「1 リクエストごと」には課金しません。モデルが実際に読んだ token 数と生成した token 数に応じて課金します。&lt;br&gt;
これはリクエスト回数ベースの課金よりも合理的です。同じ 1 回のリクエストでも、20 文字だけ入力する場合もあれば、20 万 token のコンテキストを入れる場合もあるからです。消費される資源はまったく違います。&lt;/p&gt;
&lt;h2 id=&#34;2-なぜ入力と出力は別料金なのか&#34;&gt;2. なぜ入力と出力は別料金なのか
&lt;/h2&gt;&lt;p&gt;現在の多くのモデル API では、料金が次の 2 つに分かれています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入力 token 料金&lt;/li&gt;
&lt;li&gt;出力 token 料金&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;しかも一般的には、&lt;strong&gt;出力 token のほうが入力 token より高い&lt;/strong&gt;です。&lt;/p&gt;
&lt;p&gt;理由はそれほど難しくありません。&lt;/p&gt;
&lt;p&gt;モデルが入力を処理するときは、基本的には既存の内容を読み取り、エンコードしています。けれども出力を生成するときは、次の token を 1 つずつ予測し続ける必要があります。これは単に読むだけではなく、継続的に推論とサンプリングを行う処理なので、通常はより多くの計算資源を使います。&lt;/p&gt;
&lt;p&gt;大まかに言えば次のように考えられます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入力：資料をモデルに渡す&lt;/li&gt;
&lt;li&gt;出力：その場でモデルに回答を書かせる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;その場で書くほうが、資料を一度読むよりも計算コストが高くなりやすいため、出力価格が高いのはよくある設計です。&lt;/p&gt;
&lt;h2 id=&#34;3-なぜコンテキストが長いとコストが膨らみやすいのか&#34;&gt;3. なぜコンテキストが長いとコストが膨らみやすいのか
&lt;/h2&gt;&lt;p&gt;少し背景情報を足しているだけだと思っていても、請求の観点では想像以上に影響が大きいことがあります。&lt;/p&gt;
&lt;p&gt;理由は、&lt;strong&gt;モデルは通常、各リクエストで渡されたコンテキスト全体をもう一度処理する必要がある&lt;/strong&gt;からです。&lt;/p&gt;
&lt;p&gt;つまり、現在のリクエストに次のようなものが含まれていれば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;システムプロンプト&lt;/li&gt;
&lt;li&gt;会話履歴&lt;/li&gt;
&lt;li&gt;ツールの返り値&lt;/li&gt;
&lt;li&gt;長文書の断片&lt;/li&gt;
&lt;li&gt;ソースコードファイルの内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;それらはすべて入力 token として課金対象になります。&lt;/p&gt;
&lt;p&gt;請求額を本当に押し上げるのは、最後の一言の質問ではなく、その前にぶら下がっている長いコンテキストであることが多いです。&lt;br&gt;
会話のターン数が増え、ツール呼び出しが増え、履歴メッセージが何度も再投入されると、token コストはラウンドごとに膨らんでいきます。&lt;/p&gt;
&lt;h2 id=&#34;4-なぜツール呼び出しは特に-token-を増やしやすいのか&#34;&gt;4. なぜツール呼び出しは特に token を増やしやすいのか
&lt;/h2&gt;&lt;p&gt;Agent、コーディングアシスタント、ワークフロー自動化のような場面では、token 消費は通常のチャットよりかなり大きくなりがちです。&lt;/p&gt;
&lt;p&gt;問題は「モデルが少し長めに答えた」ことだけではありません。ワークフロー全体で次のような内容が絶えず発生するからです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ファイルを読む&lt;/li&gt;
&lt;li&gt;ログを確認する&lt;/li&gt;
&lt;li&gt;API を呼ぶ&lt;/li&gt;
&lt;li&gt;JSON を返す&lt;/li&gt;
&lt;li&gt;ツール結果をモデルに戻す&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ツール呼び出しの結果が次のラウンドのコンテキストに再投入されるたび、それは新たな入力 token になります。&lt;/p&gt;
&lt;p&gt;だからこそ多くの開発者は最終的にこう気づきます。&lt;br&gt;
&lt;strong&gt;問題はモデルの単価そのものではなく、ワークフローが token の請求額を何層にも積み上げていることがある&lt;/strong&gt;のです。&lt;/p&gt;
&lt;p&gt;たとえばコーディング Agent が次のことを連続で行うとします。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;プロジェクト構造を読む&lt;/li&gt;
&lt;li&gt;いくつかのソースファイルを開く&lt;/li&gt;
&lt;li&gt;テストを実行する&lt;/li&gt;
&lt;li&gt;エラーログをモデルに戻す&lt;/li&gt;
&lt;li&gt;さらに関連ファイルを読む&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;各ステップで、次のリクエストがより長いコンテキストを背負うことになります。単価が同じでも、総額はすぐに増えていきます。&lt;/p&gt;
&lt;h2 id=&#34;5-同じようなモデルでも価格差が大きいのはなぜか&#34;&gt;5. 同じようなモデルでも価格差が大きいのはなぜか
&lt;/h2&gt;&lt;p&gt;モデルごとの token 価格差は、単にベンダーが高く売りたいからというだけではありません。多くの場合、次のような要素と直接結び付いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;モデル規模&lt;/li&gt;
&lt;li&gt;推論効率&lt;/li&gt;
&lt;li&gt;コンテキスト長&lt;/li&gt;
&lt;li&gt;配備コスト&lt;/li&gt;
&lt;li&gt;ターゲット市場&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;モデルが大きく、アクティブパラメータが多く、推論経路が複雑になるほど、1 token を生成するコストは一般に高くなります。&lt;br&gt;
さらに超長コンテキスト、複雑な推論、ツール利用最適化まで対応するなら、基盤側の負荷はさらに増えます。&lt;/p&gt;
&lt;p&gt;そのため、価格設定は本質的に次のようなコストをカバーしています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU / アクセラレータ資源&lt;/li&gt;
&lt;li&gt;VRAM 使用量&lt;/li&gt;
&lt;li&gt;推論レイテンシ&lt;/li&gt;
&lt;li&gt;ネットワークとサービス安定性&lt;/li&gt;
&lt;li&gt;ピーク同時実行能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安いモデルが悪いとは限らず、高いモデルがすべての場面に向くわけでもありません。多くの場合、価格差は「その能力にどれだけの基盤コストがかかるか」を反映しています。&lt;/p&gt;
&lt;h2 id=&#34;6-なぜキャッシュ入力は安くなるのか&#34;&gt;6. なぜキャッシュ入力は安くなるのか
&lt;/h2&gt;&lt;p&gt;多くのモデルプラットフォームでは現在、次のような仕組みが提供されています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cached input&lt;/li&gt;
&lt;li&gt;prompt caching&lt;/li&gt;
&lt;li&gt;prefix caching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;共通する考え方はシンプルで、すでに処理した大きな入力断片を、毎回フル価格でゼロから再計算しないようにすることです。&lt;/p&gt;
&lt;p&gt;たとえば固定の system prompt、固定のツール説明、固定の長文書プレフィックスを毎ラウンドまったく同じように送るなら、プラットフォームはその一部をキャッシュできる可能性があります。すると同じ入力 token でも、キャッシュに当たった部分はより安い料金で計上できます。&lt;/p&gt;
&lt;p&gt;この仕組みがあるからこそ、多くの API 料金表には次のような複数の価格帯があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通常入力&lt;/li&gt;
&lt;li&gt;キャッシュ入力&lt;/li&gt;
&lt;li&gt;出力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;違いはテキストの意味ではなく、下層の計算が再利用できるかどうかです。&lt;/p&gt;
&lt;h2 id=&#34;7-安い-tokenが必ずしも安い総額にならない理由&#34;&gt;7. 「安い token」が必ずしも「安い総額」にならない理由
&lt;/h2&gt;&lt;p&gt;あるモデルが「100 万 token あたりとても安い」と書かれていると、総コストも必ず安いと思いがちです。ですが、実際にはそうとは限りません。&lt;/p&gt;
&lt;p&gt;総額は大まかに次の式で考えられます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;token 単価 × 実際の消費量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;そして実際の消費量は、さまざまな要因で膨らみます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロンプトが長すぎる&lt;/li&gt;
&lt;li&gt;履歴メッセージを整理しない&lt;/li&gt;
&lt;li&gt;ツール結果を戻しすぎる&lt;/li&gt;
&lt;li&gt;出力が冗長すぎる&lt;/li&gt;
&lt;li&gt;1 つのタスクを何度もやり直す&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり請求額を決めるのは単価だけではなく、通常は次の組み合わせです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;モデル単価&lt;/li&gt;
&lt;li&gt;各ラウンドの入力長&lt;/li&gt;
&lt;li&gt;各ラウンドの出力長&lt;/li&gt;
&lt;li&gt;呼び出し回数&lt;/li&gt;
&lt;li&gt;ワークフロー設計&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;だからこそ、単価の安いモデルでも Agent タスクでは最終的な総費用がそれほど安くならないことがあります。より多くのラウンド、補足コンテキスト、再試行が必要になることがあるからです。&lt;/p&gt;
&lt;h2 id=&#34;8-開発者は-token-コストをどう見積もるべきか&#34;&gt;8. 開発者は token コストをどう見積もるべきか
&lt;/h2&gt;&lt;p&gt;実プロジェクトで予算を安定して管理したいなら、まずは素朴な見積もり方法が役に立ちます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;1 リクエストあたりの平均入力 token 数を測る&lt;/li&gt;
&lt;li&gt;1 リクエストあたりの平均出力 token 数を測る&lt;/li&gt;
&lt;li&gt;1 つのタスクが何ラウンド必要か見積もる&lt;/li&gt;
&lt;li&gt;それをモデル単価に掛ける&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;たとえば次のようなイメージです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 ラウンドあたり入力 &lt;code&gt;8k tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;1 ラウンドあたり出力 &lt;code&gt;1k tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;1 タスクあたり &lt;code&gt;10&lt;/code&gt; ラウンド&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この場合、本当に消費しているのは「1 回のやり取り」ではなく：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入力およそ &lt;code&gt;80k tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;出力およそ &lt;code&gt;10k tokens&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;途中でログ、ツール結果、ファイル内容が増え続ければ、総量はさらに上がります。&lt;/p&gt;
&lt;p&gt;だから予算を見るときは、単一ラウンドではなく、&lt;strong&gt;タスク 1 件を最後まで回したときに何 token 消費するか&lt;/strong&gt;を見るべきです。&lt;/p&gt;
&lt;h2 id=&#34;9-実際に請求額を抑えるには&#34;&gt;9. 実際に請求額を抑えるには
&lt;/h2&gt;&lt;p&gt;すでに API や Agent を使っているなら、次の方法が特に効果的です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;system prompt を短くして重複表現を削る&lt;/li&gt;
&lt;li&gt;古い履歴を定期的に削る&lt;/li&gt;
&lt;li&gt;ツール出力は必要な項目だけ残す&lt;/li&gt;
&lt;li&gt;長文書は先に検索して必要部分だけ渡す&lt;/li&gt;
&lt;li&gt;出力長を制御して無制限な展開を防ぐ&lt;/li&gt;
&lt;li&gt;高価なモデルは高価値タスクに、安価なモデルは低価値タスクに使う&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;多くの場合、節約の近道はむやみに安いモデルへ切り替えることではなく、まずワークフロー内の無駄な token 消費を削ることです。&lt;/p&gt;
&lt;h2 id=&#34;10-結局どう理解すればよいか&#34;&gt;10. 結局どう理解すればよいか
&lt;/h2&gt;&lt;p&gt;LLM の token 課金とは、要するに「モデルがどれだけ読み、どれだけ推論し、どれだけ書いたか」に対する課金です。&lt;/p&gt;
&lt;p&gt;これは従来のソフトウェアのように、アカウント単位、回数単位、月額課金だけで資源消費を表しきれる世界ではありません。モデル呼び出しは動的な計算プロセスであり、送るコンテキスト量、呼ぶツール、求める出力長がすべて直接コストに反映されます。&lt;/p&gt;
&lt;p&gt;だから大切なのは価格表を暗記することではなく、まず次の直感を持つことです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長いコンテキストは入力コストを増やす&lt;/li&gt;
&lt;li&gt;長い出力は生成コストを増やす&lt;/li&gt;
&lt;li&gt;ツールチェーンは総 token を増幅する&lt;/li&gt;
&lt;li&gt;キャッシュとワークフロー設計は請求額を大きく変える&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この感覚がつかめれば、多くの LLM API の価格構造はかなり理解しやすくなります。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
