はじめにガイド
Google Colab からの最初のリクエスト: API キーを Secrets に保管する
キーを Colab Secrets に保存して、Colab ノートブックから最初のチャット補完を送信し、回答とトークン使用量を確認します。

Colab ノートブックなら、自分のコンピュータに何もインストールせずに最初のリクエストを実行できます。キーは Colab Secrets に保存し、userdata. で読み取り、openai パッケージの接続先を https:/ に設定して、choices[0]. と 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 にして、値に自分のキーを貼り付け、作業中のノートブックに対してノートブックアクセスをオンにします。ボタンの文言は変わる可能性があるので、メニューのパスではなく鍵のアイコンを探してください。
名前は今のうちに決めておきましょう。コードに渡す文字列になるからです。名前を間違えるのはよくあるミスで、エラーのセクションでどのように見えるかを示します。

最初のリクエストを実行する#
Colab は Google の colabtools モジュールにある関数 google. でシークレットを読み取ります(docstring は 2026 年 11 月 5 日確認)。SDK をインストールし、シークレットを読み取り、リクエストを 1 つ送信します。
ステップバイステップ
3 つのセルで最初のリクエスト
パッケージをインストールする
最初のセルでこれを実行します。-q フラグで出力が短くなり、パッケージがすでにランタイムにあるかどうかに関係なく動作します。
!pip install -q openaiキーを読み取り、クライアントを作成する
キーは Secrets から取得します。ここには何も貼り付けません。
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 は受け付けられません。
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-(390K コンテキスト、最大 8,192 出力トークン)を試して、セルをもう一度実行してみてください。全リストはすべてのモデルと価格を参照してください。
自分で試す試してみよう: resp.choices[0].finish_reason とは何ですか?答えを表示
他の print の下に print(resp. を追加します。回答が自然に終わっていれば stop が表示されます。max_tokens=5 を設定してもう一度実行すると、回答は途中で切られ、length が表示されます。これはモデルではなく上限が止めたことを意味します。
セルが失敗したとき#
シークレット側のエラーは、リクエストが Colab から出る前に発生します。colabtools のソース(2026 年 11 月 5 日確認)によると、userdata.get は 3 つのエラーを発生させる可能性があります。

SecretNotFoundError: その名前のシークレットがありません。userdata.内の文字列と Secrets パネルの名前を 1 文字ずつ比較してください。大文字と小文字は区別されます。get('. . . ') 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. のようなセルはキーを出力に書き込み、出力はノートブックと一緒に保存されます。
クイックチェック
共有された Colab ノートブックで API キーはどこに置くべきですか?
答えを表示
答え: Colab Secrets に置き、userdata.get で読み取る
セルとその出力はノートブックと一緒に保存され、共有されます。コードはシークレットの名前を指定するだけです。
次のステップ: 回答をループ、チャット、または小さなツールに組み込みましょう。ドキュメントで API の残りの部分を扱っています。



