料金と、失敗したときの備え|上限を決め、止まったら知らせる

コース6 API編 12 / 13・読む時間 約10分・最終確認日

いまは無料で公開中です

このレッスンの要点

  • 1回あたりの使用量は、答えの usage(入力と出力のトークン数)で見えます。月の上限(支出上限)を先に決めておきます
  • 同じ長い指示や資料を、短い間に何度も送るときは、プロンプトのキャッシュで費用を抑えられます(はじめの設定では5分ほど残ります。1時間にする設定もありますが、週に1回の呼び出しには効きません)
  • 失敗したら、公開もメールも止めて、人に知らせます。一時的なエラーは、公式の SDK が自動で再試行します

1回いくらかを見えるようにする

Claude API の料金は、送った量(入力)と書いた量(出力)ので決まります。答えには、そのとき使ったトークン数(usage)が付いて返ってくるので、毎回ログに出しておきます。そこに、公式の料金ページのモデルの単価をかければ、1回あたりのおおよその費用がわかります。

usageinput_tokens と output_tokens を毎回ログに出す
単価公式の料金ページで、使っているモデルの単価を見る
見積もり1回の費用 × 月の回数
送る前に入力のトークン数を数える機能(token counting)もあります。結果は見積もりです。

そのうえで、Console の「請求」(Billing)で月の上限(支出上限)を決めておきます(レッスン3)。自動のしくみ専用の APIキーにしておくと、「API 使用状況」(Usage)の画面でこのしくみの使用量だけを見分けられます。

費用を抑える

毎週の猫のランキングくらいなら、費用はわずかです。でも題材が大きくなったときのために、公式にある節約の方法を知っておきましょう。

方法向いているとき
プロンプトのキャッシュ同じ長い指示(system)や資料を、数分のうちに何度も送るとき。変わらない部分を前に置く。はじめの設定で残るのは5分ほど(追加の料金で1時間にもできる)で、短い指示はキャッシュされない
まとめて送る(Message Batches)急がない処理をたくさんするとき。割引になり、結果はあとでまとめて受け取る(多くは1時間以内、長いと24時間)
モデルを選ぶ題材に合った、必要十分なモデルを使う(レッスン7)
キャッシュが効いたかどうかは、usage の cache_read_input_tokens で見られます。週に1回、1回だけ呼ぶこの講座のしくみでは、キャッシュはほとんど効きません。

エラーの意味と、やり直し

API を使っていると、ときどきエラーが返ってきます。種類によって、やり直してよいものと、やり直してもむだなものがあります。自分で決めた上限(支出上限、レッスン3)に届いたときは 400、段階ごとの月の上限に届いたときは 429 です。

エラー意味どうする
400頼み方の形のまちがい。自分で決めた上限に届いたときも止めて、人が見直す
401APIキーのまちがい・期限切れ止めて、キーを見直す
429短い時間に使いすぎ、または利用の段階(usage tier)ごとの月の上限一時的なものは待って再試行。待つ秒数(retry-after)が付いていない月の上限なら止める
500・529サービス側の一時的な問題・混雑間をあけて再試行
公式の SDK は、一時的な失敗を、間をあけながら自動で2回まで再試行します(はじめの設定)。

答えの stop_reason が max_tokens のときは、エラーではありませんが途中で切れています。これも「止める」側に入れます(レッスン7)。

失敗したら、止めて知らせる

自動のしくみの約束は、失敗したら何も外に出さないことです。どこかで止まったら、公開もメールの下書きもしません。そのかわり、止まったことと理由を人に知らせます。

失敗したとき
・公開しない、メールも作らない
・「【止まりました】」のメールで、止まった場所とログのリンクを知らせる
やってはいけない
・前の週の文をそのまま使って公開する
・失敗を知らせずに、だまって終わる
止まった週は、ログを見て直してから、手で動かすボタン(workflow_dispatch)でやり直します。
よくある勘違い

「エラーが出たら、成功するまで何度でもやり直せばいい」わけではありません

止まったら、すぐに何度もやり直す
使いすぎの上限に届いたエラーは、やり直しても失敗し続けます。むやみな再試行は、混雑も悪くします
エラーの種類で分ける
一時的なものは間をあけて再試行、上限や設定のまちがいは止めて人に知らせます

やってみよう

  1. レッスン7の write.mjs が、答えの usage(入力と出力のトークン数)をログに出すようにしてもらいます
  2. 公式の料金ページで、使っているモデルの単価を見て、1回あたりのおおよその費用を出してみます
  3. Console の「請求」で、月の上限(支出上限)を決めます(レッスン3)
  4. 下の依頼文を Claude Code に送って、失敗したときに止めて知らせるしくみを足してもらいます
失敗したときに止めて知らせるしくみを作ってもらう依頼文(Claude Code に).github/workflows/ にある週間ランキングのワークフロー(下書きを作る ranking-draft.yml と、公開して最後にメールの下書きも作る ranking-publish.yml)のそれぞれで、どこかのステップが失敗したら、そのあとの公開やメールの下書きをせずに止まり、何で止まったかを私に知らせるようにして。知らせ方は、失敗したときだけ動くステップで、Resend のメール送信の API を使い、件名を「【止まりました】週間ランキング」、本文に止まったステップの名前と GitHub のログのリンクを入れて。宛先と差出人は Secrets から読んで。Claude API のエラーは、公式の SDK の自動の再試行にまかせて、自分で何度もやり直す処理は書かないで

確認問題

Q1. 自分で決めた月の上限(支出上限)に届いたエラーが出ました。どうする?
Q2. 公式の SDK(Python など)は、一時的なエラーのとき、はじめの設定でどうする?
今日の練習

write.mjs が出した usage の数をメモして、公式の料金ページの単価から「月に4回動かすといくらくらいか」を計算してみましょう。

この記事の用語

コース6 API編の目次

  1. 1APIとは?アプリ版との違い
  2. 2APIキーの作り方と守り方
  3. 3料金の考え方と、使いすぎを防ぐ上限設定
  4. 4はじめての呼び出し
  5. 5全体像
  6. 6データを集める
  7. 7Claude に文章を書かせる
  8. 8記事ファイルにしてサイトに載せる
  9. 9毎週自動で動かす
  10. 10公開前のチェック
  11. 11メール配信とつなぐ
  12. 12料金と、失敗したときの備え
  13. 13実例:週次レポートの裏側