料金と、失敗したときの備え|上限を決め、止まったら知らせる
いまは無料で公開中です
このレッスンの要点
- 1回あたりの使用量は、答えの usage(入力と出力のトークン数)で見えます。月の上限(支出上限)を先に決めておきます
- 同じ長い指示や資料を、短い間に何度も送るときは、プロンプトのキャッシュで費用を抑えられます(はじめの設定では5分ほど残ります。1時間にする設定もありますが、週に1回の呼び出しには効きません)
- 失敗したら、公開もメールも止めて、人に知らせます。一時的なエラーは、公式の SDK が自動で再試行します
1回いくらかを見えるようにする
Claude API の料金は、送った量(入力)と書いた量(出力)のAI が文章を読み書きするときの、文字のかたまりの単位。API の料金は、読んだ量(入力)と書いた量(出力)のトークン数で決まります。
くわしく見るで決まります。答えには、そのとき使ったトークン数(usage)が付いて返ってくるので、毎回ログに出しておきます。そこに、公式の料金ページのモデルの単価をかければ、1回あたりのおおよその費用がわかります。
usageinput_tokens と output_tokens を毎回ログに出す
単価公式の料金ページで、使っているモデルの単価を見る
見積もり1回の費用 × 月の回数
そのうえで、Console の「請求」(Billing)で月の上限(支出上限)を決めておきます(レッスン3)。自動のしくみ専用の APIキーにしておくと、「API 使用状況」(Usage)の画面でこのしくみの使用量だけを見分けられます。
費用を抑える
毎週の猫のランキングくらいなら、費用はわずかです。でも題材が大きくなったときのために、公式にある節約の方法を知っておきましょう。
| 方法 | 向いているとき |
|---|---|
| プロンプトのキャッシュ | 同じ長い指示(system)や資料を、数分のうちに何度も送るとき。変わらない部分を前に置く。はじめの設定で残るのは5分ほど(追加の料金で1時間にもできる)で、短い指示はキャッシュされない |
| まとめて送る(Message Batches) | 急がない処理をたくさんするとき。割引になり、結果はあとでまとめて受け取る(多くは1時間以内、長いと24時間) |
| モデルを選ぶ | 題材に合った、必要十分なモデルを使う(レッスン7) |
エラーの意味と、やり直し
API を使っていると、ときどきエラーが返ってきます。種類によって、やり直してよいものと、やり直してもむだなものがあります。自分で決めた上限(支出上限、レッスン3)に届いたときは 400、段階ごとの月の上限に届いたときは 429 です。
| エラー | 意味 | どうする |
|---|---|---|
| 400 | 頼み方の形のまちがい。自分で決めた上限に届いたときも | 止めて、人が見直す |
| 401 | APIキーのまちがい・期限切れ | 止めて、キーを見直す |
| 429 | 短い時間に使いすぎ、または利用の段階(usage tier)ごとの月の上限 | 一時的なものは待って再試行。待つ秒数(retry-after)が付いていない月の上限なら止める |
| 500・529 | サービス側の一時的な問題・混雑 | 間をあけて再試行 |
答えの stop_reason が max_tokens のときは、エラーではありませんが途中で切れています。これも「止める」側に入れます(レッスン7)。
失敗したら、止めて知らせる
自動のしくみの約束は、失敗したら何も外に出さないことです。どこかで止まったら、公開もメールの下書きもしません。そのかわり、止まったことと理由を人に知らせます。
失敗したとき
・公開しない、メールも作らない
・「【止まりました】」のメールで、止まった場所とログのリンクを知らせる
・「【止まりました】」のメールで、止まった場所とログのリンクを知らせる
やってはいけない
・前の週の文をそのまま使って公開する
・失敗を知らせずに、だまって終わる
・失敗を知らせずに、だまって終わる
よくある勘違い
「エラーが出たら、成功するまで何度でもやり直せばいい」わけではありません
止まったら、すぐに何度もやり直す
使いすぎの上限に届いたエラーは、やり直しても失敗し続けます。むやみな再試行は、混雑も悪くします
エラーの種類で分ける
一時的なものは間をあけて再試行、上限や設定のまちがいは止めて人に知らせます
やってみよう
- レッスン7の write.mjs が、答えの usage(入力と出力のトークン数)をログに出すようにしてもらいます
- 公式の料金ページで、使っているモデルの単価を見て、1回あたりのおおよその費用を出してみます
- Console の「請求」で、月の上限(支出上限)を決めます(レッスン3)
- 下の依頼文を 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編の目次
- 1APIとは?アプリ版との違い✓ できた
- 2APIキーの作り方と守り方✓ できた
- 3料金の考え方と、使いすぎを防ぐ上限設定✓ できた
- 4はじめての呼び出し✓ できた
- 5全体像✓ できた
- 6データを集める✓ できた
- 7Claude に文章を書かせる✓ できた
- 8記事ファイルにしてサイトに載せる✓ できた
- 9毎週自動で動かす✓ できた
- 10公開前のチェック✓ できた
- 11メール配信とつなぐ✓ できた
- 12料金と、失敗したときの備え✓ できた
- 13実例:週次レポートの裏側✓ できた