1. はじめに|ChatGPT APIをPythonで使いこなそう
こんにちは!この記事では「PythonでChatGPT APIを使いたいけど、どこから手をつければいいかわからない…」という中級者の方に向けて、実践的な使い方をステップごとにやさしく解説していきます。
みなさんもご存知のとおり、OpenAIが提供するChatGPTは、自然な対話や文章生成ができるAIとして世界中で注目を集めています。そんなChatGPTの機能を、PythonからAPIを使って直接呼び出すことができるのが「ChatGPT API」です。
これを使えば、次のようなことができるようになります:
- 会話型のチャットボットを自作する
- テキストの要約や翻訳、分類を自動化する
- LINEやSlack、Flaskアプリなどと連携してAI機能を追加する
- 仕事の自動化(メール文生成やQA対応)にも応用できる
本記事では、Pythonの基本文法やAPI通信にある程度慣れている方向けに、以下の内容をじっくり解説していきます。
- ChatGPT APIを使うための準備(APIキーの取得方法など)
- PythonでAPIにリクエストを送る基本コード
- 会話を記憶させる方法やプロンプトの工夫
- 簡単なチャットボットや要約アプリの作成例
- よくあるエラーとその対処法
読み終えるころには、ChatGPT APIを自信をもって扱えるようになっているはずです。
では、さっそく始めましょう!
2. OpenAI APIの準備
ChatGPT APIを使い始めるには、まず OpenAIのAPIキーを取得する必要があります。ここでは、はじめての方でも迷わないように、準備のステップを丁寧に解説します。
✅ ステップ1:OpenAIのアカウントを作成しよう
まずは以下のリンクから、OpenAIの公式サイトにアクセスします:
👉 https://platform.openai.com/
右上の「Sign Up」ボタンをクリックして、メールアドレスやGoogleアカウント、Microsoftアカウントなどで新規登録を行いましょう。
💡 登録時に電話番号認証があります。SMSが受け取れる番号を用意しておくとスムーズです。
✅ ステップ2:APIキーを取得する
アカウント作成後、OpenAIのダッシュボードに移動します。
- 右上のアカウントアイコンをクリック
- 「View API keys」を選択
- 「Create new secret key」ボタンをクリック
- 表示された文字列をコピー(このキーは一度しか表示されません!)
この文字列が、PythonからAPIを使うときに必要な「秘密鍵(APIキー)」になります。
🔐 重要:このキーは他人と絶対に共有しないようにしてください。不正利用される恐れがあります。
✅ ステップ3:無料プランと有料プランの違いを理解しよう
OpenAIは、新規ユーザー向けに「無料クレジット(例:5ドル分)」を提供しています。
ただし、使用量が増えるとクレジットを使い果たし、有料課金が発生します。
💸 主なプランの違い
| プラン | 内容 |
|---|---|
| 無料プラン | gpt-3.5-turbo が使用可能。5ドル分の無料枠あり。 |
| 有料プラン | gpt-4が使える。使用量に応じて課金(Token課金) |
| ChatGPT Plus | 月額制(例:20ドル)でChatGPT GPT-4も使用可能(※APIは別課金) |
📘 APIでGPT-4を使いたい場合は、事前に有料アカウントの設定が必要になります。
✅ ステップ4:Python開発環境を整えよう
APIキーを取得したら、Python側でも準備をしておきましょう。
pip install openai

これでOpenAIの公式ライブラリがインストールできます。
次は、このライブラリを使って実際にChatGPT APIを呼び出してみましょう!
3. PythonからChatGPT APIを呼び出す基本コード
ここからはいよいよ、Pythonを使ってChatGPT APIに実際にアクセスしてみましょう。
まずは、シンプルな文章生成を行う基本的なコードから解説していきます。
✅ 必要なライブラリをインストールしよう
まず、OpenAIの公式ライブラリをインストールしておきましょう。
pip install openai
✅ APIキーを安全に管理する
APIキーはコードに直接書くのではなく、環境変数で管理すると安心です。
# .env ファイル(または環境変数)に保存する場合
OPENAI_API_KEY=sk-xxxxxx(←自分のAPIキーをここに)
Pythonコード内では以下のように読み込めます:
import os
import openai
from dotenv import load_dotenv
load_dotenv() # .envファイルを読み込む
openai.api_key = os.getenv("OPENAI_API_KEY")
✅ ChatGPT APIを呼び出す最小構成コード
import openai
import os
from dotenv import load_dotenv
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # または "gpt-4"
messages=[
{"role": "system", "content": "あなたは親切なアシスタントです。"},
{"role": "user", "content": "Pythonでできる面白いプロジェクトを教えてください。"}
]
)
print(response['choices'][0]['message']['content'])
✅ コードのポイント解説
model: 使用するモデル(例:gpt-3.5-turbo)messages: 会話の履歴(ロールはsystem,user,assistantの3種類)response['choices'][0]['message']['content']: AIからの回答テキスト
✅ よくあるエラーとその対策
| エラー内容 | 原因 | 解決方法 |
|---|---|---|
AuthenticationError | APIキーが間違っている | .envファイルや環境変数を再確認 |
RateLimitError | リクエストが多すぎる | 時間をあけて再試行、プランを見直す |
InvalidRequestError | messagesの構造ミスなど | ロールや構文を再確認 |
✅ 出力例
もちろんです!以下はPythonでできる面白いプロジェクトの例です:
1. 天気予報を表示するLINEボット
2. PDFを要約してくれる自動ツール
3. 音声認識でToDoリストを作るアプリ
やってみたいものはありますか?

このように、ChatGPT APIはわずか数行のコードで自然な対話を生成してくれます。
4. ChatGPT APIの高度な使い方
ここからは、ChatGPT APIをより賢く、より実用的に使うための「中級テクニック」を紹介していきます。
特に重要なのは、会話の文脈保持やプロンプトの工夫です。これらを理解すれば、ChatGPTをまるで「自分専用アシスタント」のように動かせるようになります!
✅ messages の構造を理解しよう
ChatGPT APIでは、「メッセージの履歴」を送ることで文脈を理解させることができます。
これが messages パラメータの中身です。
messages = [
{"role": "system", "content": "あなたは親切で詳しいPythonの先生です。"},
{"role": "user", "content": "リストの使い方を教えてください。"},
{"role": "assistant", "content": "リストは複数の値をまとめて扱える便利な構造です。"},
{"role": "user", "content": "じゃあ、辞書との違いは?"}
]
このように、過去のやりとりを含めて送ることで、「会話の文脈」が保たれるのです。
💡
systemロールは、AIの性格や役割を設定する重要な要素です。
例:「あなたはユーモアのある科学の先生です」「あなたは厳しいコードレビュー担当者です」など。
✅ 会話を記憶させる方法(セッション管理)
実際にチャットアプリなどを作る場合は、ユーザーごとにこの messages を保存しておくと会話の流れが自然になります。
# ユーザーごとの会話履歴を記録する例
conversation = []
conversation.append({"role": "user", "content": "こんにちは"})
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=conversation
)
reply = response['choices'][0]['message']['content']
conversation.append({"role": "assistant", "content": reply})
💡 注意点:無料プランでは1回のリクエストに送れるトークン(単語数)に制限があります。gpt-3.5-turboで最大約4,000トークンです。
✅ モデルを切り替える(gpt-3.5とgpt-4)
必要に応じてモデルを切り替えることもできます。
# gpt-4を使いたい場合(有料アカウントが必要)
response = openai.ChatCompletion.create(
model="gpt-4",
messages=messages
)
| モデル | 特徴 |
|---|---|
| gpt-3.5-turbo | 軽くて安い。レスポンスも速い。無料枠でも使える。 |
| gpt-4 | より精度が高く、長い文脈にも強い。コストは高め。 |
✅ プロンプト(命令文)の工夫
AIの応答は「プロンプト」に大きく左右されます。以下のように具体的であればあるほど、期待通りの結果が得られやすいです。
例1:フォーマットを指定する
{"role": "user", "content": "Pythonで九九を出力するコードを教えて。コードだけ返して。"}
例2:目的をはっきり伝える
{"role": "system", "content": "あなたは教育者です。小学生にもわかるようにやさしく説明してください。"}
例3:JSON形式で出力してもらう
{"role": "user", "content": "以下の文章を要約して、タイトルと本文に分けてJSONで出力して"}

このように、ちょっとした工夫でChatGPT APIはグンと使いやすくなります。
次は、実際にChatGPT APIを使った「質問応答ボット」や「文章要約ツール」の作成例を紹介していきます!
5. 実用例①:質問応答ボットを作ってみよう
ここでは、ChatGPT APIを使って シンプルな質問応答ボット を作ってみましょう!
PythonとFlask(軽量なWebフレームワーク)を使えば、ローカル環境で簡単にWebチャットボットを動かすことができます。
💡 実際のチャットUIまでは作らず、「フォームで質問 → ChatGPTが答える」流れを作ってみます!
✅ 必要なライブラリをインストールしよう
まずはFlaskとOpenAIライブラリをインストールします。
pip install flask openai python-dotenv
✅ ディレクトリ構成(例)
chatbot-app/
├── app.py
├── .env
└── templates/
└── index.html
✅ .env にAPIキーを保存
.env ファイルを作成して、OpenAIのAPIキーを記述します。
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
✅ app.py(Flaskアプリのメインファイル)
from flask import Flask, request, render_template
import openai
import os
from dotenv import load_dotenv
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def index():
answer = ""
if request.method == "POST":
user_input = request.form["question"]
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "あなたは親切な質問応答ボットです。"},
{"role": "user", "content": user_input}
]
)
answer = response["choices"][0]["message"]["content"]
return render_template("index.html", answer=answer)
if __name__ == "__main__":
app.run(debug=True)
✅ templates/index.html(HTMLテンプレート)
<!doctype html>
<html>
<head>
<title>質問応答ボット</title>
</head>
<body>
<h1>ChatGPT 質問応答ボット</h1>
<form method="POST">
<label>質問を入力してください:</label><br>
<input type="text" name="question" size="50">
<button type="submit">送信</button>
</form>
{% if answer %}
<h2>AIの回答:</h2>
<p>{{ answer }}</p>
{% endif %}
</body>
</html>
✅ 実行方法
python app.py
表示されたURL(通常は http://127.0.0.1:5000/)を開くと、質問フォームが出現します。
「Pythonの関数ってなに?」などと入力して送信すれば、ChatGPTが答えてくれます!
✅ 発展のヒント
- セッション管理で会話の履歴を保持する
- フロントエンドに チャットUI(StreamlitやReactなど) を導入する
- 回答を ログに保存して、分析に活用する
6. 実用例②:テキスト要約・分類・翻訳などの自動処理
ChatGPT APIは、質問応答だけでなく、文章の要約、分類、翻訳、キーワード抽出などさまざまな自然言語処理タスクにも活用できます。
ここでは、それぞれの実用例をPythonコード付きで紹介していきます。
✅ ① 長文の要約を自動化する
大量の文章を読みたくないとき、ChatGPTに要約してもらえば時短にもなります!
import openai
def summarize_text(text):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "あなたはプロの要約ライターです。"},
{"role": "user", "content": f"以下の文章をわかりやすく3行で要約してください:\n{text}"}
]
)
return response["choices"][0]["message"]["content"]
sample_text = """
Pythonは、可読性が高く、豊富なライブラリが揃っているため、初心者からプロまで幅広く使われているプログラミング言語です。
Web開発やデータ分析、AI開発など、多岐にわたる分野で活躍しています。
特に最近では、機械学習や自然言語処理の分野で注目を集めています。
"""
print(summarize_text(sample_text))
✅ ② テキストをカテゴリに分類する
たとえば、問い合わせメールを「要望」「クレーム」「質問」などに分類したいときに便利です。
def classify_text(text):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "あなたは文章をカテゴリに分類するAIです。"},
{"role": "user", "content": f"次の文章を分類してください:{text}\nカテゴリ候補:要望, クレーム, 質問"}
]
)
return response["choices"][0]["message"]["content"]
print(classify_text("アプリの動作が遅いので改善してほしいです。"))
✅ ③ 多言語翻訳を行う(日本語→英語など)
def translate_text(text, to_lang="English"):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": f"あなたは優秀な翻訳家です。"},
{"role": "user", "content": f"次の文章を{to_lang}に翻訳してください:{text}"}
]
)
return response["choices"][0]["message"]["content"]
print(translate_text("今日はとても良い天気ですね。"))
✅ ④ JSON形式での出力整形(アプリ連携向け)
APIの返答をそのままUIに使うときは、**構造化出力(JSON形式)**が便利です。
def extract_info_json(text):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "以下の文章から「名前」「メールアドレス」「要望内容」をJSONで抽出してください。"},
{"role": "user", "content": f"{text}"}
]
)
return response["choices"][0]["message"]["content"]
sample = "こんにちは、私は田中一郎です。tanaka@example.com に連絡をください。機能追加の要望があります。"
print(extract_info_json(sample))
✅ 実用アイデア集
| 機能 | 活用例 |
|---|---|
| 要約 | ニュース記事、議事録の要約 |
| 分類 | お問い合わせ対応、SNS投稿の感情分析 |
| 翻訳 | グローバル対応のWebサービス |
| JSON出力 | Slack botやLINE botとの連携データ |
7. よくあるエラーとその対処法
ChatGPT APIを使っていると、予期せぬエラーに遭遇することがあります。
エラーメッセージは英語で表示されることが多く、初めてだとちょっと焦りますよね。
ここでは、よくあるエラーとその原因・対処法をわかりやすくまとめました。
✅ AuthenticationError(認証エラー)
エラーメッセージ例:
openai.error.AuthenticationError: No API key provided
原因:
APIキーが設定されていない、または間違っている。
対処法:
.envファイルでOPENAI_API_KEYが正しく設定されているか確認openai.api_key = os.getenv("OPENAI_API_KEY")の記述を見直す
✅ RateLimitError(レート制限エラー)
エラーメッセージ例:
openai.error.RateLimitError: You exceeded your current quota
原因:
一定時間内に送信できるリクエスト数を超えた、または無料枠を使い切った。
対処法:
- 時間を置いて再試行する(数分〜数時間)
- OpenAIのダッシュボードで利用状況を確認する
- 有料プランにアップグレードすることを検討
✅ InvalidRequestError(無効なリクエスト)
エラーメッセージ例:
openai.error.InvalidRequestError: This model's maximum context length is 4097 tokens
原因:
1リクエストのトークン数(文字数)がモデルの上限を超えている。
対処法:
messagesの内容を削る- 会話履歴を適宜リセット・要約する
- より長文対応のモデル(gpt-4-32kなど)に変更する
✅ APIConnectionError(接続エラー)
エラーメッセージ例:
openai.error.APIConnectionError: Error communicating with OpenAI
原因:
ネットワーク障害やOpenAIサーバーの一時的な不具合。
対処法:
- インターネット接続を確認する
- 数分後に再試行する
- OpenAIのステータスページで障害情報を確認
✅ その他のヒント
| 状況 | 対処法 |
|---|---|
| 複数回エラーが続く | リクエストを一度に大量に送っていないか確認 |
| 無反応になる | タイムアウト設定を確認する(例:timeout=30) |
| JSON解析に失敗 | ChatGPTの出力が完全なJSONでない場合は正規表現などで補正 |
✅ エラーを防ぐためのベストプラクティス
- try-except構文で例外処理を入れておく
- ログ出力でエラー原因を特定しやすくする
- 利用制限・料金管理のためにOpenAIの管理画面を定期的に確認
try:
response = openai.ChatCompletion.create( ... )
except openai.error.OpenAIError as e:
print(f"エラーが発生しました: {e}")

これで、ChatGPT APIをより安心して使いこなせるようになりますね!
8. まとめ|APIでChatGPTの力を引き出そう
この記事では、PythonでChatGPT APIを活用するための基本から応用までをステップバイステップで紹介してきました。
おさらいすると、次のようなことができるようになったはずです:
✅ OpenAI APIキーの取得方法と基本の準備
✅ PythonでChatGPT APIを呼び出すコードの書き方
✅ messages構造を使った会話の文脈保持
✅ 質問応答ボットやテキスト自動処理(要約・分類・翻訳)の実装例
✅ よくあるエラーとその対処方法
ChatGPT APIは、工夫次第で業務効率化からアプリ開発まで活用の幅が広がる万能ツールです。
中級者であれば、FlaskやFastAPIと組み合わせてLINE連携ボットやSlack自動返信システムなども作れるようになります。

「Python × ChatGPT API」の世界は本当に奥が深く、楽しいですよ!
今後はさらに、データベースとの連携やユーザーごとのパーソナライズなども視野に入れてみましょう。
よくある質問(Q&A)
- QChatGPT APIの利用にお金はかかりますか?
- A
初回登録時に無料クレジット(例:5ドル分)が付与されるので、まずは無料で試せます。それ以降は使用したトークン数に応じて課金されます。gpt-3.5-turboは比較的安価ですが、gpt-4を使う場合は有料アカウントが必要です。
- QChatGPT APIとブラウザ版のChatGPT(chat.openai.com)の違いは?
- A
ブラウザ版はUI付きで手軽に使えるのに対し、APIは自作アプリやスクリプトに組み込んで使える自由度の高い手段です。LINEやSlackのボット、自動応答システムなどを構築するならAPIが向いています。
- QGPT-4はどうすれば使えますか?
- A
GPT-4をAPIで利用するには、有料プラン(ChatGPT Plusとは別)に申し込む必要があります。OpenAIのダッシュボードで有効化されているかを確認し、
model="gpt-4"と指定することで使用できます。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。