ChatGPT APIとは?Pythonで使う理由
ChatGPT APIは、OpenAIが提供する会話型AIを、自社のプログラムから利用できる仕組みです。Webブラウザで使う通常版のChatGPTとは異なり、業務システムへの組み込みや自動化が可能になります。
この記事では、プログラミング初心者の方でも実践できるよう、PythonでChatGPT APIを使う方法を基礎から解説します。
ChatGPT APIでできること
ChatGPT APIを活用すると、以下のような業務自動化が実現できます。
- 文章生成・要約:議事録の自動要約、メール返信文の生成、商品説明文の作成
- データ分析支援:売上データの傾向分析、アンケート結果の要点整理
- 顧客対応:よくある質問への自動回答、問い合わせ内容の分類
- 社内ナレッジ活用:マニュアルからの情報検索、質問応答システム
これらの機能を自社の業務フローに合わせてカスタマイズできる点が、API版の大きな魅力です。
Pythonを選ぶメリット
ChatGPT APIは様々な言語から利用できますが、Pythonには以下のメリットがあります。
学習コストが低い 英語に近い自然な文法で、プログラミング経験が少ない方でも理解しやすい言語です。
公式サポートが充実 OpenAI公式のPythonライブラリにより、わずか数行のコードでAPIを利用できます。サンプルコードも豊富で、困ったときの参考情報が見つかりやすい環境です。
データ処理との相性 ExcelやCSVファイルの読み込み・加工・出力が得意なため、「データ読み込み→AI処理→結果保存」という業務自動化の流れを簡単に構築できます。
Web版との違いとコスト
API版とWeb版の主な違いは以下の通りです。
| 項目 | Web版 | API版 |
|---|---|---|
| 利用方法 | ブラウザで対話 | プログラムから呼び出し |
| 料金 | 月額固定 | 従量課金 |
| 自動化 | 不可 | 可能 |
| データ連携 | 手動 | 自動 |
料金の目安 GPT-3.5-turboの場合、500文字程度の文章を100回処理しても数十円〜100円程度です。月に数千件処理しても数千円に収まるケースが多く、人件費と比較すると経済的です。
環境構築の手順
OpenAIアカウントとAPIキーの取得
1. アカウント作成
- OpenAI公式サイトにアクセス
- 「Sign up」からメールアドレスまたはGoogleアカウントで登録
- SMS認証で本人確認を完了
2. APIキーの発行
- ログイン後、右上メニューから「API keys」を選択
- 「Create new secret key」をクリック
- キーに名前を付けて生成
- 表示されたAPIキーを安全な場所に保存(一度しか表示されません)
3. 支払い方法の設定
- 「Settings」→「Billing」からクレジットカード情報を登録
- 使用上限額を設定(予算管理のため推奨)
Pythonのインストール
インストール確認
コマンドプロンプト(Windows)またはターミナル(Mac)で以下を実行:
python --version
Python 3.8以上が表示されればOKです。
新規インストール
- Python公式サイトから最新版をダウンロード
- インストール時に「Add Python to PATH」に必ずチェック
- 「Install Now」をクリック
必要なライブラリのインストール
コマンドプロンプトまたはターミナルで以下を実行:
pip install openai python-dotenv
openai:ChatGPT APIを利用するための公式ライブラリpython-dotenv:APIキーを安全に管理するためのライブラリ
開発環境の選択
初心者におすすめの環境
Jupyter Notebook(学習・実験向け)
- コードを少しずつ実行して確認できる
- インストール:
pip install jupyter - 起動:
jupyter notebook
Visual Studio Code(本格的な開発向け)
- 無料で高機能なコードエディタ
- 公式サイトからダウンロード
- 拡張機能「Python」をインストールすると便利
まずはJupyter Notebookで基本を学び、慣れてきたらVSCodeに移行するのがスムーズです。
基本的な使い方
最小構成のコード
以下は、ChatGPT APIを使った最もシンプルな例です。
from openai import OpenAI
# APIキーを設定
client = OpenAI(api_key="あなたのAPIキーをここに入力")
# ChatGPTに質問を送信
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "こんにちは!"}
]
)
# 回答を表示
print(response.choices[0].message.content)
このコードをtest.pyとして保存し、python test.pyで実行すると、ChatGPTからの返答が表示されます。
APIキーの安全な管理
コードに直接APIキーを書くのはセキュリティリスクがあります。環境変数を使った安全な方法を推奨します。
1. .envファイルの作成
プロジェクトフォルダに.envファイルを作成し、以下を記述:
OPENAI_API_KEY=あなたのAPIキー
2. コードから読み込む
import os
from openai import OpenAI
from dotenv import load_dotenv
# .envファイルを読み込む
load_dotenv()
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "環境変数のテストです"}]
)
print(response.choices[0].message.content)
重要:.envファイルは.gitignoreに追加し、Gitリポジトリにコミットしないようにしてください。
モデルの選び方
| モデル | 特徴 | コスト | 用途 |
|---|---|---|---|
| gpt-3.5-turbo | 高速・低コスト | ★☆☆☆☆ | 簡単な質問応答、要約、分類 |
| gpt-4 | 高精度 | ★★★★☆ | 複雑な推論、専門的な内容 |
| gpt-4-turbo | GPT-4の高速版 | ★★★☆☆ | 精度とコストのバランス |
選択のポイント:まずはgpt-3.5-turboで試し、精度が不足する場合にGPT-4を検討しましょう。
主要なパラメータ
temperature(創造性の調整)
値:0〜2(デフォルト:1)
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "キャッチコピーを考えて"}],
temperature=0.8 # 創造的な回答
)
- 0に近い:一貫性のある回答(要約、データ分析向け)
- 2に近い:創造的な回答(アイデア出し、文章生成向け)
max_tokens(回答の長さ制限)
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Pythonについて説明して"}],
max_tokens=100 # 短めの回答に制限
)
コスト管理に有効です。設定しない場合、モデルの最大値まで生成される可能性があります。
実践例:質問応答プログラム
シンプルな質問応答
ユーザーからの質問を受け取り、ChatGPTが答えるプログラムです。
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
def ask_chatgpt(question):
"""ChatGPTに質問して回答を取得"""
try:
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": question}],
temperature=0.7
)
return response.choices[0].message.content
except Exception as e:
return f"エラーが発生しました: {str(e)}"
def main():
print("ChatGPT質問応答プログラム")
print("質問を入力してください('exit'で終了)\n")
while True:
question = input("あなた: ")
if question.lower() in ['exit', 'quit', '終了']:
print("プログラムを終了します。")
break
if not question.strip():
continue
print("ChatGPT: 考え中...")
answer = ask_chatgpt(question)
print(f"ChatGPT: {answer}\n")
if __name__ == "__main__":
main()
会話履歴を保持する仕組み
会話の文脈を保持することで、より自然な対話が可能になります。
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
def chat_with_history(messages):
"""会話履歴を考慮した応答"""
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
temperature=0.7
)
return response.choices[0].message.content
def main():
print("会話履歴付きChatGPT('exit'で終了)\n")
# 会話履歴を保存するリスト
messages = []
while True:
user_input = input("あなた: ")
if user_input.lower() in ['exit', 'quit', '終了']:
break
# ユーザーの発言を履歴に追加
messages.append({"role": "user", "content": user_input})
# ChatGPTの応答を取得
assistant_reply = chat_with_history(messages)
# ChatGPTの応答を履歴に追加
messages.append({"role": "assistant", "content": assistant_reply})
print(f"ChatGPT: {assistant_reply}\n")
if __name__ == "__main__":
main()
このプログラムでは、messagesリストに会話履歴を蓄積することで、前の会話を踏まえた応答が可能になります。
業務自動化の実践例
文章要約ツール
長文を自動で要約するツールです。
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
def summarize_text(text, max_length=200):
"""テキストを要約する"""
prompt = f"""以下の文章を{max_length}文字程度で要約してください。
重要なポイントを箇条書きで整理してください。
文章:
{text}
"""
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.3 # 一貫性重視
)
return response.choices[0].message.content
# 使用例
long_text = """
(ここに長文を入力)
"""
summary = summarize_text(long_text)
print("【要約結果】")
print(summary)
メール返信文の自動生成
問い合わせ内容に応じた返信文を生成します。
def generate_email_reply(inquiry, tone="丁寧"):
"""問い合わせに対する返信文を生成"""
prompt = f"""以下の問い合わせに対して、{tone}な返信メールを作成してください。
問い合わせ内容:
{inquiry}
返信メールの形式:
- 冒頭の挨拶
- 問い合わせへの回答
- 締めの挨拶
"""
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.7
)
return response.choices[0].message.content
# 使用例
inquiry = "製品Aの在庫状況を教えてください"
reply = generate_email_reply(inquiry)
print(reply)
複数の質問を一括処理
複数の質問を効率的に処理する方法です。
def batch_process(questions):
"""複数の質問を一括処理"""
results = []
for i, question in enumerate(questions, 1):
print(f"処理中: {i}/{len(questions)}")
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": question}],
temperature=0.7
)
results.append({
"question": question,
"answer": response.choices[0].message.content
})
return results
# 使用例
questions = [
"Pythonの特徴を3つ教えて",
"APIとは何ですか",
"業務効率化のアイデアを1つ提案して"
]
results = batch_process(questions)
for result in results:
print(f"\n質問: {result['question']}")
print(f"回答: {result['answer']}")
よくあるエラーと解決方法
APIキー関連のエラー
エラー例:AuthenticationError: Incorrect API key provided
原因と解決策:
- APIキーが間違っている→OpenAIダッシュボードで再確認
- 環境変数が読み込めていない→
.envファイルの場所を確認 - APIキーの有効期限切れ→新しいキーを発行
ライブラリのインポートエラー
エラー例:ModuleNotFoundError: No module named 'openai'
解決策:
pip install openai
インストール後も解決しない場合は、Pythonのバージョンを確認してください。
レート制限エラー
エラー例:RateLimitError: Rate limit exceeded
原因:1分間のリクエスト数が上限を超えた
解決策:
import time
# リクエスト間に待機時間を入れる
for question in questions:
answer = ask_chatgpt(question)
time.sleep(1) # 1秒待機
日本語の文字化け
原因:ファイルのエンコーディング設定
解決策:
- ファイル保存時にUTF-8を指定
- コード冒頭に以下を追加:
# -*- coding: utf-8 -*-
さらに活用するためのヒント
コスト管理のポイント
1. モデルの使い分け
- 簡単なタスク:gpt-3.5-turbo
- 複雑なタスク:gpt-4
2. max_tokensの設定 不要に長い回答を防ぐため、適切な上限を設定しましょう。
3. 使用量のモニタリング OpenAIダッシュボードで定期的に使用量を確認し、予算内に収まっているか確認してください。
他ツールとの連携
Excelファイルとの連携
import pandas as pd
# Excelファイルを読み込み
df = pd.read_excel("data.xlsx")
# 各行を処理
for index, row in df.iterrows():
result = ask_chatgpt(row['質問'])
df.at[index, '回答'] = result
# 結果を保存
df.to_excel("result.xlsx", index=False)
Slackとの連携 Slack APIと組み合わせることで、チャットボットを構築できます。
自社業務へのカスタマイズ
ChatGPT APIの強みは、自社の業務フローに合わせたカスタマイズが可能な点です。
カスタマイズの手順:
- 自動化したい業務を1つ選ぶ
- 小さく始めて効果を確認
- 徐々に機能を拡張
- 社内で共有して横展開
「完璧なシステム」を目指すのではなく、小さく始めて改善を重ねるアプローチが成功の鍵です。
まとめ
この記事では、PythonでChatGPT APIを使う方法を基礎から解説しました。
学んだポイント:
- ChatGPT APIの基本的な使い方
- 環境構築とAPIキーの安全な管理
- 質問応答プログラムの実装
- 業務自動化への応用例
ChatGPT APIは、中小企業の業務効率化に大きな可能性を秘めています。まずは小さなタスクから自動化を始め、徐々に適用範囲を広げていきましょう。
次のステップ:
- この記事のサンプルコードを実際に動かしてみる
- 自社の業務で自動化できそうなタスクを1つ選ぶ
- 簡単なプログラムを作って効果を確認する
技術的な質問や、自社業務への適用についてお困りの際は、Harmonic Societyまでお気軽にご相談ください。AI活用の導入から定着まで、伴走支援いたします。