OpenAI APIを使ったチャットボットの作成方法

この記事では、Pythonを使ってOpenAIのAPIを利用したシンプルなチャットボットを作成する方法について解説します。今回のコードは、ユーザー入力を受け取り、ChatGPTのAPIにリクエストを送り、回答を生成するチャットボットです。

OpenAIのバージョンはopenai 1.52.1をもとに実装しています。

1.必要なライブラリのインポート

import os
from dotenv import load_dotenv
import openai
from openai import OpenAI

os: Pythonの標準ライブラリで、環境変数を扱うために使用します。dotenv: .env ファイルに保存された環境変数を読み込むためのライブラリです。このファイルを使って、APIキーをコード内にハードコーディングせずに設定します。openai: OpenAIのAPIにアクセスするためのライブラリです。OpenAI: OpenAI APIを利用するためのクライアントを定義します。

2. .env ファイルからAPIキーの読み込み

# .envファイルの内容を読み込む
load_dotenv()
# 環境変数からAPIキーを取得
openai.api_key = os.getenv("OPENAI_API_KEY")

os.getenv("OPENAI_API_KEY"): 環境変数 OPENAI_API_KEY の値を取得します。このキーは .env ファイル内に保存されています。APIキーをコードに直接埋め込むのではなく、環境変数を使うことでセキュリティを向上させています。

OpenAI: openai ライブラリのクライアントを作成します。このクライアントは、APIへのリクエストやレスポンス処理に使います。ここでも、環境変数からAPIキーを取得し、クライアントに渡しています。

3.OpenAI APIに質問をリクエスト

# OpenAI APIに質問を送信
chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": user_input,  # ユーザーからのメッセージ
        }
    ],
    model="gpt-4o-mini",  # 使用するモデル名
)
# 応答を取得して表示
response = chat_completion.choices[0].message.content
print(f"ChatGPT: {response}")

model="gpt-4o-mini": 使用するモデルを指定しています。このコードでは "gpt-4o-mini" を使っていますが、他のモデルに変更することも可能です。

chat_completion.choices[0].message.content: OpenAI APIのレスポンスから、最初の応答メッセージを取得します。choices のリストの最初のメッセージを選択し、その内容(content)を表示します。

print(f"ChatGPT: {response}"): ChatGPTの応答をユーザーに表示します。

4.チャットボットのループ

def chat_bot():
    print("ChatGPTに質問してください。(終了するには 'exit' と入力してください。)")

    while True:
        # ユーザーからの入力を受け取る
        user_input = input("User: ")

        # 'exit' で終了
        if user_input.lower() == "exit":
            print("チャットを終了します。")
            break

chat_bot(): この関数がチャットボットのメインループを処理します。input(): ユーザーからの入力を受け取り、それを変数 user_input に格納します。user_input.lower(): ユーザーが入力した内容をすべて小文字に変換し、"exit" と一致するかどうかを確認します。これにより、ユーザーが大文字で EXIT と入力しても終了できるようにしています。

5.チャットボットの実行

# チャットボットを実行
if __name__ == "__main__":
    chat_bot()

まとめ

このコードでは、Pythonを使ってOpenAIのAPIにアクセスし、ユーザーからの質問に応答するシンプルなチャットボットを作成しています。.env ファイルを使用してAPIキーを安全に管理し、ループ構造を利用して継続的なやり取りができるようにしています。

コード全体

import os
from dotenv import load_dotenv
import openai
from openai import OpenAI

# .envファイルの内容を読み込む
load_dotenv()

# 環境変数からAPIキーを取得
openai.api_key = os.getenv("OPENAI_API_KEY")

# OpenAIクライアントの初期化
client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),  # 環境変数からAPIキーを取得
)

# チャットボットのメインループ
def chat_bot():
    print("ChatGPTに質問してください。(終了するには 'exit' と入力してください。)")

    while True:
        # ユーザーからの入力を受け取る
        user_input = input("User: ")

        # 'exit' で終了
        if user_input.lower() == "exit":
            print("チャットを終了します。")
            break

        # OpenAI APIに質問を送信
        chat_completion = client.chat.completions.create(
            messages=[
                {
                    "role": "user",
                    "content": user_input,  # ユーザーからのメッセージ
                }
            ],
            model="gpt-4o-mini",  # 使用するモデル名
        )

        # 応答を取得して表示
        response = chat_completion.choices[0].message.content
        print(f"ChatGPT: {response}")

# チャットボットを実行
if __name__ == "__main__":
    chat_bot()

本メディアの記事等の内容には細心の注意を払っておりますが、正確性を保証するものではありません。もし記事内に誤りや不正確な情報がございましたら、こちらのお問い合わせフォームよりご連絡ください。

当メディアは、読者の皆様からのご指摘を大切にし、内容の見直しや修正を行うことで、より有益な記事を提供していく所存です。皆様のご理解とご協力をお願いいたします。