Chapter 10

OpenAIのAPI料金の節約方法

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

この記事では、エンジニア向けに「OpenAIのAPI料金の節約方法」を解説しています。
この記事を読むことで、「どうしたら文章生成におけるAPI利用料金を節約できるか?」を知ることができます。

もちろん出費を抑えるという観点でも重要ですが、同時に計算量を減らして、電力消費量を抑えて、環境にやさしいシステムをつくる上でも重要です。

https://youtu.be/w9yvBsbDZR4

第1位:英語で質問する。

  • やっぱり英語での質問にすることが、一番インパクトが大きい上、現実的な節約方法だなと思いました。

  • 1つ前の記事で紹介したトークン数の比較を見ても一目瞭然で、「英語の方がトークン数は少ない」ことは明らかです。

  • また、日本語よりも英語で質問した方がより正確な情報をもらえるという話もあります。

  • おそらく英語の方が潤沢な学習データを使っているからでしょう。

第2位:必要十分なモデルを選定する。

  • OpenAIのAPIでは、モデルを選択できます。

  • 現時点での言語生成のモデルは4種類あり、安価なモデルから順番に「Ada < Babbage < Curie < Davinci」があります。

  • 現時点(2023年2月)の価格表は次のとおりです。

    モデル名 価格
    Davinci $0.0200 / 1K tokens
    Curie $0.0020 / 1K tokens
    Babbage $0.0005 / 1K tokens
    Ada $0.0004 / 1K tokens
  • 上記の表からわかるとおり、わざわざDavinciを使う必要がない質問(簡単な知識ベースの質問など)を一部Curieに任せることで、コストを1/10まで抑えられます。

実験:モデルごとの回答の比較

実際に、モデルごとにどれほど回答のレベルに違いがあるか観察してみようと思います。

Q1. 日本の首都は?

モデル名 回答文
Davinci 東京です。
Curie Tokyo
Babbage Tokyo
Ada Nara, Japan
  • Davinciは、よしなに日本語で返してくれた。
  • CurieとBabbageは、正しいが英語で回答した。
  • Adaは、誤った回答をした。

Q2. エンジニアとは?

モデル名 回答文
Davinci エンジニアとは、ソフトウェアやハードウェアなどを開発、設計、構築、保守、テストなどを行う専門家のことです。エンジニアは、コンピューターやネットワーク、機械、電子回路などの技術を使用して、製品やシステムを開発し、実装し、保守します。
Curie エンジニアとは、機械学習やコンピュータシステムの研究者、開発者、技術者などのこと。エンジニアは、機械学習やコンピュータシステムの生産に関する研究、開発、技術的な活動を行うための人材です。
Babbage An expert in a certain field.
Ada エンジニアは、エンジンを切り出す際に、エンジンの中に、コーナーを置き、コーナーの上にあるものを組み合わせて、コーナーの元にあるものを運動的にすることで、エンジンの有効期限を確保することができるようになる
  • Davinciは、とても的確に回答をした、
  • Curieは、Babbageよりかは的確な答えを日本語で回答した。
    • 若干データサイエンティストっぽいエンジニアを回答した。
  • Babbageは、間違いとも言えないが、かなり抽象的な上、英語で回答した。
  • Adaは、誤った回答をした。

Q3. 「エンジニアの学習方法」というタイトルのブログ記事の見出しを5つ作成してください。

モデル名 回答文
Davinci 1. エンジニアのための学習戦略
2. エンジニアのための最新学習法
3. エンジニアのための有効な学習方法
4. エンジニアのための効率的な学習方法
5. エンジニアのための成功する学習法
Curie ・エンジニアの学習方法1
・エンジニアの学習方法2
・エンジニアの学習方法3
・エンジニアの学習方法4
・エンジニアの学習方法5
Babbage 1.「エンジニアの学習方法」
2.「エンジニアの学習方法の知識」
3.「エンジニアの学習方法の経験」
4.「エンジニアの学習方法の精神」
5.「エンジニアの学習方法の精神的な成果」
Ada 1. スポーツ・カーバー
2. アドバイザー
3. クラシック
4. リヴァース
5. インドネシア
  • Davinciは、とても的確に回答をした、
  • Curieは、Babbageよりかは的確な答えを日本語で回答した。
    • 若干データサイエンティストっぽいエンジニアを回答した。
  • Babbageは、間違いとも言えないが、かなり抽象的な上、英語で回答した。
  • Adaは、誤った回答をした。

実験への所感

  • CurieとDavinciの間には、クリエイティビティと回答精度に大きな差がある。
  • Google検索して、上位に出てくる当たり前な知識(短文回答)であれば、Curieでも解決できそう。
  • BabbageとAdaは、利用できる用途が現状思い当たらない。

第3位:質問文を冗長にしない。

  • 入力した言葉のトークン数が多いほど、APIの課金料は高くなります。
  • そのため、質問文の中で「繰り返し同じことを言っていないか」を確認しましょう。
  • たとえば、以下のように文章を短縮できます(冗長を無くしているというよりも、この場合は情報の圧縮に近いですが)。
    • 前:「AIとは何か教えて欲しいです?」
    • 後:「AIとは何か?」

番外編:利用制限のかけ方

  • 実際に実務でAPIを用いる場合、APIの想定外の高額請求は避けたいと思います。

  • そこで、「ソフトリミット」と「ハードリミット」という2つの方法があります。

    • ソフトリミット:利用量が一定量を超えたら「メールで通知」。
    • ハードリミット:利用量が一定量を超えたら「APIの利用停止」。
  • これらのリミットは、APIの管理画面を開き、左側のメニューの中の「Billing」の中の「Usage limits」をクリックすると確認できます。

  • また、APIを実行するときに、「max_tokens」というパラメータを設定することで、それ以上のトークン数の出力はされないように制限をかけられます。