この文書について
非エンジニアの方に説明する機会があったので、記録しておきます。
■ OpenAI の料金表はこちら
https://openai.com/ja-JP/api/pricing/
今回は、「GPT-4o mini」を計算します
※ 2025.4.3 時点の料金
- 入力:$0.150 / 100万トークン
- 出力:$0.600 / 100万トークン
初心者の方向けに詳しく書くと、
- 入力は、プロンプト(命令書)の文字量
- 出力は、レスポンス(回答)の文字量
- チャット1回 = 入力 + 出力 です
まず日本語1文字に何トークンを消費するか
日本語におけるトークン換算の目安
種別 | 概算トークン数/文字 | 備考 |
---|---|---|
日本語の1文字(漢字・ひらがな・カタカナ) | 1~1.2 トークン | 句読点や記号も含めると増えることもある |
日本語の文章(平均) | 1文字 ≒ 1.1トークン | 長文のサンプルから計算した平均的な値 |
これで、100万トークン ÷ 1.1 ≒ 約90万文字の日本語入力 と考えてよさそうです。
入力
- $0.150 / 100万トークン(日本語で約90万文字)
- 日本語1文字あたり: 0.000000167ドル
- 1ドル150円の場合: 0.00002505円
- 日本語1文字あたり: 0.000000167ドル
出力
- $0.600 / 100万トークン(日本語で約90万文字)
- 日本語1文字あたり: 0.000000667ドル
- 1ドル150円の場合: 0.00010005円
- 日本語1文字あたり: 0.000000667ドル
※ 従量課金としての「見積書」を出す場合、この部分の説明になると思います。
具体的な見積もり
- 要約の場合を例にあげます
入力
- HTML から文字だけを除いて1,000文字の場合、$0.000167
出力
- 1,000文字なら $0.000667
- ※1,000文字以内で要約を作るとした場合
合計
- 入力: $0.000167 + 出力: $0.000667 = $0.000834(≒ 約0.1251円)
実際の要約処理の流れ
- 前処理: PHP の file_get_contents で要約するページの HTML を取得
- ヘッダ、フッタ、ナビ、広告コードなどを除く処理を行う
- プロンプトと合わせて、前処理で取得した本文をリクエスト
- レスポンスも合わせて(ページによりますが)、1,000~3,000文字程度のチャットになる
- 結論として、0.1~0.3円で、要約が作れることが分かりました
※ ウェブ検索を行うと、前処理は不要です(1回約10円かかります)
前処理を実装するかしないかで、かなりコストが変わってきます。
PHP での換算関数
AI というと、Python で利用される方が多いと思いますが、私は PHPer なので…。PHP での関数を残しておきます。
/**
* OpenAI の利用コストを計算する(GPT-4o mini)
* 料金表: https://openai.com/api/pricing/
* 2025年3月現在の料金表を元に計算
*
* @param int $promptTokens 使用した入力トークンの数。
* @param int $completionTokens 使用した出力トークンの数。
* @param float $exchangeRate 為替レート(USD/JPY)。
* @return array 日本円でのコスト(USD, JPY)
*/
function calCostGpt_4o_MiniInJPY($promptTokens, $completionTokens, $exchangeRate)
{
// 1,000トークンあたりの単価 (GPT-4o mini)
$pricePerMillionInputTokens = 0.15; // Input
$pricePerMillionOutputTokens = 0.60; // Output
// トークンのコストを計算
$promptTokensCostInUSD = ($promptTokens / 1000000) * $pricePerMillionInputTokens;
$completionTokensCostInUSD = ($completionTokens / 1000000) * $pricePerMillionOutputTokens;
// 合計コストを計算
$totalCostInUSD = $promptTokensCostInUSD + $completionTokensCostInUSD;
// 日本円でのコストを計算
$costInJPY = $totalCostInUSD * $exchangeRate;
return [$totalCostInUSD . 'ドル', round($costInJPY, 2) . '円'];
}
OpenAI 公式ツールでトークン数を計算する
-
Tokenizer
- テキスト内のトークンの合計数を確認できます
参考になりましたら、幸いです。