ChatGPTのWebインターフェースは便利ですが、自分のアプリやシステムにAIを組み込むにはAPIを使う必要があります。このレッスンでは、APIキーの取得から最初のリクエスト送信、料金体系の理解、トークン管理とレート制限の対策まで、ChatGPT APIを使い始めるために必要な知識を学びます。
ChatGPT API リクエスト構造
ChatGPT APIはHTTPのPOSTリクエストで動作します。クライアントがAPIキーとメッセージを送ると、OpenAIのサーバーがモデルを実行してJSONレスポンスを返します。使用したトークン数に応じて課金されます。
⚠️ 重要: APIの利用はChatGPT Plusとは別の課金体系です。ChatGPT Plus(月額$20)を契約していてもAPIは別途従量課金が必要です。初めて使う場合は使用上限(Spend Limit)を$5〜$10程度に設定しておくことを強く推奨します。
⚠️ APIキーは一度しか表示されません: ダイアログを閉じると二度とキーを見られません。必ずコピーして
.envファイルなどに保存してください。紛失した場合は新しいキーを生成してください。
| 必須ルール | 理由 |
|---|---|
| Gitに絶対コミットしない | 公開リポジトリに含まれると即悪用される |
| .envファイルに保存 | アプリとキーを分離して管理 |
| .gitignoreに.envを追加 | 誤ってコミットするのを防ぐ |
| 本番・開発で別キーを使用 | 漏洩時の被害を最小化 |
| 使用しなくなったキーは削除 | 不要なアクセスポイントを減らす |
最も簡単な動作確認方法です。ターミナル(Mac/Linux)またはコマンドプロンプト(Windows)で実行できます。
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
}
}
実際のアプリケーション開発ではPythonが最もよく使われます。
pip install openai
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に切り替えるのがベストプラクティスです。
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時間以内の完了が保証されます。
| パラメータ | 範囲 | 説明 |
|---|---|---|
| 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の使い分け
以下のワークを実施してください。
pip install openai後、基本的なAPIコールのコードを実行し、返答とトークン使用量を出力するChatGPT APIの基礎は「APIキーの安全な管理・curlとPythonでのリクエスト送信・トークンとコストの理解・レート制限への対応」の4つです。APIキーは絶対にGitにコミットせず環境変数で管理すること、まずGPT-4o miniで試してコストを最小化することが実践のポイントです。会話履歴の仕組みを理解すれば、マルチターンの対話アプリも作れます。temperatureなどのパラメータを理解してチューニングすれば、創作から分類まであらゆるタスクに最適化できます。レート制限はExponential Backoffで対処し、大量処理はBatch APIで50%コスト削減を目指しましょう。APIを使いこなすことで、ChatGPTをあらゆるサービスに組み込んで自分だけのAIツールが作れるようになります。
全問正解でこのレッスンが「完了」になり、コースの全レッスンを完了すると修了証が発行されます。解説つき・何度でも挑戦できます。
Q1.APIで作ったチャットアプリが、前の発言を覚えていません。本文の説明に合う原因と対処はどれですか。
Q2.チームでAPIを使うアプリを開発し、コードをGitHubで共有します。本文のAPIキー管理ルールに沿うものはどれですか。
Q3.大量の問い合わせ文をAPIで自動分類する処理を作ります。本文のベストプラクティスに沿った進め方はどれですか。
完全無料・クレジットカード不要
AIビジネス活用実践講座
ChatGPTには無料プランからEnterpriseプランまで複数のプランがあり、組織のサイズ・情報機密性・活用目的によって最適なプランは異
25分本文は無料で閲覧可
AIエージェント開発・自動化上級講座
AIエージェントを構築するには、LLMのAPIを直接操作するスキルが不可欠です。
30分本文は無料で閲覧可
AIエージェント開発・自動化上級講座
AIエージェントの真価は、外部ツールやAPIと連携することで発揮されます。
25分本文は無料で閲覧可
MEOプロフェッショナル・多店舗運用上級講座
Google Business Profile APIを活用することで、多店舗のGBP管理を大幅に自動化できます。
30分本文は無料で閲覧可
AI画像生成マスター - Midjourney & Stable Diffusion
Midjourneyをはじめとした画像生成AIは、プロンプトの文章だけでなく「パラメータ」と呼ばれる設定値によって出力結果を細かくコントロー
25分本文は無料で閲覧可
AI画像生成マスター - Midjourney & Stable Diffusion
2022年以降、AI画像生成技術は爆発的に進化し、テキストを入力するだけでプロ品質のビジュアルを数秒で生成できる時代が到来しました。
25分無料公開