AI

【初心者向け】PythonでChatGPT APIを使う方法|実践コード付きで解説

kento_morota 17分で読めます

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. アカウント作成

  1. OpenAI公式サイトにアクセス
  2. 「Sign up」からメールアドレスまたはGoogleアカウントで登録
  3. SMS認証で本人確認を完了

2. APIキーの発行

  1. ログイン後、右上メニューから「API keys」を選択
  2. 「Create new secret key」をクリック
  3. キーに名前を付けて生成
  4. 表示されたAPIキーを安全な場所に保存(一度しか表示されません)

3. 支払い方法の設定

  1. 「Settings」→「Billing」からクレジットカード情報を登録
  2. 使用上限額を設定(予算管理のため推奨)

Pythonのインストール

インストール確認

コマンドプロンプト(Windows)またはターミナル(Mac)で以下を実行:

python --version

Python 3.8以上が表示されればOKです。

新規インストール

  1. Python公式サイトから最新版をダウンロード
  2. インストール時に「Add Python to PATH」に必ずチェック
  3. 「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-turboGPT-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. 自動化したい業務を1つ選ぶ
  2. 小さく始めて効果を確認
  3. 徐々に機能を拡張
  4. 社内で共有して横展開

「完璧なシステム」を目指すのではなく、小さく始めて改善を重ねるアプローチが成功の鍵です。

まとめ

この記事では、PythonでChatGPT APIを使う方法を基礎から解説しました。

学んだポイント

  • ChatGPT APIの基本的な使い方
  • 環境構築とAPIキーの安全な管理
  • 質問応答プログラムの実装
  • 業務自動化への応用例

ChatGPT APIは、中小企業の業務効率化に大きな可能性を秘めています。まずは小さなタスクから自動化を始め、徐々に適用範囲を広げていきましょう。

次のステップ

  1. この記事のサンプルコードを実際に動かしてみる
  2. 自社の業務で自動化できそうなタスクを1つ選ぶ
  3. 簡単なプログラムを作って効果を確認する

技術的な質問や、自社業務への適用についてお困りの際は、Harmonic Societyまでお気軽にご相談ください。AI活用の導入から定着まで、伴走支援いたします。

#ChatGPT#Python#API#LLM
共有:

ちょっとした業務の悩みも、気軽にご相談ください。

まずは話だけ聞いてもらう