ブログに戻る

はじめにガイド

Google Colab からの最初のリクエスト: API キーを Secrets に保管する

キーを Colab Secrets に保存して、Colab ノートブックから最初のチャット補完を送信し、回答とトークン使用量を確認します。

投稿者: CheapTokens Team公開日 読了時間 7 分

Colab Secrets からキーを読み取り、CheapTokens API を呼び出す Google Colab ノートブックのセル
このページの内容
  1. 必要なもの
  2. キーを Colab Secrets に入れる
  3. 最初のリクエストを実行する
  4. リクエストのコスト
  5. セルが失敗したとき
  6. 共有とローテーション

Colab ノートブックなら、自分のコンピュータに何もインストールせずに最初のリクエストを実行できます。キーは Colab Secrets に保存し、userdata.get(...) で読み取り、openai パッケージの接続先を https://api.cheaptokens.dev/v1 に設定して、choices[0].message.content と usage を出力します。キーがセルに残ることはないので、ノートブックを共有してもキーは共有されません。

後者の点こそが、わざわざそうする理由です。ノートブックを完成させてクラスメートにリンクを送ったとします。キーをセルに貼り付けていれば、相手はキーも手に入れてしまいます。Secrets に入れておけば、相手が受け取るのはコードだけです。

このガイドはプレーンな requests での最初のリクエストを土台にしています。ここで新しいのは、キーをどこに置くかと、ノートブックがそれをどう読むかだけです。ノートPCで同じことをする場合は、環境変数にキーを保存するを参照してください。

必要なもの#

  • Google アカウントと、colab.research.google.com で作成した新しいノートブック。
  • CheapTokens の API キーと、チャージ済みの残高。キーと残高はアカウント内にあり、ドキュメントに正確な手順が載っています。
  • 5 分。

API は OpenAI Chat Completions 互換なので、標準の openai Python パッケージが別の base_url でそのまま動きます。openai-python の README(2026 年 11 月 5 日確認)には Python 3.10 以上と pip install openai が記載されています。

キーを Colab Secrets に入れる#

ノートブックの左サイドバーに鍵のアイコンがあり、これをクリックすると Secrets パネルが開きます。新しいシークレットを追加し、名前を CHEAPTOKENS_KEY にして、値に自分のキーを貼り付け、作業中のノートブックに対してノートブックアクセスをオンにします。ボタンの文言は変わる可能性があるので、メニューのパスではなく鍵のアイコンを探してください。

名前は今のうちに決めておきましょう。コードに渡す文字列になるからです。名前を間違えるのはよくあるミスで、エラーのセクションでどのように見えるかを示します。

ビフォーアフター: セルに貼り付けたキーと userdata.get
左: キーがセルにあり、ノートブックと一緒に移動する。右: セルはシークレットの名前を指定するだけ。

最初のリクエストを実行する#

Colab は Google の colabtools モジュールにある関数 google.colab.userdata.get(name) でシークレットを読み取ります(docstring は 2026 年 11 月 5 日確認)。SDK をインストールし、シークレットを読み取り、リクエストを 1 つ送信します。

ステップバイステップ

3 つのセルで最初のリクエスト

パッケージをインストールする

最初のセルでこれを実行します。-q フラグで出力が短くなり、パッケージがすでにランタイムにあるかどうかに関係なく動作します。

python
!pip install -q openai

キーを読み取り、クライアントを作成する

キーは Secrets から取得します。ここには何も貼り付けません。

python
from google.colab import userdata
from openai import OpenAI

client = OpenAI(
    api_key=userdata.get('CHEAPTOKENS_KEY'),
    base_url='https://api.cheaptokens.dev/v1',
)

リクエストを 1 つ送信して結果を出力する

開発者プレフィックス付きの完全なモデル ID を使用します。短い ID は受け付けられません。

python
resp = client.chat.completions.create(
    model='deepseek-ai/DeepSeek-V4-Flash-0731',
    messages=[{'role': 'user', 'content': 'Explain a token in one sentence.'}],
    max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)

最初の print はモデルの回答を表示します。2 つ目は 2 つの数値を出力します。送信したトークン数と、モデルが書き出したトークン数です。これがリクエストの請求額のすべてなので、毎回出力しています。

リクエストのコスト#

支払うのはトークンなので、出力の 2 行目に注目してください。上の例のような短い質問で入力が約 40 トークン、回答が出力 150 トークンだとします。このリクエストは現在の価格で $0.000016、1000 回なら $0.0156 です。40 と 150 は、ノートブックが出力した 2 つの数値に置き換えてください。

ここで DeepSeek-V4-Flash をデフォルトにしているのには理由があります。380K のコンテキスト、回答あたり最大 32,768 出力トークン、そして時間帯を問わずピーク時間のない単一価格です。1 つの残高で全モデルをカバーするので、このセルのモデルを他の部分を変えずに差し替えられます。zai-org/GLM-5.3-Flash(390K コンテキスト、最大 8,192 出力トークン)を試して、セルをもう一度実行してみてください。全リストはすべてのモデルと価格を参照してください。

自分で試す試してみよう: resp.choices[0].finish_reason とは何ですか?答えを表示

他の print の下に print(resp.choices[0].finish_reason) を追加します。回答が自然に終わっていれば stop が表示されます。max_tokens=5 を設定してもう一度実行すると、回答は途中で切られ、length が表示されます。これはモデルではなく上限が止めたことを意味します。

セルが失敗したとき#

シークレット側のエラーは、リクエストが Colab から出る前に発生します。colabtools のソース(2026 年 11 月 5 日確認)によると、userdata.get は 3 つのエラーを発生させる可能性があります。

Colab のエラー: SecretNotFoundError
SecretNotFoundError は、コード内の名前がどのシークレットとも一致しないことを意味します。
  • SecretNotFoundError: その名前のシークレットがありません。userdata.get('...') 内の文字列と Secrets パネルの名前を 1 文字ずつ比較してください。大文字と小文字は区別されます。
  • NotebookAccessError: シークレットは存在しますが、このノートブックにはアクセス権がありません。Secrets パネルでアクセスのトグルをオンにして、セルを再実行してください。
  • TimeoutException: Colab がシークレットのリクエストに応答しませんでした。エラーメッセージには、シークレットはコードが Colab UI から実行されるときにのみ取得できると書かれているので、エクスポートしたスクリプトではなく Colab ノートブック自体でセルを実行してください。

シークレットが読み込まれてもリクエストが失敗する場合、問題は API 側にあります。401 はキーが間違っているか欠けていることを意味し、404 は通常、ベース URL かモデル ID が間違っていることを示します。API 401 または 404: キー、ベース URL、モデル IDで両方を順を追って説明しており、GET /v1/models でモデルを一覧表示するでは正確な ID をコピーする方法を示しています。

共有とローテーション#

ノートブックを共有すると、userdata.get を呼び出すコードも一緒に共有されます。キーはどのセルにも出力にも含まれないので、漏れるものはありません。ノートブックを開く人は、同じ名前で自分のシークレットを用意する必要があります。そうでなければ SecretNotFoundError が発生します(上記参照)。

新しいキーを作成した場合は、Secrets パネルの値を更新してください。コードはシークレットの名前を指定しているだけなので、そのままです。

それでも大事な習慣が 1 つあります。キーを決して print しないことです。print(userdata.get('CHEAPTOKENS_KEY')) のようなセルはキーを出力に書き込み、出力はノートブックと一緒に保存されます。

クイックチェック

共有された Colab ノートブックで API キーはどこに置くべきですか?

答えを表示

答え: Colab Secrets に置き、userdata.get で読み取る

セルとその出力はノートブックと一緒に保存され、共有されます。コードはシークレットの名前を指定するだけです。

次のステップ: 回答をループ、チャット、または小さなツールに組み込みましょう。ドキュメントで API の残りの部分を扱っています。