OpenAI APIの料金体系:よくあるミスとその回避方法
OpenAI APIの料金は、入力トークンと出力トークンが別々に課金され、ストリーミング応答が注意深く追跡されない場合にコストを膨張させるため、開発者を驚かせることがよくあります。これらのメカニズムを理解することで、予期しない請求を避け、予算に合った適切なモデル構成を選択するのに役立ちます。
概要
- アンセンサードモデルでは、入力トークンは100万トークンあたり$0.15、出力トークンは100万トークンあたり$0.50です。
- ストリーミングレスポンスでも、生成されたすべてのトークンがプリペイド残高にカウントされます。
- コンテキストウィンドウの制限は、入力と出力のトークン計算の両方に影響します。
- プリペイド残高は期限切れせず、エラーを含む実際の使用分のみ課金されます。
トークンコスト:入力と出力
OpenAI APIの料金は入力トークンと出力トークンで別々に課金されます。つまり、総コストは送信量とモデルの生成量の両方に依存します。入力トークンはプロンプトと会話履歴をカバーします。出力トークンはモデルの応答テキストをカバーします。
当社の無制限モデルは、入力トークン100万個あたり$0.15、出力トークン100万個あたり$0.50で課金されます。出力コストが高いのはテキスト生成に必要な計算資源を反映しています。短いレスポンスはコストが抑えられますが、プリペイドクレジットを消費します。
- 入力トークンにはプロンプトと会話履歴が含まれます
- 出力トークンはモデルの完全なレスポンスをカバーします
- 両方のトークンタイプはプリペイド残高にカウントされます
- エラーと拒否はトークンをゼロ消費します。
curl https://api.mistralopenaicompatibleapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "list top 5 linux commands for disk cleanup"}]
}'
コンテキストウィンドウの制限と予期せぬ請求
コンテキストウィンドウの制限はトークンコストに直接影響します。長い会話はより多くの入力トークンを消費するためです。当社のアンセンサードモデルは、プロンプトと補完を合わせた10万トークンのコンテキストウィンドをサポートしています。リクエストごとに最大16,000トークンを生成できます。max_tokensを省略すると、制限は2,048トークンに低下します。
より長いコンテキストはより高い入力トークンコストを意味しますが、より複雑な推論を可能にします。会話履歴をトリミングすると入力コストは削減されますが、応答の品質が低下する可能性があります。あなたのユースケースに合ったバランスを見つけてください。
- 入力と出力の合計100,000トークンのコンテキストウィンドウ
- 1つのリクエストあたりの最大出力トークン16,000
- max_tokensを省略した場合のデフォルト出力トークンは2,048
- コンテキストウィンドウはコストとレスポンスの品質の両方に影響します
from openai import OpenAI
client = OpenAI(base_url="https://api.mistralopenaicompatibleapi.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)
ストリーミングと非ストリーミングのトークン計算
ストリーミングレスポンスは、非ストリーミングリクエストと同じ方法でトークンを計算します。クライアントに送信されるすべてのトークンは、配信方法に関係なく前払い残高にカウントされます。ストリーミングは、一度にすべてを送信するのではなく、トークンを逐次配信するだけです。
リアルタイムのフィードバックが必要だがトークン使用量を慎重に追跡する必要がある場合にストリーミングを使用します。最後のチャンクには入力と出力の合計トークン数が含まれます。予算内に収まるようこれらのカウントを監視してください。
- ストリーミングと非ストリーミングは同一のトークンカウントを使用します
- クライアントに送信されるトークンごとにクレジットが消費されます
- 最終チャンクには合計入力トークン数と出力トークン数が含まれています
- ストリーミング実装内でトークン使用量を追跡する
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
よくあるSDK設定エラー
SDKの設定ミスにより、トークン数が多すぎたり冗長なリクエストを行ったりすることで、予期しない課金が発生することがあります。開発者はmax_tokensの設定を忘れることが多く、その結果、予期しない長い応答が生成されることがあります。また、応答完了後もトークンの送信を続けるストリーミング実装を見落とすことがあります。
明示的なパラメータでSDKを設定します。出力長を制御するためにmax_tokensを設定します。リアルタイムフィードバックが必要な場合にのみストリーミングを有効にします。アプリケーションログでトークン使用状況を監視します。
- 出力長を制御するために明示的なmax_tokensを設定
- リアルタイムのフィードバックが必要な場合にのみストリーミングを有効にする
- アプリケーションログ内のトークン数を監視します
- ハングアップするリクエストを防ぐためにタイムアウト値を設定してください
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.mistralopenaicompatibleapi.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);
なぜ前払いクレジットはコスト削減に役立つのか
プリペイドクレジットは月額サブスクリプションの無駄を排除し、実際のトークン使用量のみを課金します。当社のシステムは、入力トークン100万トークンあたり$0.15、出力トークン100万トークンあたり$0.50を課金します。エラーと拒否はゼロトークンを消費するため、失敗したリクエストに対して決して支払いません。
$20〜$500の暗号通貨(TRC20のUSDTまたはBaseのUSDC)でチャージ。$50以上のチャージでボーナスクレジット付与。クレジットの有効期限なしで必要な時に使用可能。月額料金なしのため、実際に消費した分のみ課金。
- プリペイドクレジットは実際のトークン使用量のみを課金します
- エラーと拒否はトークンをゼロ消費します。
- クリプトで$20〜$500のトップアップ
- クレジットは期限切れにならず、ボーナスクレジットが適用されます
レート制限のペナルティを避ける
レート制限は不正利用を防ぎますが、設定が正しくない場合、アプリケーションが中断されることがあります。当社のAPIでは、キーごとに1分あたり300リクエスト、キーごとに8つの同時リクエストが許可されています。リクエストボディは拒否されないよう8 MB未満に維持する必要があります。
レートリミットに達した際に指数関数的バックオフ付きのリトライロジックを実装します。1分あたりのリクエスト数を監視して制限内に収めてください。アプリケーションのコンポーネントごとに別のキーを使用して負荷を分散します。アカウントあたりのアクティブキーが1つの場合、キーのローテーションを慎重に管理する必要があります。
- APIキーごとに1分あたり300リクエスト
- 8 concurrent requests allowed per key
- リクエストボディは8 MB未満である必要があります
- アカウントごとにアクターなキー1つ、置き換え機能付き
無制限モデルのコスト比較
Uncensoredモデルは、標準モデルに比べて、専門的なトレーニングと推論の要件のため、コストが高くなる傾向があります。当社のモデルは、100万入力トークンあたり$0.15、100万出力トークンあたり$0.50で課金されます。この価格は、Uncensored生成に必要な計算資源を反映しています。
標準モデルはコストが低い場合もありますが、応答の品質に影響を与えるコンテンツ制限が含まれます。アンセーサードモデルは、合法的な成人向けコンテンツ、フィクション、研究のために制限のない応答を提供します。価格だけでなく、コンテンツのニーズに基づいて選択してください。
- Uncensoredモデルは専門的なトレーニングと推論を必要とします
- この料金体系は、アンセンサード生成の計算コストを反映しています。
- コンテンツ制限は応答品質とコストに影響します
- 価格だけでなく、コンテンツのニーズに基づいて選択してください
使用状況と請求アラートの追跡
トークン使用量の追跡により、コストの監視と予算超過の防止が可能です。当社のAPIは、ストリーミング応答を含むすべての応答でトークン数を返します。これらのカウントをアプリケーションログやダッシュボードで追跡してください。
使用量が特定の閾値に達したときにアラートを設定します。入力と出力のトークン比を監視してプロンプトを最適化します。トークン数を使用して実際のコストを計算し、前払い残高と比較します。
- トークン数はストリーミングを含むすべてのレスポンスに表示されます
- 入力と出力のトークン比を監視します
- 予算超過を防ぐために使用量アラートを設定してください
- トークン数を使って実際のコストを計算
よくある質問
APIコストの計算方法
入力トークン数を100万トークンあたり$0.15で乗算し、出力トークン数を100万トークンあたり$0.50で乗算します。これらの値を合計して、1リクエストあたりの総コストを計算します。アプリケーションログでトークン数を追跡し、時間経過に伴う使用状況を確認してください。
ストリーミングレスポンスは非ストリーミングよりもコストがかかりますか?
いいえ。ストリーミングと非ストリーミングの応答は同一のトークンカウントを使用します。クライアントに送信されたすべてのトークンは、配信方法にかかわらず前払い残高にカウントされます。最終ストリーミングチャンクには、入力と出力の合計トークン数が含まれます。
レート制限に達した場合どうなりますか?
1分あたり300リクエストまたは8件の並列リクエスト制限を超えるリクエストにはエラーレスポンスが返されます。これらのエラーはトークンを消費しないため、課金されません。レート制限を適切に処理するために、指数関数的バックオフ付きのリトライロジックを実装してください。
プリペイドクレジットは期限切れになりますか?
いいえ。前払いクレジットは無期限に有効であるため、必要な時に使用できます。エラーや拒否を含む実際のトークン使用量に対してのみ課金され、エラーはトークンを消費しません。暗号通貨でチャージしてクレジットを追加できます。
APIキーを取得
登録して、キーを取得し、エンドポイントのベースURLを更新するだけです。それだけです。