Chapter 09

OpenAIのAPI料金の計算方法

ますみ@エンジニア
ますみ@エンジニア
2023.03.10に更新

この記事では、エンジニア向けに「OpenAIのAPI料金の計算方法」を解説しています。
この記事を読むことで、「トークン」という概念を理解した上で、文章生成APIを利用するときにかかる利用料金の計算方法を理解できます。

https://youtu.be/uAB-Bnblg50

トークンとは何か?

  • トークンとは、一言で言うと「単語の断片」です。
    • イメージとしては、「文字(Character)と単語(Word)の間の単位」です。
    • たとえば、"Hello World"という文字列の場合、単語数が2、文字数が11、そしてトークン数は2となります。
    • 「あれ、そしたら、単語の断片ではなく、単語なのでは?」と思ったかも知れません。
      • おっしゃるとおり、単語数とトークン数が一致する場合もあります。しかし、必ずしもいつでも一致するとは限りません。
    • たとえば、"Hello Kubernetes"という文字列の場合、単語数が2、文字数が16ですが、トークン数は5となります。
    • このように単語数以下になることはあっても、多くなることはないため、「文字と単語の間の単位」というイメージになります。
  • そして、API料金は、このトークン数に応じて課金されるため、トークンの理解は非常に重要です。
  • 別の見方をすると、トークンを理解することで、どうしたら課金量を節約できるかも理解できます。
  • 節約方法は、次の記事で解説します。

https://zenn.dev/umi_mori/books/chatbot-chatgpt/viewer/how_to_save_openai_api_prices

日本語の場合

  • ここで、「日本語の場合、何文字で1トークンになるの?」と気になった方もいると思います。

  • 「OpenAIのAPI料金を計算してみよう!」という文字列の場合、各文字は次のようなトークン数になります。

  • この図では、赤い文字は1トークン分を、青い文字は2トークン分を、緑の文字は3トークン分を表しています。

  • ご覧の通り、2トークンの漢字もあれば、3トークンの漢字もあることから、簡単に暗算することはできません。

  • 1つ言えるとしたら、ひらがなよりも漢字の方がトークン数は大きくなる傾向があります。

英語の場合

  • では、「OpenAIのAPI料金を計算してみよう!」という文字列を英訳した「Let's calculate OpenAI's API fees!」という文字列だと何トークンになるのでしょうか?
  • 結果は、なんと9トークンになりました。元々25トークンだったため、英語で入力することによりかなりトークン数を節約できることがわかります。

API料金の計算方法

  • 文章生成APIにおける「API料金の計算方法」は次の通りです。
  • 結論として、API料金は次の4つ要素から計算されます。

    • 使用モデル
    • 使用モデルにおける利用単価
    • 入力トークン数
    • 出力トークン数
  • 具体的に使用モデルが決まったら、その「利用単価」×「入力トークン数と出力トークン数の和」という計算式で求められます。

計算例

  • たとえば、使用モデルが「text-davinci-003」な時、現在の利用単価は、1000トークンごとに$0.02です。
  • そして、「AIとは何か?」と質問をして、「人工知能の略称です。」と返答が返ってきた時、入力トークン数と出力トークン数の合計は、26になります。
  • そのため、計算をすると、約0.07円という計算になります。
  • 実際には、もっと出力トークン数が多くなると思いますが、このようにAPI料金は計算できます。

注意事項

  • ここで、一点注意事項があります。
  • 出力トークン数は、最終的に採用した出力ではなく、モデルが「計算結果として出力したトークン数」になる場合があります。
  • そのため、「生成結果数(n)」や「最良出力選定時の候補数(best_of)」が1より大きい場合は、出力トークン数が増加します。