Doubao API は Volcano Ark を通じて提供されます。請求は「1 回呼び出すたびに固定料金」ではなく、入力トークン、出力トークン、キャッシュ、推論方式、確保リソースによって決まります。多くのチームが単一の単価で予算を組み、稼働後にコストが高いと気づきます。原因はモデルの値上げではなく、入力の構造、キャッシュヒット率、呼び出し方式が見積もり時と違うことにある場合が少なくありません。
本記事では Doubao API の課金を項目ごとに確認できる形に分解し、見積もりとコスト削減の順序を示します。具体的な単価はモデル料金および Volcano Ark の公式価格ページを基準にしてください。価格とルールは変更される場合があります。
注記:Doubao、Volcano Ark、Volcano Engine などの名称は各権利者の商標です。本記事は技術的な説明のみを目的としており、提携関係を示すものではありません。課金と請求書の発行ルールは公式ページを基準にしてください。
一、請求書を構成する項目
Volcano Ark のオンライン推論はトークン単位の後払いですが、完全な請求書にはキャッシュ保存、バッチ推論、スループットパッケージ、ファインチューニング費用が含まれる場合があります。
| 課金項目 | 発生するタイミング | 課金単位 | 備考 |
|---|---|---|---|
| 入力(キャッシュ未ヒット) | プロンプトが初めてコンテキストに入るとき | トークン | prompt_tokens に対応 |
| 入力(キャッシュヒット) | 以前にキャッシュされた接頭辞を再利用したとき | トークン | cached_tokens に対応。単価は通常より低い |
| キャッシュ保存 | コンテキストキャッシュを有効にした後 | トークン × 時間 | 自然時間内の最大保存量で計算 |
| 出力 | モデルが本文や構造化結果を生成 | トークン | completion_tokens に対応 |
| バッチ推論 | オフラインの一括処理タスク | トークン | 独立した価格。通常は無料枠を相殺できない |
| TPM スループットパッケージ | 毎分のスループットを事前に確保 | 購入期間 | 呼び出しがなくても課金 |
| モデルユニット | 専用の演算リソース | 購入期間 | 呼び出しがなくても課金 |
| ファインチューニング | 学習段階 | トークン × エポックまたは演算資源 | 推論費用とは別 |
「使った分だけ払う費用」と「買った時点で払う費用」を先に分ければ、予算の漏れを防げます。前者はトラフィックで変動し、後者は固定費です。
二、入力と出力の計算方法
入力は、リクエスト内でコンテキストに入るすべての内容です。システムプロンプト、会話履歴、ツール定義、検索で取得した文書、画像などのマルチモーダル内容が含まれます。これらはすべてトークンに換算され、入力単価で課金されます。出力はモデルが実際に生成した内容で、出力単価で課金され、通常は単価が高くなります。
見落としやすい点がいくつかあります。
- 複数ターンの会話で毎回完全な履歴を送ると、入力トークンはターン数に応じて累積し、最新の 1 文だけでは済みません。
- ツール呼び出しのスキーマや関数説明も入力トークンを占めます。ツールが増えるほど固定費が大きくなります。
- 画像、音声などのマルチモーダル入力は規則に従って換算され、文字数だけで見積もることはできません。
- 推論系モデルが生成する思考内容は通常、出力に含まれます。具体的な基準は公式の課金説明を確認してください。
したがって予算では「入力がいくら、出力がいくら」だけでなく、「自分のリクエストでは入力と出力がそれぞれどれだけを占めるか」を確認する必要があります。カスタマーサポート bot は入力が多く出力が短く、長文生成はその逆で、両者のコスト構造はまったく異なります。
三、コンテキストキャッシュ:節約にも費用にもなる
コンテキストキャッシュの仕組みは、安定した接頭辞を再利用することです。2 回のリクエストの冒頭が完全に一致する場合、ヒットした部分はより低いキャッシュヒット単価で課金され、追加された内容だけが通常の入力として課金されます。ただし無料ではありません。
- キャッシュヒットは
cached_tokensとして課金され、通常の入力より低いものの、ゼロではありません。 - キャッシュ保存は時間単位で課金され、通常は各自然時間内の最大保存トークン数で精算されます。
- キャッシュはベストエフォートであり、必ずヒットするという前提は置けません。ヒット率が低いと、保存費用が入力の節約額を上回る可能性があります。
キャッシュを本当に節約につなげるには、安定した内容をリクエストの冒頭に置きます。固定のシステムプロンプト、固定のツール定義、固定のナレッジ接頭辞です。タイムスタンプ、ランダム ID、ユーザー名、動的に取得した検索結果は末尾に置きます。業務自体が毎回まったく異なる場合は、まずキャッシュを無効にして請求書を観察してから判断してください。
四、オンライン、バッチ、スループットパッケージの選び方
Volcano Ark は複数の推論方式を提供しており、価格と適した場面が異なります。
- オンライン推論のトークン後払い:トラフィックが不確実で、遅延要件が一般的な業務に向いています。呼び出さなければ課金されず、新規ユーザーには通常、相殺可能な無料枠があります。
- バッチ推論:オフラインのラベリング、コンテンツ審査、一括要約など、リアルタイム性を要求しないタスクに向いています。価格は通常より低いですが、無料枠の相殺には対応していません。
- TPM スループットパッケージ:トラフィックを予測でき、安定したスループットが必要な本番業務に向いています。日単位または時間単位で購入し、呼び出しがなくても課金されます。
- モデルユニット:専用の演算リソースを提供し、ファインチューニング済みモデルや特殊な同時実行要件がある場面に向いています。固定費に分類されます。
選定時は単価だけを比較しないでください。バッチ推論は安いですが結果の遅延が大きく、スループットパッケージは安定していますが稼働していない時間も費用が発生します。業務を「リアルタイムかオフラインか」「トラフィックを予測できるか」で 2 分類し、課金方式を合わせるほうが、単にモデルを変えるより効果的です。
五、usage フィールドで実際に見積もる
文字数からトークンを推測しないでください。呼び出しのたびにレスポンスの usage を記録し、1 週間観察すれば、自分の業務の実際の構造が分かります。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ARK_API_KEY"],
base_url="https://ark.cn-beijing.volces.com/api/v3",
)
resp = client.chat.completions.create(
model=os.environ["ARK_ENDPOINT_ID"], # 推論エンドポイント ID またはモデル ID。コンソールを確認
messages=[
{"role": "system", "content": "あなたはカスタマーサポート助手です。回答は 3 文以内にしてください。"},
{"role": "user", "content": "注文の発送後に住所を変更できますか?"},
],
)
print(resp.usage) # 入力、出力、キャッシュの各フィールドを記録
見積もりは次の順序で行います。
- 記録項目を固定する。時刻、プロジェクト、モデル、入力トークン、出力トークン、キャッシュヒット、ストリーミングの有無、再試行回数。
- 1 週間分をサンプリングし、シナリオごとの平均入力と平均出力を算出する。サイト全体の平均値は使わない。
- 「入力 × 入力単価 + 出力 × 出力単価」で 1 回のコストを計算し、キャッシュヒット部分は別により低い単価で計算する。
- 1 日の平均呼び出し数を掛け、さらに 30 を掛けて月間の推論費用を求める。
- キャッシュ保存、バッチタスク、スループットパッケージ、モデルユニットなどの固定項目を加える。
- 再試行、ピーク、価格改定をカバーする buffer を確保する。
- 毎月、請求書から逆算して見積もりモデルを修正する。
レスポンスにキャッシュの内訳フィールドがない場合は、総入力と総出力を記録し、請求書または利用量ページから逆算してください。重要なのは基準を揃えることであり、異なる入口や異なる日付のデータを混ぜて比較しないことです。
六、コスト管理の順序を間違えない
- まず数値化する:プロジェクト、モデル、シナリオごとに実際のトークン構造を分解し、コストが最も高い 3 つの呼び出しを特定する。
- 次にキャッシュヒットを上げる:安定した接頭辞を冒頭に置き、動的な内容を減らし、ヒット率の変化を観察する。
- 次に入力を減らす:検索では関連する断片だけを取得し、会話履歴は要約し、ツール結果は必要なフィールドだけを残す。
- 出力を制限する:適切な
max_tokensを設定し、JSON や固定フィールドを要求して、繰り返しの説明を減らす。 - モデルを振り分ける:分類、抽出、書き換えは軽量モデル、複雑な推論だけ上位モデルに回す。
- オフラインタスクをバッチに移す:リアルタイム性を要求しないタスクはバッチ推論に入れ、ピーク時間を避ける。
- 単価の交渉は最後:入力が整理されておらず、キャッシュもヒットしていない状態では、より安いモデルに変えても下がりません。
七、予算と請求書の管理
- 1 プロジェクトに 1 キー。テストと本番を分け、互いの枠を圧迫しないようにする。
- キーに消費上限と残高アラートを設定し、異常な呼び出しのときに早めに止められるようにする。
- 毎週「プロジェクト、モデル、シナリオ」単位で照合し、最も伸びている呼び出しを特定する。
- キャッシュ、バッチ、モデル振り分けによる節約額を個別に記録する。そうしなければ最適化の効果を証明できない。
- 人民元での支払い、請求書の一元管理が必要なチームは、OpenAI 互換のZSQH AI Gateway を利用できます。価格と課金基準はモデル料金を基準にしてください。
よくある質問
Doubao API に無料枠はありますか?
オンライン推論には通常、新規ユーザー向けの無料枠があり、トークン後払いの消費を相殺できます。バッチ推論とファインチューニングは通常、無料枠の相殺に対応していません。枠と有効期間は Volcano Ark のコンソールを基準にしてください。
キャッシュ保存にも料金がかかるのはなぜ?
キャッシュはサーバー側の保存リソースを占有するため、キャッシュヒットのトークン費用とは別に、保存量と期間に応じた費用が発生します。ヒット率が低い場合は、まず接頭辞の構造を最適化し、必要に応じてキャッシュを無効にしてください。
バッチ推論は必ず安くなりますか?
バッチ推論のトークン単価は通常より低いですが、結果はリアルタイムに返らず、無料枠にも対応していません。オフラインタスクには向いていますが、低遅延を要求するオンラインカスタマーサポートには向いていません。
再試行したリクエストは課金されますか?
サーバー側が推論を完了してトークンを生成していれば、クライアントがタイムアウトで結果を受け取れなくても、通常は課金されます。失敗リクエストの課金有無は請求書と公式説明を基準にし、再試行ロジックにはバックオフと上限を設けてください。
自分の見積もりと請求書が合わないのはなぜ?
見落としやすい項目は、会話履歴、ツール定義、マルチモーダル換算、キャッシュ保存、再試行リクエスト、スループットパッケージの固定費です。リクエスト ID と利用量ログを照合して初めて、差異を特定できます。
次のステップ
まずZSQH AI Gateway でテストキーを作成し、実際のタスクを 1 週間実行して、入力、出力、キャッシュヒットを記録してください。その後、モデル料金で予算に換算します。モデルの可用性と価格は料金ページを基準にします。
関連記事:
