[Python] プログラムからChatGPTを呼び出す方法

PythonプログラムからChatGPTを呼び出すには、OpenAIのAPIを利用します。

まず、OpenAIの公式サイトでAPIキーを取得します。

次に、Pythonでopenaiライブラリをインストールし、APIキーを設定します。

APIを呼び出す際には、openai.ChatCompletion.createメソッドを使用し、モデル名(例: gpt-3.5-turbo)やプロンプトを指定します。

レスポンスとして、ChatGPTからの応答が得られます。

APIの利用には料金が発生するため、使用量に注意が必要です。

この記事でわかること
  • OpenAI APIの基本的な仕組みと利用方法
  • Python環境でのAPIキーの設定と管理方法
  • ChatGPTを呼び出すための具体的な手順とサンプルコード
  • 応答の解析やエラーハンドリングの方法
  • ChatGPTを活用した応用例とその実装方法

目次から探す

OpenAI APIの概要

OpenAI APIとは

OpenAI APIは、OpenAIが提供する人工知能モデルを外部のアプリケーションから利用できるようにするためのインターフェースです。

このAPIを使用することで、ChatGPTなどの高度な自然言語処理モデルを簡単に呼び出し、さまざまなアプリケーションに組み込むことができます。

Pythonを使ってAPIを呼び出すことで、チャットボットや自動化ツール、データ解析ツールなどにAIの力を活用することが可能です。

APIキーの取得方法

OpenAI APIを利用するためには、まずAPIキーを取得する必要があります。

以下はAPIキーの取得手順です。

  1. OpenAIの公式ウェブサイトにアクセスし、アカウントを作成します。
  2. アカウントにログイン後、ダッシュボードに移動します。
  3. 「APIキー」セクションに進み、新しいAPIキーを生成します。
  4. 生成されたAPIキーを安全に保管します。
スクロールできます
手順説明
1OpenAIの公式サイトでアカウントを作成
2アカウントにログインし、ダッシュボードに移動
3「APIキー」セクションで新しいキーを生成
4生成されたAPIキーを安全に保管

利用料金と制限

OpenAI APIの利用には料金が発生します。

料金体系は使用するモデルやリクエストの数に応じて異なります。

以下に一般的な料金と制限についてまとめます。

  • 料金体系: 使用したトークン数に基づいて課金されます。

トークンは入力と出力の文字数に基づいて計算されます。

  • 無料枠: 新規ユーザーには一定の無料枠が提供されることがあります。
  • 制限: APIの利用にはリクエスト数やトークン数に基づく制限があります。

これらの制限はアカウントのプランによって異なります。

利用料金や制限については、OpenAIの公式ドキュメントを参照し、最新の情報を確認することが重要です。

Python環境の準備

必要なライブラリのインストール

OpenAI APIをPythonで利用するためには、いくつかのライブラリをインストールする必要があります。

主に必要となるのは、openaiライブラリです。

このライブラリを使用することで、APIへのリクエストを簡単に行うことができます。

以下は、openaiライブラリをインストールするためのコマンドです。

pip install openai

このコマンドを実行することで、openaiライブラリがインストールされ、PythonからOpenAI APIを利用する準備が整います。

APIキーの設定方法

APIキーを安全に管理し、Pythonプログラムから利用するためには、環境変数を使用する方法が一般的です。

以下にAPIキーの設定方法を示します。

  1. 環境変数の設定: APIキーを環境変数として設定します。

以下の例では、OPENAI_API_KEYという名前の環境変数にAPIキーを設定します。

  • Windowsの場合:
set OPENAI_API_KEY=your_api_key_here
  • macOS/Linuxの場合:
export OPENAI_API_KEY=your_api_key_here
  1. Pythonコードでの利用: 環境変数に設定したAPIキーをPythonコード内で利用します。

以下はその例です。

import os
import openai
# 環境変数からAPIキーを取得
api_key = os.getenv("OPENAI_API_KEY")
# OpenAI APIの初期化
openai.api_key = api_key
# ここでAPIを利用するコードを記述

この方法を用いることで、APIキーをコード内に直接記述することなく、安全に管理しながらAPIを利用することができます。

サンプルコードでは、コードをシンプルにするためにAPIキーを直接記述する形式で紹介しています。

ChatGPTの呼び出し方法

基本的なAPI呼び出し

ChatGPTをPythonから呼び出すためには、openaiライブラリを使用してAPIにリクエストを送信します。

以下は、基本的なAPI呼び出しの例です。

from openai import OpenAI

client = OpenAI(api_key="openai-api-key")

response = client.chat.completions.create(
  model="gpt-4o",
  messages=[
    {
      "role": "user",
      "content": [
        {
          "text": "580円の税込価格は?",
          "type": "text"
        }
      ]
    }
  ],
)

print(response.choices[0].message.content)
580円の商品の税込価格を求めるには、消費税率を考慮する必要があります。日本では2023年現在、消費税率は10%です。

税込価格は以下の式で求められます:
税込価格 = 本体価格 + (本体価格 × 消費税率)

具体的には、
税込価格 = 580円 + (580円 × 0.10) = 580円 + 58円 = 638円

したがって、580円の商品の税込価格は638円です。

このコードでは、chat.completions.createメソッドを使用して、ChatGPTモデルにリクエストを送信し、応答を取得しています。

モデルの選択と指定

OpenAI APIでは、さまざまなモデルが提供されており、用途に応じて適切なモデルを選択することが重要です。

モデルはengineパラメータで指定します。

以下は一般的なモデルの例です。

  • gpt4o: 高度な自然言語処理を必要とするタスクに適したモデル。
  • gpt4o-mini: より軽量で高速な応答が必要な場合に適したモデル。

モデルの選択は、タスクの複雑さや応答速度の要件に応じて行います。

プロンプトの設定

プロンプトは、ChatGPTに対してどのような応答を期待するかを指示するための入力テキストです。

プロンプトの設定は、API呼び出しの結果に大きく影響します。

以下にプロンプト設定のポイントを示します。

  • 明確な指示: 期待する応答を明確に指示することで、より正確な応答を得ることができます。
  • コンテキストの提供: 必要に応じて、応答に必要なコンテキストをプロンプトに含めます。
  • トーンとスタイル: 応答のトーンやスタイルを指定することも可能です。

プロンプトの設定は、APIの利用目的に応じて工夫することで、より効果的な応答を得ることができます。

応答の処理

レスポンスの解析

OpenAI APIからの応答は、JSON形式で返されます。

Pythonでは、この応答を解析して必要な情報を抽出することができます。

以下は、レスポンスの解析方法の例です。

from openai import OpenAI

client = OpenAI(api_key="openai-api-key")
# ChatGPTモデルを呼び出す
response = client.chat.completions.create(
  model="gpt-4o",
  messages=[
    {
      "role": "user",
      "content": [
        {
          "text": "Pythonでリストを逆順にする方法を教えてくだい。",
          "type": "text"
        }
      ]
    }
  ],
)

# レスポンスの解析
text_response = response.choices[0].message.content
print(text_response)

このコードでは、response.choices[0].message.contentを使用して、APIからの応答テキストを取得しています。

strip()メソッドを使って、余分な空白を取り除いています。

エラーハンドリング

API呼び出し時には、ネットワークの問題やAPIの制限によりエラーが発生することがあります。

これらのエラーを適切に処理することで、プログラムの安定性を向上させることができます。

以下は、エラーハンドリングの例です。

from openai import OpenAI
try:
    client = OpenAI(api_key="openai-api-key")
    # ChatGPTモデルを呼び出す
    response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {
        "role": "user",
        "content": [
            {
            "text": "Pythonの基本を教えて下さい。",
            "type": "text"
            }
        ]
        }
    ],
    )

    # レスポンスの解析
    text_response = response.choices[0].message.content
    print(text_response)
except Exception as e:
    print(f"API呼び出しエラー: {e}")

この例では、try-exceptブロックを使用して、API呼び出し中に発生する可能性のあるエラーをキャッチし、エラーメッセージを表示しています。

応答のフォーマット

APIからの応答をユーザーに表示する際には、フォーマットを整えることが重要です。

以下は、応答を整形して表示する例です。

from openai import OpenAI
client = OpenAI(api_key="openai-api-key")
# ChatGPTモデルを呼び出す
response = client.chat.completions.create(
model="gpt-4o",
messages=[
    {
    "role": "user",
    "content": [
        {
        "text": "1円玉の重さは?",
        "type": "text"
        }
    ]
    }
],
)

# レスポンスの解析
text_response = response.choices[0].message.content
formatted_response = f"ChatGPTの応答:\n{text_response}"
print(formatted_response)
ChatGPTの応答:
1円玉の重さは1グラムです。これは非常に軽く、アルミニウムで作られているため、軽量で且つ耐久性があります。

このコードでは、応答を整形して「ChatGPTの応答:」というラベルを付けて表示しています。

これにより、ユーザーにとって見やすい形式で情報を提供することができます。

応用例

チャットボットの作成

ChatGPTを利用してチャットボットを作成することは、最も一般的な応用例の一つです。

以下は、Pythonで簡単なチャットボットを作成する例です。

from openai import OpenAI
client = OpenAI(api_key="openai-api-key")  # OpenAIクライアントを初期化

messages = []  # メッセージを保存するリスト
def add_message(role, content):
    # メッセージをリストに追加する関数
    messages.append({
        "role": role,  # メッセージの役割(ユーザーまたはアシスタント)
        "content": [
            {
                "text": content,  # メッセージの内容
                "type": "text"  # メッセージのタイプ
            }
        ]
    })

def reset_messages():
    # メッセージリストをクリアする関数
    messages.clear()

def chat_with_gpt(message):
    # ユーザーからのメッセージを追加
    add_message("user", message)
    # OpenAIのAPIを使って応答を生成
    response = client.chat.completions.create(
        model="gpt-4o",  # 使用するモデルを指定
        messages=messages,  # メッセージの履歴を渡す
    )

    resuponse_text = response.choices[0].message.content  # 応答のテキストを取得
    # 応答をassistantとして追加
    add_message("assistant", resuponse_text)
    # 結果を返す
    return response.choices[0].message.content

# ユーザーとの対話
while True:
    user_input = input("あなた: ")  # ユーザーからの入力を受け取る
    if user_input.lower() in ["終了", "exit"]:  # 終了条件
        break
    bot_response = chat_with_gpt(user_input)  # GPTにメッセージを送信し応答を取得
    print(f"ChatGPT: {bot_response}")  # 応答を表示
あなた: 1円玉の重さは?
ChatGPT: 1円玉の重さは1グラムです。
あなた: 10枚集めるといくら?
ChatGPT: 10枚の1円玉を集めると、10円になります。

このコードは、ユーザーからの入力を受け取り、ChatGPTに送信して応答を取得するシンプルなチャットボットです。

「終了」または exit と入力することで、対話を終了します。

チャット履歴を記憶しているため、直前の会話の内容を含めてチャットをすることが可能です。

自然言語処理アプリケーションへの統合

ChatGPTは、自然言語処理(NLP)アプリケーションに統合することで、テキストの生成や解析を行うことができます。

以下は、テキスト要約機能を実装する例です。

from openai import OpenAI
client = OpenAI(api_key="openai-api-key")  # OpenAIクライアントを初期化

def summarize_text(text):
    # OpenAIのAPIを使って応答を生成
    response = client.chat.completions.create(
    
        model="gpt-4o-2024-08-06",
        messages=[
                {
                "role": "user",  # メッセージの役割(ユーザーまたはアシスタント)
                "content": [
                    {
                        "text": f"次のテキストを要約してください: {text}",  # メッセージの内容
                        "type": "text",  # メッセージのタイプ
                    }
                ]
            }
        ]
    )
    return response.choices[0].message.content

# テキストの要約
original_text = "Pythonは、コードの可読性を重視した高水準のプログラミング言語です。..."
summary = summarize_text(original_text)
print(f"要約: {summary}")

この例では、与えられたテキストを要約するためにChatGPTを使用しています。

要約されたテキストは、情報を簡潔に伝えるのに役立ちます。

自動化スクリプトでの利用

ChatGPTを自動化スクリプトに組み込むことで、日常業務の効率化を図ることができます。

以下は、メールの自動返信を行うスクリプトの例です。

from openai import OpenAI
client = OpenAI(api_key="openai-api-key")  # OpenAIクライアントを初期化

def generate_email_reply(email_content):
    # OpenAIのAPIを使って応答を生成
    response = client.chat.completions.create(
    
        model="gpt-4o",
        messages=[
                {
                "role": "user",  # メッセージの役割(ユーザーまたはアシスタント)
                "content": [
                    {
                        "text": f"次のメールに対する返信を書いてください: {email_content}",
                        "type": "text",  # メッセージのタイプ
                    }
                ]
            }
        ]
    )
    return response.choices[0].message.content

# メールの自動返信
incoming_email = "お世話になっております。次回の会議の日程について確認したいのですが..."
reply = generate_email_reply(incoming_email)
print(f"返信: {reply}")
返信: 件名:Re: 次回の会議の日程について

〇〇様

お世話になっております。△△会社の□□です。

次回の会議の日程についてご確認いただける件、ありがとうございます。

現在の予定では、次回の会議は以下の日程で計画されております:
日付:○月○日 (○曜日)
時間:○○:○○ - ○○:○○
場所:△△会議室 (もしくはリモート会議の場合は参加URL)

この日程がご都合よろしいかどうか、ご確認いただけますでしょうか。もしご都合が合わない場合、ご都合の良い日程をいくつか挙げていただければと思います。

その他、ご不明な点やご質問があれば、遠慮なくお知らせください。

何卒よろしくお願い申し上げます。

敬具

□□
△△会社

このスクリプトは、受信したメールの内容をもとに自動で返信を生成します。

これにより、メール対応の時間を大幅に削減することが可能です。

セキュリティとプライバシー

APIキーの管理

APIキーは、OpenAI APIを利用するための重要な認証情報です。

APIキーが漏洩すると、第三者に不正に利用される可能性があるため、適切に管理することが重要です。

以下にAPIキー管理のポイントを示します。

  • 環境変数の利用: APIキーはコード内に直接記述せず、環境変数を使用して管理します。

これにより、コードを共有する際にキーが漏洩するリスクを減らせます。

  • アクセス制限: APIキーを保存するファイルやシステムには、適切なアクセス制限を設定し、信頼できるユーザーのみがアクセスできるようにします。
  • 定期的な更新: セキュリティを強化するために、APIキーを定期的に更新し、古いキーは無効化します。

データの取り扱い

OpenAI APIを利用する際には、送信するデータのプライバシーにも注意を払う必要があります。

以下は、データ取り扱いの際の注意点です。

  • 個人情報の保護: APIに送信するデータに個人情報が含まれる場合は、必要に応じて匿名化や暗号化を行い、個人情報の漏洩を防ぎます。
  • データの最小化: 必要最低限のデータのみをAPIに送信し、不要な情報を含めないようにします。

これにより、データ漏洩のリスクを低減できます。

  • 利用規約の確認: OpenAIの利用規約やプライバシーポリシーを確認し、データの取り扱いに関する規定を遵守します。

これらのポイントを守ることで、APIの利用におけるセキュリティとプライバシーを確保し、安心してサービスを利用することができます。

よくある質問

APIキーが漏洩した場合はどうすればいい?

APIキーが漏洩した場合は、速やかに以下の対策を講じることが重要です。

  1. APIキーの無効化: OpenAIのダッシュボードにアクセスし、漏洩したAPIキーを直ちに無効化します。
  2. 新しいAPIキーの発行: 新しいAPIキーを生成し、システムに適用します。

新しいキーは、漏洩したキーが使用されていたすべての場所で更新する必要があります。

  1. アクセスログの確認: 不正利用が行われていないか、APIのアクセスログを確認します。

異常なアクセスがあった場合は、必要に応じてOpenAIに報告します。

  1. セキュリティ対策の見直し: APIキーの管理方法を見直し、セキュリティを強化します。

環境変数の利用やアクセス制限の強化を検討します。

レスポンスが遅い場合の対処法は?

APIのレスポンスが遅い場合、以下の方法で対処することができます。

  • モデルの選択: より軽量なモデルを選択することで、応答速度を改善できる場合があります。

例えば、gpt-4oよりもgpt4o-miniを使用することで、速度が向上することがあります。

  • プロンプトの最適化: プロンプトを短くし、必要な情報のみを含めることで、処理時間を短縮できます。
  • ネットワークの確認: 自身のネットワーク環境を確認し、遅延が発生していないかをチェックします。

必要に応じて、ネットワークの改善を行います。

  • OpenAIのステータス確認: OpenAIのサービスステータスページを確認し、システム全体の遅延が発生していないかを確認します。

無料で利用できる方法はある?

OpenAI APIを無料で利用する方法は以下の通りです。

  • 無料枠の利用: OpenAIは新規ユーザーに対して、一定の無料利用枠を提供することがあります。

アカウント作成時に提供される無料クレジットを活用して、APIを試用することができます。

  • プロモーションやキャンペーン: 時折、OpenAIがプロモーションやキャンペーンを行い、無料クレジットを提供することがあります。

公式サイトやニュースレターをチェックして、最新情報を確認します。

  • 開発者プログラム: 特定の開発者プログラムに参加することで、無料でAPIを利用できる場合があります。

詳細はOpenAIの公式サイトで確認してください。

これらの方法を活用することで、OpenAI APIを無料で試用し、サービスの適用可能性を評価することができます。

まとめ

この記事では、Pythonを用いてOpenAIのChatGPTを呼び出す方法について詳しく解説しました。

OpenAI APIの概要から始まり、Python環境の準備、APIの呼び出し方法、応答の処理、そして応用例に至るまで、実践的な情報を提供しました。

これを機に、ぜひ自身のプロジェクトにChatGPTを活用し、新たな可能性を探求してみてください。

  • URLをコピーしました!
目次から探す