MENU

PythonでChatGPT APIを試してみた|初心者が使い方を学ぶ記録

今回は、Pythonを使ってChatGPT APIにリクエストを送り、AIと会話するまでの手順を実際に試しながらまとめました。

この記事で分かること
  • ChatGPT APIとは何か?
  • APIキーの取得方法
  • PythonでChatGPT APIを呼び出す方法
  • ChatGPT APIの実際の活用例

「自分も試してみたい!」という方の参考になれば嬉しいです!

目次

ChatGPT APIって何?

まず、ChatGPT APIについてざっくり理解しておこうと思います。

ChatGPT APIとは?

ChatGPT APIは、OpenAIが提供するAIとの会話ができるプログラム用のサービスです。

普段、ChatGPTをブラウザ上で使っている人も多いと思いますが、APIを使うと、PythonからChatGPTに直接リクエストを送れるようになります。

そのため、ブラウザ版に比べて以下のような利点があります。

  • 自動化が可能:繰り返し作業や大量のデータ処理に活用できる
  • カスタマイズ性が高い:自分のアプリやサービスに組み込めまる

APIの基本的な概念を図化すると以下のようになります。

  1. クライアント(Pythonアプリ)がAPIにリクエストを送信
  2. APIがリクエストをサーバー(ChatGPT)に転送
  3. サーバーがリクエストを処理
  4. APIを通じてレスポンスがクライアントに返される

APIを使うと何ができる?

APIを活用することで、具体的には以下のようなことが可能となります。

  • チャットボットの作成:ユーザーの質問に自動で回答
  • 文章の自動生成:記事の下書きや要約を作成
  • データ分析の補助:データの解釈や洞察を得るためのAIアシスタント
  • コードの補助:プログラムの修正や解説

では、次の章から実際にChat GPT APIを使うための準備を進めて行きましょう!

ChatGPT APIを使う準備

① OpenAIのアカウントを作成する

ChatGPT APIを使うには、OpenAIのアカウント登録が必須です。

  1. OpenAIの公式サイトにアクセス
  2. 右上の「Log in」にカーソルを合わせ、「API Platform」をクリック
  3. メールアドレスでの登録か、Googleアカウントでのログインを選択
  4. 必要情報を入力して登録完了

OpenAIの公式サイトにアクセスすると、以下のような画面になります。
このページから、「API Platform」に移動します。

「API Platform」に移動すると、以下のような画面になるので、サインアップをクリックして登録するか、Googleなどのアカウントを使ってログインします。
私は、Googleのアカウントを使うほうが情報入力が楽なので、Googleアカウントでログインしました。

② APIキーを取得する【初回設定】

APIを使うには、専用の「APIキー」が必要です。
これは、プログラムがChatGPTとやり取りするための「認証キー」みたいなものです。取得手順は以下のとおりです。
ここで、初回のみ組織名の入力やプロジェクトの作成があり、少し迷ったので手順を細かく説明します。

  1. OpenAIのプラットフォームページにログイン
  2. 右上の「Start building」から設定を開始
  3. 組織名と自分の技術レベルを入力
  4. メンバーを追加する場合は入力(空欄で良い)
  5. APIキーの作成(キーの名前とプロジェクト名を設定)
  6. 表示されたAPIキーを必ずコピーして安全な場所に保存(重要:このキーは一度しか表示されませ
  7. 支払い情報を登録し、クレジットをチャージ

以前は無料のクレジットが最初に付与されたようですが、現在は確認できませんでした。
私は、推奨されていた5ドルをチャージしました。

二回目以降のAPI Keyの作り方は以下のとおりです。(API Keyは複数作成可能です。)

  1. OpenAIのプラットフォームページにログイン
  2. 右上の歯車マーク(Setting)をクリックし、左側メニューから「API keys」を選択
  3. 「Create new secret key」ボタンをクリック
  4. キーの名前(用途)を入力し、「Create secret key」をクリック
  5. 表示されたAPIキーを必ずコピーして安全な場所に保存(重要:このキーは一度しか表示されません

また、APIの使用には以下の点に注意しましょう。

  • APIキーはパスワードのように大切に管理する
  • 公開リポジトリにAPIキーをアップロードしないよう注意
  • OpenAIのAPIは従量課金制で、使用量に応じて料金が発生する点に注意

③ Python環境を準備する

最後に、PythonからOpenAIのAPIを利用するための準備をします。

  1. Pythonがインストールされていることを確認(バージョン3.7以上推奨)
  2. コマンドラインを開き、OpenAIライブラリをインストール
# condaの場合
conda install conda-forge::openai
# pipの場合
pip install openai
これで準備完了です!次はいよいよPythonからChatGPTを呼び出してみましょう。

PythonでChatGPT APIを試してみる

最初の目標は、「PythonでChatGPTに質問し、その回答をもらう」です!
では、実際にコードを書いて実行してみます。

①シンプルなAPIリクエスト

import openai

# APIキーを設定(実際のキーに置き換えてください)
api_key = "YOUR_API_KEY_HERE"

# OpenAIクライアントのセットアップ
client = openai.OpenAI(api_key=api_key)

# ChatGPT APIを呼び出す関数
def chat_with_gpt(prompt):
    response = client.chat.completions.create(
        model="gpt-4",  # 使用するモデル
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message.content

# 実際に試す
user_input = "Pythonとは何ですか?"
output = chat_with_gpt(user_input)
print("ChatGPTの回答:", output)

このコードの中で、特に私が気になって調べた点について解説します。

Point①

messages=[{“role”: “user”, “content”: prompt}]

  • メッセージを担う部分で、{"role": "...", "content": "..."}という形式の辞書で表される。
  • "role"は応答の役割で、"content"はそのままコンテンツを表す。
  • {"role": "user", "content": prompt}: これは、ユーザーからの質問や発言を表すメッセージとなる。
  • 後で出てきますが、"role"には"user"の他に、システムからの指示を示す"system"もあります。
Point②

response.choices[0].message.content

  • response: APIからの応答全体
  • response.choices: 応答の選択肢のリスト
    (ChatGPT APIは複数の応答候補を生成することがありますが、デフォルトでは1つの最適な応答が選択されるため、リストの要素数は通常1)
  • response.choices[0]: 選択された最適な応答
  • response.choices[0].message: 応答のメッセージ部分
    (このメッセージオブジェクトには、応答の役割(role)やコンテンツ(content)などの情報が含まれている)
  • response.choices[0].message.content: 応答のテキストコンテンツ(つまり、実際のテキスト内容)

また、その他の部分についても簡単に下にまとめておきます。

  • import openai: OpenAIのPythonライブラリを読み込みます
  • APIキーの設定: 先ほど取得したAPIキーを設定します
  • クライアントのセットアップ: APIを呼び出すためのクライアントを初期化します
  • chat_with_gpt関数: ChatGPTに質問を送り、回答を取得する関数を定義します
  • 実行部分: 「Pythonとは何ですか?」という質問を送り、結果を表示します

②実行結果

このコードを実行すると、ChatGPTが「Pythonとは何か?」の説明を返してくれました!

実際の出力例:

ChatGPTの回答: Pythonは、1991年にオランダのプログラマー、グイド・ヴァンロッサムによって開発された高水準の汎用プログラミン グ言語の一つです。構文が直感的で読みやすいことが特徴で、初心者にも学びやすい言語とされています。

Pythonはデータ分析やウェブ開発、機械学習など、幅広い用途に使用されています。また、多くのサードパーティ製ライブラリ(便利なツールや機能を備えたパッケージ)が存在するため、非常に柔軟にソフトウェアを開発することができます。

Pythonはそのコードが他のプログラミング言語と比較して短く、読みやすいため、開発者がより効率的にコードを書くことが出来ます。これらの特性により、Pythonは科学技術計算や機械学習の分野で非常に人気があります。

無事にAPIを活用して、PythonでChatGPTを呼び出すことができました!
ブラウザでChatGPTを使うのと同じ感覚で、PythonからAIを操作できたので、色々活用できそうですね。

会話の履歴を管理する

ChatGPTをより自然に利用するには、会話の文脈(コンテキスト)を維持することが重要です。そこで、次は会話の履歴を保持出来るように改良してみます。

import openai

# APIキーを設定
api_key = "YOUR_API_KEY_HERE"
client = openai.OpenAI(api_key=api_key)

# 会話履歴を保持しながらChatGPTと対話する関数
def chat_with_history(messages):
    response = client.chat.completions.create(
        model="gpt-4",
        messages=messages
    )
    return response.choices[0].message.content

# 会話履歴の初期化
conversation = [
    {"role": "system", "content": "あなたは親切で役立つAIアシスタントです。"}
]

# 会話の例
user_message = "Pythonでファイルを読み込む方法を教えてください。"
conversation.append({"role": "user", "content": user_message})

# AIの回答を取得
ai_response = chat_with_history(conversation)
print("AI:", ai_response)

# AIの回答を履歴に追加
conversation.append({"role": "assistant", "content": ai_response})

# 続けて質問
follow_up = "JSONファイルの場合はどうすればいいですか?"
conversation.append({"role": "user", "content": follow_up})

# 2回目の回答(前の会話を覚えています)
ai_response2 = chat_with_history(conversation)
print("AI:", ai_response2)

このコードのポイントとなるのは、messageに引き渡す情報です。
先程の解説ポイントでroleについて少し触れましたが、ここで詳しく解説します。

messages"role"について

ChatGPT APIにおけるroleの種類は、主に以下の3つです。

"system":
これは、システムからの指示やコンテキストを設定するために使用されます。
例えば、「あなたは親切なアシスタントです」といった役割設定や、「回答は日本語でお願いします」といった応答形式の指定を行います。
システムメッセージは、モデルの挙動を制御するために重要です。
"user":
これは、ユーザーからの入力や質問を表します。
ユーザーがChatGPTに尋ねたい内容をこのroleで指定します。
例:「今日の天気は?」
"assistant":
これは、ChatGPT(アシスタント)からの応答を表します。
APIからの応答として返されるメッセージのroleは、常にassistantとなります。
また、会話の履歴を保持して、APIに送信する場合等にも利用されます。

つまり、今回は"role""assistant"を使うことで、会話の履歴を保持するという部分がポイントです!

  • conversationリストに会話の履歴を保存します(messagesに渡す)
  • systemメッセージでAIの振る舞いを設定できます
  • 各質問と回答を履歴に追加していくことで、文脈を維持できます

上記コードを実行すると、以下のように回答されました。
回答1(”Pythonでファイルを読み込む方法を教えてください”に対する回答):

AI: Pythonでファイルを読み込む基本的な方法は組み込み関数の`open()`を用いることです。以下に、テキストファイルを読み込むサンプルコードを示します。

```python
# ファイルを読み込む
file = open('example.txt', 'r')

# ファイルからデータを読み込む
contents = file.read()

# ファイルをクローズする
file.close()

# 読み込んだ内容を出力
print(contents)
```

このコードの説明:
1. `open()`関数で 'example.txt'(あなたの読み込みたいテキストファイル名)を読み込みモード('r')で開きます。
2. `read()`メソッドでファイルの全内容を読みとります。
3. `close()`メソッドでファイルを閉じます(これは重要で、ファイルを適切に閉じないとリソースのリークや他の問題を引き起こす可能性があります)。

ただし、この方法ではプログラム中で何かしらの例外が発生した場合、ファイルが閉じられずにリソースのリークを引き起こす可能性があります。それを避けるために、`with`ステートメントを使うことが推奨されます。以下にその方法を示します。

```python
# ファイルを安全に読み込む
with open('example.txt', 'r') as file:
    contents = file.read()

# 読み込んだ内容を出力
print(contents)
```

このコードでは、`with`ステートメントがファイルを適切に閉じることを保証してくれます。そのため、ファイルの閉じ忘れによる問題を避けることができます。

回答2(回答1の履歴を覚えた状態で”JSONファイルの場合はどうすればいいですか?”に対する回答):

AI: Pythonでは、JSONファイルを読み込むには `json` モジュールを使用します。以下に、JSONファイルを読み込むサンプルコードを示します。

```python
import json

# JSONファイルを読み込む
with open('example.json', 'r') as file:
    data = json.load(file)

# 読み込んだデータを出力
print(data)
```

このコードでは、以下のことを行っています:

1. `import json` で json モジュールをインポートします。
2. `open('example.json', 'r')` で 'example.json'(あなたの読み込みたいJSONファイル名)を読み込みモード('r')で開きます。   
3. `json.load(file)` で JSON ファイルを読み込み、Pythonの辞書型データに変換します。
4. `print(data)` で読み込んだデータを出力します。

この方法で JSON ファイルを読み込むことができます。

ChatGPT APIを活用するアイデア

APIが動いたところで、さまざまな活用方法を試してみたいと思います。ここでは実用的なプロンプトの工夫をいくつか試してみたので紹介します。(基本的には、ブラウザ上で使う場合と同じ考えで工夫します)

①文章の要約

出力する際に文章量を指定することで、入力した文章を要約させることができます。

text = """
Pythonは1991年に開発された高水準プログラミング言語です。シンプルで読みやすい文法が特徴で、
初心者からプロまで幅広く使われています。Webアプリケーション開発、データ分析、AI開発、
自動化スクリプトなど様々な用途に活用されています。豊富なライブラリやフレームワークが
存在し、開発効率の向上に貢献しています。
"""

prompt = f"次の文章を3行程度に要約してください:\n{text}"
summary = chat_with_gpt(prompt)
print("要約結果:", summary)

②特定の口調で説明

説明する相手を明確にすることで、求めている回答に近づける事ができます。

prompt = "Pythonのリスト操作について、小学生にもわかるように説明してください。"
explanation = chat_with_gpt(prompt)
print("説明:", explanation)

③コードの生成と説明

実行したい内容を記述することで、コードを生成することもできます。

prompt = "Pythonで、CSVファイルを読み込み、特定の列の平均値を計算するコードを書いてください。"
code = chat_with_gpt(prompt)
print("生成されたコード:", code)

④データ分析の補助

データを渡して指示することで、データ分析の補助を行うこともできます。

data_description = """
年齢: 25, 30, 45, 60, 35, 42
年収: 300, 450, 600, 700, 500, 550
職種: エンジニア, マーケター, 医師, 経営者, デザイナー, 教師
"""

prompt = f"以下のデータから何か興味深い傾向や洞察を教えてください:\n{data_description}"
insights = chat_with_gpt(prompt)
print("分析結果:", insights)

まとめ

今回は、Pythonで初めてChatGPT APIを試してみた学習記録を発信しました。

学んだこと
  • ChatGPT API を使うと、AIと対話できる
  • APIキーを取得し、Pythonでリクエスト を送ると、簡単に動かせる
  • プロンプトを工夫すると、いろいろな応用ができそう

まだまだ基本的な部分ですが、APIを通してChatGPTを操作する感覚がつかめました。
次は、もっと応用的な使い方を試してみたいと思います。

次に試してみたいこと
  • ChatGPT APIの出力をもっとカスタマイズ(温度パラメータ調整など)
  • 簡単なチャットボットの作成
  • 業務効率化ツールの作成(自動メール返信など)
  • ChatGPTと他のAI(Claude, Gemini)を比較

また学習したことを発信していこうと思うので、お待ち下さい。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

非IT職のデスクワーカーです。
簡単な業務効率化やデータ分析にPythonをよく活用しています。
このブログを通してAI技術を身に着け、より業務効率化や新しいものを作りたいと考えています。

目次