OpenAI APIの価格|APIの利用中に利用料金も自動計算できる!
現在、OpenAI APIはAI領域で一番汎用されているAPIになります。それでは、OpenAI APIの利用料金はいくらですか?本文では、OpenAIの各モデルのAPIの価格を紹介した上、OpenAI APIを利用する時に同時に消化するトークン数とコストを自動計算する方法をも紹介します。
OpenAI APIはOpenAI社が提供するサービスのChatGPT、Dalle3などのサービスのAPI(Application Programming Interface)になります。現在、OpenAI APIはAI領域で一番汎用されているAPIになります。それでは、OpenAI APIの利用料金はいくらですか?
本文では、OpenAIの各モデルのAPIの価格を紹介した上、OpenAI APIを利用する時に同時に消化するトークン数とコストを自動計算する方法をも紹介します。
そして、本文で紹介したガイドを参照して、ApidogでOpenAI APIを利用すると同時に、それが消費するトークン数及びコストを自動的に計算することもできますので、非常に便利です。それでは、下記のボタンからこの完全無料のAPIツールを取得しましょう👇👇👇
OpenAI APIとは
OpenAI APIとも呼ばれ、OpenAIが提供するプログラムのAPI(Application Programming Interface)になります。開発者がOpenAI APIを通じて、GPT API、DALLE 3 APIなどのサービスを利用することができます。OpenAIが提供してくれる一般ユーザー向けのサービスであるChatGPTやDALLE3とは異なり、OpenAI APIは、ChatGPTやDalle3などのOpenAIのAIモデルを利用してアプリを開発したり、これらのAIモデルを自分のプロジェクトに導入したりする時に利用されます。
OpenAI APIの価格:利用料金を解説
ChatGPT APIの料金体制といえば、利用する言語モデルによってずいぶん違っています。現在、利用可能なChatGPTが推奨されている言語モデルには、GPT-4、GPT-3.5 Turbo、Fine-tuning models、Embedding models、Base models、Image models、Audio modelsといった7つがあります。各モデルには、サブモデルも分けられています。それぞれの料金体制も違っていますし、出力と入力に利用されるトークンの利用料金も違っています。
GPT-4 Turboの料金
OpenAIが提供するGPT-4 Turboという大規模言語モデルのプレビュー版の料金体系は次のようになります。
GPT-4 Turboには、gpt-4-0125-preview、gpt-4-1106-preview、gpt-4-1106-vision-previewの3つのモデルがあり、いずれも入力1Mトークンあたり$10.00、出力1Mトークンあたり$30.00の料金設定となっています。
つまり、GPT-4 Turboは高性能な自然言語処理モデルですが、その分利用料金も高額になる可能性があることが読み取れます。ユーザーはモデルの性能と料金のバランスを考慮する必要があるでしょう。
GPT-4の料金
GPT-4言語モデルの料金体系には、2つのオプションがあります。
- gpt-4: これはGPT-4の標準バージョンです。入力1Mトークンあたり$30.00、出力1Mトークンあたり$60.00の料金がかかります。
- gpt-4-32k: これはコンテキスト長が長いGPT-4の上位バージョンです。入力1Mトークンあたり$60.00、出力1Mトークンあたり$120.00と、標準のgpt-4の2倍の価格設定になっています。
GPT-4が幅広い一般的な知識とドメイン知識を持ち、自然言語での複雑な指示に従って難しい問題を正確に解決できる能力を強調しています。しかし、より高性能なgpt-4-32kを利用するには、標準バージョンよりもかなり高い料金を支払う必要があります。
GPT-3.5 Turboの料金
そして、GPT-3.5 Turboモデルファミリーについて説明しています。gpt-3.5-turbo-0125はこの中の旗艦モデルで、16Kのコンテキストウィンドウをサポートし、対話用に最適化されています。gpt-3.5-turbo-instructは指示付きモデルで、4Kのコンテキストウィンドウのみをサポートします。それぞれの料金は、1Mの入力トークンにつき、0.5米ドルと1.5米ドルになりますが、1Mの出力トークンにつき、1.5米ドルと2ベイドルになります。
Assistants APIの料金
開発者はAssistants APIとツールを使って独自のAIアシスタントアプリケーションを構築できます。検索機能では、アシスタントごとにファイル保存料金がかかります。料金は選択した言語モデルのトークン料金に基づきます。Code InterpreterとRetrievalとの2つのサブモデルの料金は、0.03米ドル/セッションと0.2米ドル/GB /assistant/dayになります。
Fine-tuningモデルの料金
Fine-tuningを利用することで、ユーザーは独自のデータでOpenAIの基本モデルをFine-tuningでき、その後はFine-tuningした独自モデルの利用分のみ課金されます。gpt-3.5-turboやdavinci-002、babbage-002といった3つのモデルのそれぞれの料金は、1Mのトレーニングトークンにつき、8米ドル、6米ドルと0.41Mになり、1Mの入力トークンにつき、3米ドル、12米ドルと1.6米ドルになり、1Mの出力トークンにつき、6米ドル、12米ドルと1.6米ドルになります。
Embeddingモデルの料金
Embeddingsモデルの利用料金といえば、text-embedding-3-smallが1Mトークンあたり$0.02、text-embedding-3-largeが$0.13、ada v2が$0.10となっています。
Baseモデルの料金
Base modelsの料金としては、davinci-002が1Mトークンあたり$2.00、babbage-002が$0.40となっています。embeddings modelsやimage modelsと比べると、base modelsの方が料金が高くなっている点が特徴的です。
画像生成モデル(Dalle3)の料金
Image modelsの料金を示しています。DALL-E 3の標準品質の1024x1024解像度が1画像あたり$0.04、HDの同解像度で$0.08となっています。DALL-E 2は低解像度ほど安価で、1024x1024で$0.02、512x512で$0.018、256x256で$0.016となります。
音声モデルの料金
Audio modelsの料金を示しています。Whisperが1分あたり$0.006(最寄りの秒数で切り上げ)、TTSが1M文字あたり$15.00、TTS HDが$30.00となっています。また、古いモデルの料金も記載されており、gpt-3.5-turbo系の料金が異なる入出力サイズごとに提示されています。
OpenAI APIの各モデルの料金のまとめ
以下に各モデルの料金をテーブルにまとめます。
モデル名 | 入力1Mトークンあたり料金 | 出力1Mトークンあたり料金 |
---|---|---|
GPT-4 Turbo | $10.00 | $30.00 |
GPT-4 | ||
- gpt-4 | $30.00 | $60.00 |
- gpt-4-32k | $60.00 | $120.00 |
GPT-3.5 Turbo | $0.50 | $1.50 |
Assistants API | ||
- Code Interpreter | $0.03 / セッション | |
- Retrieval | $0.20 / GB /assistant/day | |
Fine-tuning モデル | ||
- gpt-3.5-turbo | $8.00 (トレーニングトークン), $3.00 (入力トークン), $6.00 (出力トークン) | |
- davinci-002 | $6.00, $12.00, $12.00 | $0.41, $1.60, $1.60 |
- babbage-002 | $0.40, $12.00, $12.00 | $0.40, $1.60, $1.60 |
Embedding モデル | ||
- text-embedding-3-small | $0.02 | |
- text-embedding-3-large | $0.13 | |
- ada v2 | $0.10 | |
Base モデル | ||
- davinci-002 | $2.00 | |
- babbage-002 | $0.40 | |
画像生成モデル | ||
- DALL-E 3 | ||
- 1024x1024 | $0.04 | |
- HD 1024x1024 | $0.08 | |
- DALL-E 2 | ||
- 1024x1024 | $0.02 | |
- 512x512 | $0.018 | |
- 256x256 | $0.016 | |
音声モデル | ||
- Whisper | $0.006 / 分 (秒数で切り上げ) | |
- TTS | $15.00 | |
- TTS HD | $30.00 |
すべてのモデルの使用料金を知りたい場合、ChatGPT APIの公式サイトにアクセスして、OpenAI APIの料金表を確認する事がおすすめです。
OpenAI API料金の注意事項
以上のChatGPT API料金体制を確認した上、いくつかの注意実行があります。
- ChatGPT API料金は1000トークンを単位に発生します。入力するメッセージもレスポンスのメッセージもトークンを消費することがあります。
- 日本語は英語より消費するトークン数が多くなります。英語の場合は、通常1つの単語は1つのトークンを消費していますが、日本語の場合、1つの仮名は1トークン強、1つの漢字は2トークンを消費しています。そこで、トークン数を節約するために、英語に変換して質問をするか、質問をなるべく簡潔にする必要があるのでしょう。
OpenAI APIの利用トークン数とコストの自動計算を実現
OpenAI APIの利用トークン数とコストの自動計算を実現するために、上記で紹介したようにOpenAIが提供するAIモデルの料金を知っておく必要があります。これを踏まえて、入力と出力の文字数を自動的にトークン値に変換し、1回のAPIセッション中にリアルタイムでコストの推定額を計算する方法を示します。
米ドル以外でコストの推定額を知りたい場合は、リアルタイム為替レートを使用して、それを他の通貨に変換する必要があります。本文では、Apidogという包括的なAPI管理ツールを利用して、OpenAI APIの利用トークン数とコスト(日本円表記)を実現する方法を皆さんに紹介します。
OpenAI APIの利用中に、利用済みのトークン数及びコストを計算するには、次のプロセスが必要となります:
1. 入力と出力のトークン数を計算する。
2. リアルタイム為替レートを使用して、消費トークンの料金を日本円に変換する。
トークン数の計算ライブラリ
コンテンツを正確にトークン値に変換するには、サードパーティのトークン変換ライブラリが必要です。次の例では、APIテストプロセス中に入力/出力データをトークン数に変換するために、OpenAI GPT Token Counterライブラリを使用しています。
まず、JSファイルを作成して、次のコードを入れます:
Node.js コード:
const openaiTokenCounter = require('openai-gpt-token-counter');
const text = process.argv[2]; // コマンドライン引数からテストコンテンツを取得
const model = "gpt-4"; // 使用したいOpenAIモデルに置き換える
const tokenCount = openaiTokenCounter.text(text, model);
const characterCount = text.length; // 文字数を計算
console.log(`${tokenCount}`);
Node.jsスクリプトの名前をgpt-tokens-counter.js
に変更し、他のプログラミング言語の呼び出しセクションで説明されているように、Apidogの外部プログラムディレクトリに保存します。
そして、OpenAI GPT Token Counterをパソコンにインストールする必要があります。このパッケージを次のコマンドでインストールできます。
npm install openai-gpt-token-counter
リアルタイム為替レートAPI
入力と出力のトークン値を取得した後、リアルタイム為替レートAPIを使用して、消費したトークンの料金を日本円(JPY)に変換する必要があります。この記事では、リアルタイム為替レートを取得するために Currencylayer APIを呼び出します。ここからアカウント登録してAPIキーを取得できます。
OpenAI APIへの入力コストの計算
入力に消費するOpenAIのトークンを計算
入力値は、ユーザーがAIアプリケーションにリクエストを発行するときに入力する質問やプロンプトと理解できます。 そのため、リクエストのbody
からmessages
パラメータのcontent
内容を抽出し、カスタムスクリプトを前処理に追加すると、それをトークン値に変換できます。
前処理セクションで、入力値をトークンに変換するため、カスタムScriptを追加する必要があります:
try {
var jsonData = JSON.parse(pm.request.body.raw);
var content = jsonData.messages[0].content; // メッセージのコンテンツを取得
var result_input_tokens_js = pm.execute('gpt-tokens-counter.js',[content])
console.log(content);
pm.environment.set("RESULT_INPUT_TOKENS", result_input_tokens_js);
console.log("入力トークン値: " + pm.environment.get("RESULT_INPUT_TOKENS"));
} catch (e) {
console.log(e);
}
「送信」ボタンをクリックすると、入力値から変換されたトークンの推定値がコンソールに表示されます。
トークンを実際の消費額(JPY)への変換
入力から消費されたトークンの値を取得した後、リアルタイム為替レートAPIを使用して、USDからJPYへの為替レーどを取得する必要があります。前処理に次のスクリプトを追加します:
pm.sendRequest("http://apilayer.net/api/live?access_key=YOUR-API-KEY¤cies=JPY&source=USD&format=1", (err, res) => {
if (err) {
console.log(err);
} else {
const quotes = res.json().quotes;
const rate = parseFloat(quotes.USDJPY).toFixed(3);
pm.environment.set("USDJPY_RATE", rate);
var USDJPY_RATE = pm.environment.get("USDJPY_RATE");
// 前のスクリプトからRESULT_INPUT_TOKENS変数を取得
var RESULT_INPUT_TOKENS = pm.environment.get("RESULT_INPUT_TOKENS");
// トークンの為替レート値を計算
const tokensExchangeRate = 0.03; // 1000トークンのUSD価格(GPT-4-8kコンテキスト入力価格を参照)
// 推定JPY価格を計算
const JPYPrice = ((RESULT_INPUT_TOKENS / 1000) * tokensExchangeRate * USDJPY_RATE).toFixed(2);
pm.environment.set("INPUT_PRICE", JPYPrice);
console.log("推定コスト: " + "¥" + JPYPrice);
}
});
OpenAI APIからのレスポンスのコスト
SSEからのレスポンスを連結
サーバー送信イベントでOpenAI APIを呼び出す場合(Content-Typeパラメータにtext/event-stream
が含まれる場合)、Apidogは自動的に返されたデータをSSEイベントとして解析します。通常、SSEイベントの各返り値には断片的な文字(通常1文字)しか含まれていません。この場合、返されたすべてのコンテンツを完全な文に連結する必要があります。
API定義の後処理に移動し、レスポンスコンテンツを抽出し連結を完了するカスタムスクリプトを追加します。
レスポンスの連結用の後処理のスクリプト
// レスポンステキストを取得
const text = pm.response.text()
// テキストを行に分割
var lines = text.split('\n');
// "content"パラメータを格納する空の配列を作成
var contents = [];
// 各行を反復処理
for (var i = 0; i < lines.length; i++) {
const line = lines[i];
// "data:"で始まらない行はスキップ
if (!line.startsWith('data:')) {
continue;
}
// JSONデータの解析を試みる
try {
var data = JSON.parse(line.substring(5).trim()); // 先頭の"data: "を削除
// "choices"配列から"content"パラメータを取得し、配列に追加
contents.push(data.choices[0].delta.content);
} catch (e) {
// 有効なJSONデータでない場合は現在の行を無視
}
}
// join()メソッドを使用して"content"パラメータを連結
var result = contents.join('');
// 本文の"Visualize"タブに結果を表示
pm.visualizer.set(result);
// 結果をコンソールに出力
console.log(result);
リクエスト後、コンソールで完全なレスポンスコンテンツを取得できます。
レスポンス内容に消費するOpenAIのトークンを計算
完全なレスポンス内容を取得した後、サードパーティのライブラリを使用してそれをトークン値に変換する必要があります。後処理に次のカスタムScriptを追加すると、Apidogが外部のgpt-tokens-counter.js
スクリプト(具体的なスクリプトは「前提条件」の「トークン数変換ライブラリ」部分までご参照)を呼び出してトークン値を取得できます。
// レスポンステキストを取得
const text = pm.response.text()
// テキストを行に分割
var lines = text.split('\n');
// "content"パラメータを格納する空の配列を作成
var contents = [];
// 各行を反復処理
for (var i = 0; i < lines.length; i++) {
const line = lines[i];
// "data:"で始まらない行はスキップ
if (!line.startsWith('data:')) {
continue;
}
// JSONデータの解析を試みる
try {
var data = JSON.parse(line.substring(5).trim()); // 先頭の"data: "を削除
// "choices"配列から"content"パラメータを取得し、配列に追加
contents.push(data.choices[0].delta.content);
} catch (e) {
// 有効なJSONデータでない場合は現在の行を無視
}
}
// join()メソッドを使用して"content"パラメータを連結
var result = contents.join('');
// 本文の"Visualize"タブに結果を表示
pm.visualizer.set(result);
// 結果をコンソールに出力
console.log(result);
// 出力トークン数を計算
var RESULT_OUTPUT_TOKENS = pm.execute('./gpt-tokens/gpt-tokens-output-counter.js', [result])
pm.environment.set("RESULT_OUTPUT_TOKENS", RESULT_OUTPUT_TOKENS);
console.log("出力トークン値: " + pm.environment.get("RESULT_OUTPUT_TOKENS"));
レスポンスの実際コスト(JPY)を計算
入力値に消費したトークン値のコストと同様に、レスポンスの実際コスト(JPY)はトークン値に為替レートを乗算することで取得できます。
後処理に次のスクリプトを追加します:
pm.sendRequest("http://apilayer.net/api/live?access_key=YOUR-API-KEY¤cies=JPY&source=USD&format=1", (err, res) => {
if (err) {
console.log(err);
} else {
const quotes = res.json().quotes;
const rate = parseFloat(quotes.USDJPY).toFixed(3);
pm.environment.set("USDJPY_RATE", rate);
var USDJPY_RATE = pm.environment.get("USDJPY_RATE");
// 前のPostmanスクリプトからRESULT_OUTPUT_TOKENS変数を取得
var RESULT_OUTPUT_TOKENS = pm.environment.get("RESULT_OUTPUT_TOKENS");
// トークンの為替レートを計算
const tokensExchangeRate = 0.06; // 1000トークンのUSD価格(GPT-4-8kコンテキスト入力価格に基づく)
// 推定JPY価格を計算
const JPYPrice = ((RESULT_OUTPUT_TOKENS / 1000) * tokensExchangeRate * USDJPY_RATE).toFixed(2);
pm.environment.set("OUTPUT_PRICE", JPYPrice);
console.log("コスト(JPY): " + JPYPrice + "円");
}
});
合計コストの推定値を計算
最後に、入力とレスポンスのコストを足すと、合計コストの推定値が取得されます。加算用のカスタムスクリプトを後処理に追加しましょう。
// 入力コストとレスポンスコストの合計
const INPUTPrice = Number(pm.environment.get("INPUT_PRICE"));
const OUTPUTPrice = Number(pm.environment.get("OUTPUT_PRICE"));
console.log("合計コスト: " + "¥" + (INPUTPrice + OUTPUTPrice));
// 合計コストを出力: 入力価格とレスポンス価格の合計
これにより、APIのテストプロセス中に現在のリクエストの実際コストの推定値を知ることができるようになります。
ApidogでOpenAI APIを簡単に利用可能
Apidogは非常に使いやすいAPI管理ツールとして、APIの設計、ドキュメンテーション、モックサーバーやテスト自動化などの機能を提供しています。また、ApidogのAPI Hubサービスを利用することで、様々なサードパーティAPIプロジェクトにアクセスすることができます。
次のリンクをクリックして、API Hub上のOpenAI APIプロジェクトにアクセスできます。このプロジェクトでは、OpenAIが提供する全てのAPIを網羅しています。
https://apidog.com/apidoc/project-370474
OpenAI APIをオンラインで呼び出してテストする方法
ApidogのOpenAI APIプロジェクトにアクセスすると、次の操作手順を参照して、簡単にOpenAIのAPIをテストすることができます、
ステップ⒈OpenAI APIのプロジェクトページにアクセスすると、左側のメニューから、利用したいAPIを選択して、右側パネルで「Try it out」ボタンをクリックします。
ステップ⒉APIの利用には、OpenAIへのアクセス権限が必要であり、APIキーを取得する必要があるので、ここでOpenAI API_KEYを記入することが必要です。
ご案内:YOUR_ API_KEYという環境変数は、ローカルで保存されるので、サーバーに同期することがありませんので、ご安心ください。
ステップ⒊「Send」ボタンをクリックして、リクエストをOpenAIのサーバーに送信して、レスポンスを取得できます。
また、リクエストをより自由にカスタマイズすることを必要とする場合、「Run in Apidog」ボタンをクリックして、API管理ツールを呼び出して、そこでリクエストを思い通りにカスタマイズすることができます。
まとめ
本文では、OpenAI APIの各モデルの利用料金を詳しく解説しました。実際の業務中にOpenAI APIを導入したい場合は、これらのパフォーマンスと価格を参照して、自分にとって最も適切なモデルを選択する必要があります。また、OpenAI APIの料金が変わることもありますので、いつも正しい情報を手に入れる場合は、OpenAI APIの公式サイトを参照する必要もあるのでしょう。
また、Apidogという使いやすいAPI管理ツールを使って、簡単にOpenAI APIにアクセスすることができますので、OpenAI APIを利用したり、テストしたりする必要がある場合、Apidogを利用するのが一番効率的な対策になります。そして、本文で紹介したガイドを参照して、ApidogでOpenAI APIを利用すると同時に、それが消費するトークン数及びコストを自動的に計算することもできますので、非常に便利ですね。