ChatGPT APIの基礎と活用
※このページには広告(PR)リンクが含まれます
🎯 このレッスンのゴール:最後の3問に答えられること
- APIで作ったチャットアプリが、前の発言を覚えていません。本文の説明に合う原因と対処はどれですか。
- チームでAPIを使うアプリを開発し、コードをGitHubで共有します。本文のAPIキー管理ルールに沿うものはどれですか。
- 大量の問い合わせ文をAPIで自動分類する処理を作ります。本文のベストプラクティスに沿った進め方はどれですか。
本文は約6分で読めます。先に問題を頭に入れてから読むと、答えの箇所が見つけやすくなります。
すぐに問題に挑戦する ↓ChatGPT API基礎
ChatGPTのWebインターフェースは便利ですが、自分のアプリやシステムにAIを組み込むにはAPIを使う必要があります。このレッスンでは、APIキーの取得から最初のリクエスト送信、料金体系の理解、トークン管理とレート制限の対策まで、ChatGPT APIを使い始めるために必要な知識を学びます。
APIリクエストの構造
ChatGPT API リクエスト構造
ChatGPT APIはHTTPのPOSTリクエストで動作します。クライアントがAPIキーとメッセージを送ると、OpenAIのサーバーがモデルを実行してJSONレスポンスを返します。使用したトークン数に応じて課金されます。
APIキーの取得手順
ステップ1: OpenAIアカウントの準備
- ◆https://platform.openai.com にアクセス
- ◆「Sign up」からアカウントを作成(メールアドレス or Googleアカウント)
- ◆電話番号認証を完了させる
- ◆支払い方法を登録する(クレジットカード必須)
⚠️ 重要: APIの利用はChatGPT Plusとは別の課金体系です。ChatGPT Plus(月額$20)を契約していてもAPIは別途従量課金が必要です。初めて使う場合は使用上限(Spend Limit)を$5〜$10程度に設定しておくことを強く推奨します。
ステップ2: APIキーの生成
- ◆https://platform.openai.com/api-keys にアクセス
- ◆「Create new secret key」をクリック
- ◆キーに名前をつける(例:「my-app-key」)
- ◆生成されたキーをすぐにコピーして安全な場所に保存
⚠️ APIキーは一度しか表示されません: ダイアログを閉じると二度とキーを見られません。必ずコピーして
.envファイルなどに保存してください。紛失した場合は新しいキーを生成してください。
ステップ3: 使用上限の設定
- ◆https://platform.openai.com/settings/organization/limits にアクセス
- ◆「Monthly budget」に上限金額を設定(初回は$10推奨)
- ◆上限に達すると自動的にAPIが停止される(予期せぬ請求を防ぐ)
APIキーの管理ルール
| 必須ルール | 理由 |
|---|---|
| Gitに絶対コミットしない | 公開リポジトリに含まれると即悪用される |
| .envファイルに保存 | アプリとキーを分離して管理 |
| .gitignoreに.envを追加 | 誤ってコミットするのを防ぐ |
| 本番・開発で別キーを使用 | 漏洩時の被害を最小化 |
| 使用しなくなったキーは削除 | 不要なアクセスポイントを減らす |
curlでAPIリクエストを送る
最も簡単な動作確認方法です。ターミナル(Mac/Linux)またはコマンドプロンプト(Windows)で実行できます。
基本的なcurlリクエスト
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "あなたは役に立つアシスタントです"},
{"role": "user", "content": "こんにちは!"}
],
"max_tokens": 100
}'
レスポンスの読み方
{
"id": "chatcmpl-xxxxx",
"object": "chat.completion",
"choices": [
{
"message": {
"role": "assistant",
"content": "こんにちは!どのようにお手伝いできますか?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 28,
"completion_tokens": 18,
"total_tokens": 46
}
}
- ◆choices[0].message.content: AIの返答テキスト
- ◆usage.total_tokens: 今回消費したトークン数(課金の基準)
- ◆finish_reason: 「stop」が正常終了。「length」はmax_tokensに達した
PythonでAPIを呼び出す
実際のアプリケーション開発ではPythonが最もよく使われます。
環境構築
pip install openai
基本的なAPIコール
import os
from openai import OpenAI
# APIキーは環境変数から読み込む(直接コードに書かない)
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "あなたは役に立つアシスタントです"},
{"role": "user", "content": "AIの活用事例を3つ教えてください"}
],
max_tokens=500,
temperature=0.7
)
# 返答を取り出す
print(response.choices[0].message.content)
print(f"使用トークン数: {response.usage.total_tokens}")
会話履歴を保持するチャットアプリ
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
conversation_history = []
def chat(user_message):
conversation_history.append({
"role": "user",
"content": user_message
})
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=conversation_history,
max_tokens=500
)
assistant_message = response.choices[0].message.content
conversation_history.append({
"role": "assistant",
"content": assistant_message
})
return assistant_message
# 使用例
print(chat("私の名前は田中です"))
print(chat("私の名前を覚えていますか?")) # 過去の会話を覚えている
💡 会話履歴の仕組み: ChatGPT APIはステートレス(状態を持たない)です。「会話の文脈を覚えている」ように見えるのは、毎回のリクエストに過去の会話履歴を含めているからです。履歴が長くなるほどトークン消費が増える点に注意してください。
料金体系とトークン管理
トークンとは
OpenAI APIの課金単位は「トークン」です。日本語では1トークン≒1文字が目安ですが、英語は1トークン≒4文字と効率的です。
| テキスト例 | トークン数(目安) |
|---|---|
| 「こんにちは」 | 約5トークン |
| "Hello, how are you?" | 約5トークン |
| 日本語の1000文字の文章 | 約800〜1200トークン |
| A4一枚分の日本語テキスト | 約1000〜2000トークン |
モデル別の料金比較
| モデル | 入力 ($/1Mトークン) | 出力 ($/1Mトークン) | 特徴 |
|---|---|---|---|
| GPT-4o | $5.00 | $15.00 | 最高品質、マルチモーダル対応 |
| GPT-4o mini | $0.15 | $0.60 | コスパ最高、日常タスクに十分 |
| GPT-3.5 Turbo | $0.50 | $1.50 | 旧来モデル、シンプルなタスク向け |
| o1 | $15.00 | $60.00 | 推論特化、数学・科学に強い |
| o3-mini | $1.10 | $4.40 | 推論・コストバランス型 |
💡 コスト試算の例: 日本語1000文字のテキストを1000回処理する場合、GPT-4o miniなら約$0.15(約22円)、GPT-4oなら約$5(約750円)です。まずGPT-4o miniで試し、品質が不十分な場合だけGPT-4oに切り替えるのがベストプラクティスです。
トークン数を削減するテクニック
- ◆system promptを簡潔にする: 長い指示書きはトークンを消費する。必要最小限に絞る
- ◆会話履歴の要約: 長い会話は「ここまでの会話を3文で要約して」でコンパクト化してから継続
- ◆max_tokensの適切な設定: 短い返答でよいタスクに大きなmax_tokensを設定しない
- ◆モデルの使い分け: 単純なタスクはGPT-4o mini、複雑な推論だけGPT-4oを使う
レート制限の仕組みと対策
レート制限の種類
OpenAI APIには3種類のレート制限があります。
| 制限の種類 | 説明 | エラーコード |
|---|---|---|
| RPM (Requests Per Minute) | 1分間のリクエスト数 | 429 |
| TPM (Tokens Per Minute) | 1分間のトークン数 | 429 |
| RPD (Requests Per Day) | 1日のリクエスト数 | 429 |
レート制限に引っかかった場合の対処
Exponential Backoff(指数バックオフ)の実装
import time
import random
from openai import OpenAI, RateLimitError
client = OpenAI()
def call_with_retry(messages, max_retries=5):
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages
)
return response
except RateLimitError:
if attempt == max_retries - 1:
raise
# 指数バックオフ: 1秒, 2秒, 4秒, 8秒... + ランダムなジッター
wait_time = (2 ** attempt) + random.uniform(0, 1)
print(f"Rate limit. Waiting {wait_time:.1f}s...")
time.sleep(wait_time)
バッチ処理での対策
大量のテキストを処理する場合は、リクエストとリクエストの間にスリープを入れます。
import time
texts = ["テキスト1", "テキスト2", "テキスト3"] # 大量のテキスト
results = []
for i, text in enumerate(texts):
result = chat(text)
results.append(result)
# 60RPM制限の場合、1秒以上のインターバルを入れる
if i < len(texts) - 1:
time.sleep(1.1)
💡 Batch API の活用: リアルタイム性が不要なタスク(大量テキストの分類・翻訳など)は「Batch API」を使うと通常の50%引きの料金になります。24時間以内の完了が保証されます。
主要なAPIパラメータ
| パラメータ | 範囲 | 説明 |
|---|---|---|
| temperature | 0.0〜2.0 | 低いほど一貫性のある返答、高いほどランダム性が増す |
| max_tokens | 1〜モデル上限 | 返答の最大トークン数。超えると途中で切れる |
| top_p | 0.0〜1.0 | 確率上位p%のトークンのみ使用。temperatureとどちらか一方を使う |
| frequency_penalty | -2.0〜2.0 | 正の値で同じ単語の繰り返しを抑制 |
| presence_penalty | -2.0〜2.0 | 正の値で新しいトピックへの言及を促進 |
| stream | true/false | trueでストリーミング応答(文字が逐次表示される) |
temperatureの使い分け
- ◆0.0〜0.3: データ抽出・分類・翻訳など一貫性が重要なタスク
- ◆0.4〜0.7: 要約・Q&A・コード生成などのバランス型
- ◆0.8〜1.2: ブレインストーミング・創作・キャッチコピー生成
🏋️実践ワーク
以下のワークを実施してください。
- ◆APIキー取得と動作確認: OpenAIアカウントを作成し、APIキーを生成する。curlコマンドで最初のリクエストを送り、レスポンスのJSONを確認する
- ◆Pythonで基本コール:
pip install openai後、基本的なAPIコールのコードを実行し、返答とトークン使用量を出力する - ◆会話履歴の実装: 会話履歴を保持するチャット関数を実装し、「名前を覚えているか」で文脈が保持されていることを確認する
- ◆コスト試算: 自分が使おうとしているユースケースで1日に何トークン消費するか計算し、月額コストをGPT-4oとGPT-4o miniで比較する
- ◆リトライロジック実装: Exponential Backoffのサンプルコードを実装し、意図的にRateLimitErrorを再現して動作確認する
- ◆パラメータ実験: temperatureを0.0・0.5・1.0・1.5に変えて同じプロンプトを送り、返答の変化を比較する
📝まとめ
ChatGPT APIの基礎は「APIキーの安全な管理・curlとPythonでのリクエスト送信・トークンとコストの理解・レート制限への対応」の4つです。APIキーは絶対にGitにコミットせず環境変数で管理すること、まずGPT-4o miniで試してコストを最小化することが実践のポイントです。会話履歴の仕組みを理解すれば、マルチターンの対話アプリも作れます。temperatureなどのパラメータを理解してチューニングすれば、創作から分類まであらゆるタスクに最適化できます。レート制限はExponential Backoffで対処し、大量処理はBatch APIで50%コスト削減を目指しましょう。APIを使いこなすことで、ChatGPTをあらゆるサービスに組み込んで自分だけのAIツールが作れるようになります。
理解度チェック
3問全問正解でこのレッスンが「完了」になり、コースの全レッスンを完了すると修了証が発行されます。何度でも挑戦でき、全問正解すると全問の解説が読めます(不正解のときは正解した問題の数だけ表示され、30秒後に答え直せます)。
Q1.APIで作ったチャットアプリが、前の発言を覚えていません。本文の説明に合う原因と対処はどれですか。
Q2.チームでAPIを使うアプリを開発し、コードをGitHubで共有します。本文のAPIキー管理ルールに沿うものはどれですか。
Q3.大量の問い合わせ文をAPIで自動分類する処理を作ります。本文のベストプラクティスに沿った進め方はどれですか。
「ChatGPT完全マスター講座」全12レッスンを無料で修了しよう
- ✓ 理解度チェックの採点と、合格レッスンの記録
- ✓ 全レッスン合格で修了証を発行(URLでシェア・LinkedInに追加できます)
- ✓ 全レッスンの解説動画と、続きから再開できる学習ダッシュボード
完全無料・クレジットカード不要
このレッスンで使うツール・次の学び方 PR
Audible(Amazonのオーディオブック) ↗ビジネス書・マーケティングの本を通勤中や家事の合間に聴いて学べる。プレミアムプランは30日間の無料体験あり(2026年11月時点)

関連するブログ記事
関連レッスン(他のコースから)
AIビジネス活用実践講座
ChatGPT Plus/Teamプランの戦略的活用
ChatGPTには無料プランからEnterpriseプランまで複数のプランがあり、組織のサイズ・情報機密性・活用目的によって最適なプランは異
25分本文は無料で閲覧可
AIエージェント開発・自動化上級講座
LLM APIの実践活用 - OpenAI・Claude・Gemini
AIエージェントを構築するには、LLMのAPIを直接操作するスキルが不可欠です。
30分本文は無料で閲覧可
AIエージェント開発・自動化上級講座
ツール連携とAPI統合
AIエージェントの真価は、外部ツールやAPIと連携することで発揮されます。
25分本文は無料で閲覧可
MEOプロフェッショナル・多店舗運用上級講座
GBP APIによる管理の自動化
Google Business Profile APIを活用することで、多店舗のGBP管理を大幅に自動化できます。
30分本文は無料で閲覧可
AI画像生成マスター - Midjourney & Stable Diffusion
スタイル・アスペクト比・品質パラメータの使いこなし
Midjourneyをはじめとした画像生成AIは、プロンプトの文章だけでなく「パラメータ」と呼ばれる設定値によって出力結果を細かくコントロー
25分本文は無料で閲覧可
AI画像生成マスター - Midjourney & Stable Diffusion
AI画像生成の世界 - ツール比較と選び方
2022年以降、AI画像生成技術は爆発的に進化し、テキストを入力するだけでプロ品質のビジュアルを数秒で生成できる時代が到来しました。
25分無料公開