前回の記事では、チャット画面と生成AI APIの違いは「誰が生成AIへ依頼するか」だと整理しました。チャット画面は人が、APIはPythonなどのプログラムが依頼します。
では実際に、Pythonから生成AIへ質問するには、どのくらいのコードが必要なのでしょうか。
今回やることは、たった1つです。
Pythonから生成AI APIへ1回だけ質問を送り、返ってきたテキストを表示する。
Tool Callingも、JSONも、RAGも使いません。まずは最小の1往復を動かします。
具体例には OpenAI API を使いますが、この記事で優先するのは生成AI APIを呼ぶときの共通構造を理解することです。
記事の後半で、GeminiとClaudeの最小コードも並べて確認します。OpenAI固有の細かい機能は、別の記事で紹介します。
この記事を読み終えると、次のことができるようになります。
- PythonからOpenAI APIを1回呼び出して、回答を表示できる
- 最小コードのどこが何をしているかを説明できる
- 1回の呼び出しにいくらかかるかを自分で確認できる
- 動かないときに、どこから確認すればよいか分かる
- GeminiやClaudeでも同じ構造で書けることが分かる
今回は、APIが1回正常に動くことをゴールにします。
はじめに
今回やること
最初に、何が起こるのかを確認します。
チャット画面と違うのは、人がブラウザへ入力する代わりにPythonが送信することです。始点と終点がどちらもPythonなので、回答をそのまま次の処理へ渡せます。
今回使うもの
| 項目 | 内容 |
|---|---|
| API | OpenAI API(Responses API) |
| Python SDK | openai |
| モデル例 | gpt-5.6-luna |
| 実行環境 | Google Colab / Jupyter Notebook / ローカルPython |
| APIキー | 必要 |
gpt-5.6-luna は、2026年9月2日時点で「コストを抑えた大量処理向け」として案内されているモデルです。モデルは追加・変更・廃止されるため、実行時には公式のモデル一覧を確認してください。
手順は4つです。
- APIキーを作る
- SDKをインストールする
- APIキーを読み込む
- APIを1回呼んで、回答を表示する
ChatGPTの契約とAPI利用は別
コードを動かす前に、ひとつ確認しておきます。
ChatGPT Plusを契約していても、その契約にOpenAI APIの利用料は含まれません。 OpenAI APIは、API Platform側で別に利用設定・課金管理されます。
今回例に使う gpt-5.6-luna も、2026年9月2日時点では無料のAPI Tierではサポートされていません。実際にこのコードを動かすには、API側での課金設定が必要です。
「では、いくらかかるのか」は、Step 4 のあとで実際の数字を出して確認します。先に結論を言うと、練習で叩く分には気にする必要のない金額です。
Pythonから1回だけ質問して、答えを受け取る
Step 1:APIキーを作る
OpenAI Platform にアクセスし、ログインしてAPIキーを新規作成します。

APIキーは、「このAPIリクエストは誰のものか」を確認するための秘密の鍵です。パスワードと同じ扱いをします。
作成したキーは、この後すぐ使うのでコピーしておいてください。画面を離れると再表示できないことがあります。
キーの管理で注意すべき点は、記事の後半「APIキーと送信データの扱い」でまとめて説明します。
Step 2:Python SDKをインストールする
Google Colab や Jupyter Notebook なら、最初のセルで次を実行します。
!pip install openai
ローカルのターミナルから実行する場合は、先頭の ! を付けません。
pip install openai
この ! は、Notebookのセルからパソコンのコマンドを実行するための記号です。ここを取り違えるとエラーになります。
Step 3:APIキーを読み込む
今回は最小の例なので、Notebookの実行中だけAPIキーを環境変数へ設定します。
import os
from getpass import getpass
os.environ["OPENAI_API_KEY"] = getpass("OPENAI_API_KEY: ")
実行すると入力欄が表示されます。
OPENAI_API_KEY: ·························
getpass() を使うと、入力したAPIキーが画面にそのまま表示されません。これは、まず1回試すための簡易的な方法です。 Notebookを終了すれば設定は消えます。毎回入力せずに安全に管理する方法は、後続の記事で扱います。
Step 4:APIを1回だけ呼び出す
まずは、接続を確認するための単純な質問を送ります。
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5.6-luna",
input="API接続テスト成功、とだけ回答してください。",
)
print(response.output_text)
これだけです。正常に実行できれば、次のように表示されます。
API接続テスト成功
モデルによって句読点などが付く場合があります。今回の目的は文章の内容ではなく、Pythonから送信し、Pythonで回答を受け取れたことです。
ここまで動いたら、この記事のゴールは達成です。この先は、動いたコードの意味を確認していきます。
3つのセルをまとめて実行する
Google Colab や Jupyter Notebook で最初から試す場合は、次の3セルを順に実行してください。
# セル1:SDKをインストール !pip install openai
# セル2:APIキーを入力
import os
from getpass import getpass
os.environ["OPENAI_API_KEY"] = getpass("OPENAI_API_KEY: ")
# セル3:APIを1回呼ぶ
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5.6-luna",
input="API接続テスト成功、とだけ回答してください。",
)
print(response.output_text)
この3セルが動けば、今回のゴールは達成です。
いくらかかったのか
先ほど後回しにした費用の話です。実際に1回呼んだので、いくらかかったのかを確認できます。
APIから返ってくる response には、回答本文以外の情報も入っています。そのひとつが usage です。
print(response.usage)
これで、いま送った1回で入力・出力それぞれ何トークン使ったかが分かります。費用はこの式で決まります。
1回あたりの費用 = 入力トークン数 × 入力単価 + 出力トークン数 × 出力単価
gpt-5.6-luna の標準料金(短いコンテキスト、2026年9月2日時点)は、入力が100万トークンあたり $0.10、出力が $0.60 です。先ほどの接続テストを入力30トークン・出力10トークンと見積もり、1ドル150円で換算すると次のようになります。
| 実行回数 | 費用の目安 |
|---|---|
| 1回 | 約 0.0014円 |
| 100回 | 約 0.14円 |
| 1000回 | 約 1.4円 |
つまり、練習で試す分には費用を気にする必要はありません。 課金設定という言葉で身構えてしまいがちですが、この規模なら誤差の範囲です。
気をつけるのは、長い文章を大量に送るようになってからです。長いコンテキストを使うと単価が上がりますし、繰り返し処理を回せば回数が増えます。この記事の範囲では、短い入力を1回送るだけなので問題になりません。
最小コードは4つの部分でできている
コード全体を見ると難しそうに感じるかもしれません。しかし、見る場所は4つだけです。
① SDKを読み込む
from openai import OpenAI
OpenAIのPython SDKを使えるようにしています。
② APIクライアントを作る
client = OpenAI()
このとき、SDKは環境変数 OPENAI_API_KEY を自動的に読み込みます。Step 3 で getpass() を使って設定したキーが、ここで使われます。
③ APIへリクエストを送る
response = client.responses.create(
model="gpt-5.6-luna",
input="API接続テスト成功、とだけ回答してください。",
)
ここで重要なのは2つです。model は利用するモデル、input は生成AIへ送る質問や指示です。
④ 回答テキストを取り出す
print(response.output_text)
response には回答本文以外の情報も含まれます。その中からテキスト部分だけを取り出しているのが output_text です。
まず覚えるのは3つ
4つの部分のうち、②③④にあたる次の3つを覚えておけば、当面は困りません。
| 書き方 | 役割 |
|---|---|
OpenAI() |
APIを使うためのクライアントを作る |
client.responses.create(...) |
APIへ質問を送る |
response.output_text |
返ってきたテキストを取り出す |
つまり 準備 → 送信 → 回答取得 です。JSONやTool Callingが出てくるとコードは長くなりますが、基本はこの往復の延長です。
OpenAIでもGeminiでもClaudeでも構造は同じ
冒頭で「共通構造の理解を優先する」と書きました。ここで実際に確かめます。同じ「1回だけ質問する」コードを、3社それぞれで書いてみます。
OpenAI
# pip install openai
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5.6-luna",
input="API接続テスト成功、とだけ回答してください。",
)
print(response.output_text)
Google Gemini
# pip install -U google-genai
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.7-flash",
input="API接続テスト成功、とだけ回答してください。",
)
print(interaction.output_text)
Anthropic Claude
# pip install anthropic
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-5",
max_tokens=1000,
messages=[
{"role": "user", "content": "API接続テスト成功、とだけ回答してください。"}
],
)
print(message.content[0].text)
並べて見ると、違うのは名前だけ
| OpenAI | Google Gemini | Anthropic Claude | |
|---|---|---|---|
| ① SDK | openai |
google-genai |
anthropic |
| 環境変数 | OPENAI_API_KEY |
GEMINI_API_KEY |
ANTHROPIC_API_KEY |
| ② クライアント | OpenAI() |
genai.Client() |
anthropic.Anthropic() |
| ③ 送信 | responses.create() |
interactions.create() |
messages.create() |
| ④ 取り出し | .output_text |
.output_text |
.content[0].text |
3社とも ①SDKを読み込む → ②クライアントを作る → ③送る → ④取り出す の順序は同じです。環境変数からAPIキーを自動で読む挙動も共通しています。
違いは細部だけです。
- Claudeは
max_tokensの指定が必須 - Claudeは入力を
messagesというリストで渡し、取り出しもcontentのリストから行う(回答が複数の部品に分かれて返る設計のため) - OpenAIとGeminiは、どちらも
input=で渡して.output_textで取り出せる
1つのサービスで書けるようになれば、他社へ移るときに覚え直すのは名前だけです。これが、この記事で共通構造を優先した理由です。
各サービスの詳細な使い方は、後続の記事でそれぞれ扱います。
動かないときの切り分け
最初の1回が通らないことは珍しくありません。原因を当てずっぽうで探すより、エラーメッセージの最初の行を見るのが近道です。
エラーメッセージ別の対処
| 症状 | よくある原因 | 確認すること |
|---|---|---|
401 / Authentication |
キーの入力ミス、無効化済みのキー | 余計な空白が入っていないか。キーを再発行して試す |
429 / Rate limit |
利用枠の上限、課金設定が未完了 | API Platform の Billing / Usage / Rate limits |
| モデル名エラー | モデルの改名・廃止 | 公式のモデル一覧で、いま使える名前を確認する |
ModuleNotFoundError |
SDK未インストール、別環境で実行 | 次の「実行環境による違い」を確認 |
| エラーが出ない・固まる | セルの実行順 | SDKの導入とキーの読み込みを先に実行したか |
APIキーそのものを print() して確認するのは避けてください。 設定されているかどうかを確かめたいだけなら、長さと先頭数文字で十分です。
import os
key = os.environ.get("OPENAI_API_KEY", "")
print(f"設定済み: {bool(key)} / 長さ: {len(key)} / 先頭: {key[:7]}")
なお、再試行や利用制限への本格的な対処は、後続の記事で扱います。今回はエラー処理コードまでは書きません。
実行環境による違い
つまずきの多くは、コードではなく実行環境が原因です。
| Google Colab | Jupyter Notebook | ローカル(ターミナル) | |
|---|---|---|---|
| SDKの導入 | !pip install openai |
!pip install openai |
pip install openai |
| キーの入力 | getpass() |
getpass() |
環境変数に設定 |
| セッションが切れると | SDKもキーも消える | キーが消える | 残る |
| よくあるつまずき | ランタイム再接続で最初からやり直し | 別のPython環境に入れてしまう | シェルを開き直すと環境変数が消える |
inputを変えるだけで、データ分析の入口になる
接続が確認できたら、input だけを変えてみましょう。売上データの一部を、直接文字列として渡してみます。
response = client.responses.create(
model="gpt-5.6-luna",
input="""
次の売上情報を、追加計算をせず、
与えられた数値をそのまま使って1文で要約してください。
土曜日:51,590円
日曜日:47,010円
""",
)
print(response.output_text)
週末の売上は、土曜日が51,590円、日曜日が47,010円でした。
回答文は毎回まったく同じになるとは限りません。ここで確認したいのは次の点です。
Pythonの変数やデータを
inputに組み込めば、生成AIへ自動で渡せる
今回のコードでやったのは、次の文字列を input に入れただけです。
土曜日:51,590円 日曜日:47,010円
CSVそのものをアップロードしたわけではありません。実務では、次のような形になります。
CSV ↓ pandasで集計 ↓ 必要な結果だけを文字列にする ↓ APIへ送信
つまり Pythonが計算し、その結果を生成AIへ説明させる という設計です。長いCSVをそのまま生成AIへ渡して計算させるより、処理内容を確認しやすくなります。前回の記事で見た「計算はPython、説明は生成AI」が、コードのレベルではこう表れます。
APIキーと送信データの扱い
最後に、実際に使い始める前の注意点をまとめておきます。
APIキーは書き残さない
APIキーは、次のような場所には書かないでください。
- ブログ記事
- GitHubの公開リポジトリ
- 共有するNotebook
- メールやチャット
- スクリーンショット
特に、次のようにコードへ直接書く方法は避けます。
# これは避ける
client = OpenAI(
api_key="sk-xxxxxxxxxxxxxxxx"
)
Notebookへ直接書くのも同様です。共有したりGitHubへアップロードしたときに、キーが漏れる可能性があるからです。今回 getpass() でその場入力にしたのは、この理由によります。
APIへ送るデータについて
OpenAIのAPI Platformでは、2026年9月2日時点で、APIへ送った入力と出力は、明示的にオプトインしない限りモデル学習にはデフォルトで使用されません。
ただし「APIなら何でも送ってよい」という意味ではありません。業務利用では、次のようなものが含まれていないかを確認します。
- 個人情報・顧客情報
- 社外秘データ
- APIキーやパスワード
- 契約上、外部送信できない情報
データ保持や企業向けのプライバシー条件は、実際の業務導入時に公式情報で確認してください。最初の練習には、今回のような架空の数値を使うのが安全です。
APIキーを安全に管理する具体的な方法は、次の2記事で扱います。
まとめ
今回はPythonから生成AI APIを1回だけ呼び出しました。手順は4つです。
- APIキーを作る
- Python SDKをインストールする
- APIキーを読み込む
- APIへ質問を送り、回答テキストを取り出す
重要なのは、コードを暗記することではありません。
認証して、入力を送り、回答を受け取る
という構造を理解することです。OpenAIでもGeminiでもClaudeでも、具体的な書き方は違いますが、この考え方は共通しています。
次に進む前に、以下を確認しておいてください。
- APIキーを作った
- SDKをインストールした
- 接続テストが1回通った
response.usageで使用トークン数を確認した- キーをコードに直接書いていない
これが動けば、生成AIをPythonプログラムの中へ組み込む第一歩は完了です。次に必要になるのは、APIキーを安全に扱う方法です。
