
ChatGPTはブラウザ上でも手軽に使えますが、OpenAIのAPIを活用すればさらに可能性が広がります。Pythonのプログラムに組み込むことで、自分の用途に合わせたオリジナルのチャットボットを作れるようになるからです。
定型業務の自動化、社内ツールへの組み込み、独自データを使った回答システムなど、アイデア次第で応用範囲は無限に広がります。
本記事では、APIキーの取得から始まり、PythonでのAPI呼び出し方、実際のチャットボット作成、さらに一歩進んだ活用テクニックまでを順番に解説します。ChatGPTをただ使うから、自分で作る・組み込む段階へステップアップしたい方は、ぜひ最後まで読み進めてみてください。
目次
OpenAI APIの準備

ChatGPT APIをPythonから利用するには、まずOpenAIの公式サイトでアカウントを作成し、APIキーを取得する必要があります。ここでは準備段階で行うべきステップを順番に紹介します。
OpenAIアカウントの作成
はじめに、OpenAIの公式サイト(https://platform.openai.com/)にアクセスし、新規登録を行います。
メールアドレスまたはGoogleアカウントなどでサインアップできますが、登録の過程で電話番号による認証が求められる点に注意しましょう。認証用のSMSが届くので、指示に従って番号を入力すれば登録は完了です。
APIキーの発行
アカウント登録が完了したら、ダッシュボード右上のアイコンから「View API keys」を選択し、新しいシークレットキーを発行します。このAPIキーは発行時に一度だけ表示され、その後は再確認できない仕組みになっているため、表示された時点で必ずコピーし、安全な場所に保管しておきましょう。
誤って第三者に流出させると不正利用につながる恐れがあるため、コードに直接書き込まず、環境変数などで管理するのが基本です。
必要なライブラリのインストール
APIキーを取得したら、Python側でOpenAIのライブラリをインストールします。ターミナル(またはコマンドプロンプト)で、次のコマンドを実行してください。
pip install openai
あわせて、APIキーを環境変数として読み込むために使う「python-dotenv」もインストールしておくと便利です。
pip install python-dotenv
APIキーを扱う上での注意点
APIキーはいわば「サービスの合鍵」です。GitHubなどの公開リポジトリにそのままアップロードしてしまうと、第三者に不正利用され高額請求につながるケースもあります。
「.gitignore」に「.env」を追加してバージョン管理から除外する、定期的にキーを再発行するといった対策を習慣にしておきましょう。
PythonからChatGPT APIを呼び出す基本コード

.envファイルの準備
プロジェクトのフォルダに「.env」というファイルを作成し、その中に取得したAPIキーを記述します。
OPENAI_API_KEY=”ここに取得したAPIキーを貼り付ける”
基本コードの実装
次に、以下のコードを「main.py」などのファイル名で保存し、実行してみます。
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”,
messages=[
{“role”: “system”, “content”: “あなたは親切なアシスタントです。”},
{“role”: “user”, “content”: “質問内容”}
]
)
print(response[‘choices’][0][‘message’][‘content’])
実行結果の確認
質問内容の部分を任意の質問文に書き換えて実行すると、ChatGPTからの回答がターミナル上に表示されます。このシンプルな構成が、Pythonを使ってChatGPT APIを呼び出す際の基本形になります。
「model」に指定する文字列を変更すれば、より高性能な上位モデルに切り替えることも可能です。
質問応答ボットを作ってみよう

基本のコードが動くことを確認できたら、次はWebブラウザ上で動く簡単な質問応答ボットを作成してみましょう。ここではPythonの軽量なWebフレームワークである「Flask」を使い、ユーザーが入力した質問に対してChatGPTが回答するアプリを構築します。
必要なライブラリの準備
Flaskを使うため、以下のコマンドで追加のライブラリをインストールしておきます。
pip install flask
サーバー側のコード(app.py)
先ほどと同様に「.env」ファイルにAPIキーを保存したうえで、次のコードを「app.py」として保存します。
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)
このコードでは、ユーザーがフォームから質問を送信すると「/」のルートがPOSTリクエストを受け取り、入力された質問文をChatGPT APIに渡して回答を取得します。取得した回答は「answer」という変数に格納され、テンプレート側に渡されて画面に表示される仕組みです。
画面側のコード(templates/index.html)
「templates」フォルダを作成し、その中に「index.html」というファイルを用意します。フォームで質問を受け付け、回答があれば画面に表示するシンプルな構成にします。
<!DOCTYPE html>
<html lang=”ja”>
<head>
<meta charset=”UTF-8″>
<title>質問応答ボット</title>
</head>
<body>
<h1>質問応答ボット</h1>
<form method=”POST”>
<input type=”text” name=”question” placeholder=”質問を入力してください”>
<button type=”submit”>送信</button>
</form>
{% if answer %}
<p>回答:{{ answer }}</p>
{% endif %}
</body>
</html>
実行してみよう
ファイルを保存したら、ターミナルで以下のコマンドを実行します。
python app.py
実行後、ブラウザで「http://127.0.0.1:5000/」にアクセスすると、質問入力フォームが表示されます。テキストボックスに質問を入力して送信すると、ChatGPTが生成した回答がページ上に表示されます。
このように、わずか数十行のコードでもブラウザから使える質問応答ボットを構築できるのが、ChatGPT APIの大きな魅力です。
もっと便利に使うための応用テクニック

最小構成のボットが動くようになったら、次はChatGPT APIならではのパラメータや工夫を取り入れて、より実用的なチャットボットへと発展させていきましょう。
システムメッセージで人格・役割を設定する
「system」ロールに渡すメッセージを変更するだけで、ボットの回答の方向性を大きく変えることができます。
例えば「あなたは製品マニュアルに詳しいサポート担当者です」のように具体的な役割を与えると、サポート窓口に適した口調や内容の回答が返ってくるようになります。
会話履歴を保持して自然な対話にする
先ほどのコードでは、質問を送るたびに新しい会話として扱われるため、前の発言内容を踏まえた返答はできません。「messages」のリストにこれまでのやり取りを追加していくことで、文脈を維持した自然な会話が可能になります。
例えば、直前のユーザー発言とアシスタントの返答を配列に保持し、次のリクエストにあわせて渡す形にすると、会話の流れを踏まえた回答が得られます。
temperatureで回答の個性を調整する
APIには「temperature」というパラメータがあり、0から2の範囲で値を指定できます。値を低くすると一貫性のある堅実な回答になり、値を高くすると創造的でバリエーション豊かな回答が返りやすくなります。
FAQボットのように正確さを重視する用途では低めの値、アイデア出しのような用途では高めの値を設定するとよいでしょう。
エラーハンドリングを追加する
実際に運用する際は、通信エラーやAPIの利用制限超過など、想定外のトラブルが発生することもあります。
「try」と「except」を使ってAPI呼び出しを囲み、エラー発生時にはユーザーへわかりやすいメッセージを表示するようにしておくと、アプリ全体が突然停止してしまう事態を防げます。
利用時に知っておきたい注意点

料金体系とコスト管理
ChatGPT APIは使用したトークン数に応じて課金される従量課金制です。
モデルの種類によって単価も異なるため、アクセス数が多いサービスに組み込む場合は、想定される利用量に応じたコストを事前に試算しておくことが大切です。
レート制限について
OpenAI APIには、一定時間あたりに送信できるリクエスト数やトークン数に上限が設けられています。
アクセスが集中するアプリでは、この上限に達してエラーが発生することもあるため、リトライ処理を組み込んだり、必要に応じて上位プランへの変更を検討したりすると安定した運用につながります。
個人情報の取り扱い
ユーザーが入力した内容はAPIを通じて外部サーバーに送信されます。
個人情報や機密情報を扱うサービスに組み込む場合は、利用規約やプライバシーポリシーを確認したうえで、入力内容の取り扱いについてユーザーに明示しておくと安心です。
まとめ
本記事では、OpenAI APIの準備からPythonでのChatGPT API呼び出し、Flaskを使った質問応答ボットの実装、さらに会話履歴の保持やパラメータ調整といった応用テクニックまでを解説しました。
APIキーの取得やライブラリのインストールといった準備さえ済ませてしまえば、呼び出し自体は数行のコードで実現でき、決して難しいものではないことがおわかりいただけたのではないでしょうか。
重要なのは、最初から完璧なチャットボットを目指すのではなく、まずは最小構成を実際に動かし、APIのレスポンス構造やパラメータの役割に慣れていくことです。
基本を押さえたうえで工夫を重ねていけば、問い合わせ対応や社内ツールなど、自分のアイデア次第でさまざまな場面に応用できるチャットボットへと発展させていくことができます。ぜひ本記事を参考に、自分だけのChatGPT活用アプリ作りに挑戦してみてください。
株式会社3inkでは、ChatGPTをはじめとする最先端AI・LLM(大規模言語モデル)を活用したAIチャットボットの構築から、既存業務システム・WebアプリへのAPI連携開発、さらにはオフショア開発を活かしたコストパフォーマンスの高いシステム構築まで幅広く柔軟に対応しております。
システム開発やITに関するお悩み、ご相談がございましたら、いつでもお気軽に3inkまでお問い合わせください。
