AI関連技術

【超初心者向け】ChatGPT APIを利用するPythonスクリプトの最も簡単な作り方

【超初心者向け】ChatGPT APIを利用するPythonスクリプトの最も簡単な作り方

ChatGPTに質問するだけなら、ウェブブラウザでOpenAIのサイトにアクセスすれば良いです。

しかし、もし次のようなことを考えているのなら、APIを利用してPythonのスクリプトを作る必要があります。

  • 自動応答ボット
  • 記事を自動生成し、ワードプレスにアップロードして公開
  • 情報発信の内容を生成し、canvaにインポートしてインスタ用の投稿画像の作成

このように、他のアプリやサービスと連携する場合、ChatGPT単体ではできないことがあります。

この記事では、API keyの取得方法と注意点の解説、実際にPythonからChatGPTを使うためのスクリプトの書き方を「最も簡単なサンプル」で解説します。

記事内のサンプルスクリプトにあなたのAPI keyを入れるだけで、ChatGPTのAPIを利用することができるようになります。

非常に長い記事ですが、超初心者向けに詳しく解説しています。

PythonからChatGPTを利用する基本を知り、やりたいことができる最初の一歩になることを期待しています!

ではいってみましょう!!

「ChatGPTのAPIを利用するPyhonスクリプト」を作るための4ステップ

はじめに、ゴールまでの手順を確認しましょう。

意外とすぐにできますので、安心してください。

  1. ChatGPTのAPIキーを取得
  2. Pythonのライブラリをインストール
  3. Pythonのスクリプトを作成
  4. 実行

全体像を把握したところで、一つずつ見ていきましょう。

ChatGPTのAPIキーを取得する

ChatGPTのAPIを利用するためには、アカウントを作成する必要があります。

OpenAIの公式サイトにアクセスします。

https://openai.com/

ただ、この記事をご覧になっているということは、おそらくアカウントは作成済みだと思いますので、アカウントの作成手順は省略します。

なお、ChatGPTのAPIは基本的に有料です

ただし、新規でアカウントを作成すると5ドルの無料クレジットが付与されますが、無料クレジットには有効期限があるので注意してください。

*2023年9月13日現在

ご自身の利用状況によって異なることをご理解ください。
以降の操作は「新規アカウントで無料クレジットがある状態」で進めますが、以前から利用しているアカウントではクレジットの登録と最低5ドル以上の課金が必要です。

続いて、PythonからChatGPTを利用するために必要なAPIを取得する手順を解説します。

この解説は、「OpenAIのAPIリファレンス」を参考にした2023年9月13日現在の情報です。

https://platform.openai.com/docs/api-reference/introduction

openai.comのapi-referenceのintroduction

①OpenAIの公式サイトにアクセスし、ログイン

    ログイン後

    ②ダッシュボードに移動し、「View API Keys」をクリック

    右上のアカウント名>View API Keys

    ③APIキーの生成をクリックして、新しいAPIキーを取得

    + Create new secret key をクリック

    ④keyに名前を付ける

    入力後、Create secret key をクリック

    ⑤APIキーを生成した後、キーをコピーして控える

    Doneをクリックすると前の画面に戻ります

    *このAPIキーは次の作業で利用しますので、安全な場所に保存してください。

    【補足】クレジットカードの登録が必要な場合

    上の手順は、アカウントを作成直後の場合です。

    そのため、無料クレジットが5ドル付与された状態で利用できます。

    しかし、無料クレジットがない場合は「クレジットカードの登録」と「5ドル分のクレジットの購入(決済)」が必要となります。

    その点を考慮して参照してください。

    ChatGPTのAPIを利用するための準備

    PythonでChatGPTのAPIを利用するためには、openaiというライブラリをインストールする必要があります。

    以下のコマンドを実行して、ライブラリをインストールしてください。

    pip install openai

    インストールが完了すると、関連するライブラリ(モジュール)類も一緒にインストールされます。

    PyCharmの設定>インタプリターの画面

    *pip/setuptools/wheel以外は全て関連(依存)ライブラリです。

    以上で、準備は整いました。

    ChatGPTのAPIを利用するためのスクリプト

    以下は、ChatGPTのAPIを利用して、質問に答えるシンプルなPythonスクリプトのサンプルです。

    openai.api_key には、先ほど取得したAPIキーを入力してください。

    APIキーは「”」で囲むことを忘れずに!

    import openai
    
    # ここにあなたのAPIキーを直接入力してください
    openai.api_key = "sk-************************************"
    
    def to_chatgpt(prompt, debug=False):
        response = openai.ChatCompletion.create(model='gpt-3.5-turbo', messages=[{'role': 'user', 'content': prompt}])
        if debug:
            print(response)
        content = response.choices[0]['message']['content']
        return content
    
    # 質問を入れる
    question = "朝早く起きる方法は?"
    answer = to_chatgpt(question, debug=False)
    print(answer)

    ChatGPTに対する質問(プロンプト)は question 変数に代入しています。

    ここで紹介している「APIをスクリプトに直接入れる方法」は、セキュリティ上推奨されません。APIキーは他の人の目に触れないようにしてください。実際の運用では、APIキーを環境変数にして呼び出すというやり方がありますが、この記事では省略しています。

    このスクリプトを実行した結果は以下の通りです。

    朝早く起きるための方法は以下の通りです:
    
    1. 睡眠サイクルを整える:毎晩同じ時間に寝ることで、体内時計を整えましょう。必要な睡眠時間を確保し、規則的な生活リズムを作ることが大切です。
    
    2. アラームを使う:寝る前にアラームをセットし、早起きする時間を設定しましょう。また、アラームをベッドから遠い場所に配置すると、強制的に起きることができます。
    
    3. 明るい環境を作る:カーテンを開けて朝日を浴びることで、目覚めがスムーズになります。また、目覚まし時計やスマートフォンのアラーム機能を利用して、明るくて心地よい音楽を設定することも効果的です。
    
    4. 少しずつ時間を早める:毎日15分ずつ睡眠時間を早めることで、睡眠のリズムを調節することができます。徐々に早起きの習慣を身に付けましょう。
    
    5. 目覚ましアプリを利用する:いくつかの目覚ましアプリは、特殊な音や振動を使って効果的に目覚めることができます。自分に合ったアプリを選び、試してみましょう。
    
    6. 朝の楽しみを作る:朝食の時間や読書の時間など、起きてから楽しめることを計画しましょう。楽しいことを楽しみにしていると、早起きするモチベーションが高まります。
    
    7. ストレッチや運動をする:起きた後に軽いストレッチや運動をすることで、体を目覚めさせることができます。血液循環が良くなり、一日のエネルギーを高める効果もあります。
    
    これらの方法を組み合わせて、朝早く起きる習慣を身につけましょう。ただし、個人の体質や生活状況に合わせて調整することが大切です。

    回答を得ることができました。

    このスクリプトをベースに、例えば以下のようなアプリを作ることもできます。

    • 自動応答ボット
    • 記事を自動生成し、ワードプレスにアップロードして公開
    • 情報発信の内容を生成し、canvaにインポートしてインスタ用の投稿画像の作成

    ChatGPTだけではオンラインのサービスを利用できないため、スクリプトからAPIを呼び出すことが必要となります。

    最近はサードパーティーのプラグインも充実してきたので、様々な可能性がありますね。

    APIを利用することで、無限の可能性があります。

    スクリプトの処理内容を解説

    上のスクリプトをそのまま実行すれば、APIを利用してChatGPTに質問し回答を得ることができます。

    あなたがスクリプトの意味を理解したいのであれば、以下の解説をご覧ください。

    to_chatgpt関数のresponse変数への代入部分

    ここでは、OpenAIのAPIを呼び出して、gpt-3.5-turboモデルを使用してユーザーの入力(prompt)に対する応答を取得しています。

    response = openai.ChatCompletion.create(model='gpt-3.5-turbo', messages=[{'role': 'user', 'content': prompt}])

    具体的には以下のような処理を行っています。

    1. openai.ChatCompletion.create
      OpenAIのPythonライブラリを使って、ChatCompletion APIを呼び出すメソッドです。
      このAPIは、ユーザーとモデルとの対話形式での質問応答をサポートするためのものです。
    2. model='gpt-3.5-turbo'
      使用するモデルを指定しています。gpt-3.5-turboは、OpenAIが提供するGPT-3のモデルの一つで、高速かつコスト効率的に高品質な応答を生成することができるモデルです。
    3. messages=[{'role': 'user', 'content': prompt}]
      ユーザーとモデルとの対話をシミュレートするためのメッセージのリストを指定しています。
      • role
        このメッセージの送信者の役割を示します。ここでは'user'として、ユーザーがメッセージを送信したことを示しています。
      • content
        メッセージの内容を指定します。この場合、関数の引数として渡されたpromptがそのまま使用されています。

    このメソッドを呼び出すと、APIからの応答がresponse変数に格納されます。

    responseには、モデルの応答やその他のメタデータが含まれています。

    この対話形式のAPIの利点は、ユーザーの前のメッセージを参照して、モデルが続けて応答することができる点です。

    したがって、複数のメッセージをリストとして指定することで、モデルとの継続的な対話をシミュレートすることが可能です。

    to_chatgpt関数のcontent変数への代入部分

    ここでは、OpenAIのAPIからの応答(response)から、モデルが生成したメッセージの内容を取り出しています。

    content = response.choices[0]['message']['content']

    具体的には、

    1. response.choices
      APIの応答には、choicesというキーが含まれています。これは、モデルが生成した一つ以上のメッセージのリストを表します。gpt-3.5-turboを使用する際のデフォルト設定では、このリストには1つのメッセージだけが含まれます。
    2. [0]
      choicesリストの最初の要素(インデックス0の要素)を取得しています。この要素は、モデルが生成したメッセージを表す辞書です。
    3. ['message']
      メッセージの辞書から、messageというキーの値を取得しています。このmessageは、モデルのロール('role')とメッセージの内容('content')を含むさらなる辞書です。
    4. ['content']
      最後に、message辞書から、'content'というキーの値を取得しています。これが、モデルが生成したメッセージの実際のテキスト内容です。

    結果として、content変数には、モデルが生成したメッセージのテキスト内容が格納されることになります。

    ChatGPTでAPIを利用する際の注意点

    無料クレジットがない場合、クレジットカードを登録して有料のクレジットを購入する必要があります。

    しかし、いつの間にかたくさん利用して高額な請求が来てしまったら大変ですね。

    どれくらい使ったら、いくらかかるのか?を把握しておきましょう。

    また、あなたが破産しないように利用額を制限しておきましょう。

    これは、とても大切なことです。

    その他、支出に関する注意事項を含めて注意点を列挙しておきます。

    • 使用料:ChatGPTのAPIは、基本的に有料です。料金はOpenAIの公式サイトで確認してください。
    • 利用料の制限:使用料が高額にならないよう、制限を設定することができます。
    • レート制限:APIにはリクエストのレート制限が設定されています。大量のリクエストを短時間で送信すると、一時的に利用を制限される可能性があります。
    • セキュリティ:APIキーは非常に重要な情報です。第三者に漏れないように管理し、公開しないようにしてください。

    以下、各項目について補足説明をします。

    使用料(単価)

    ChatGPTのAPIは、基本的に有料です。

    詳しくはこちらに記載されています。

    簡単にまとめると、下図の通りです。

    APIを呼び出すスクリプトの中でモデルを指定するため、料金と性能を比較した上で選択する必要があります。

    利用料の制限

    使用料が高額にならないよう、制限を設定することができます。

    方法の一つとして、オートチャージ設定をオフにすることがおススメです。

    オートチャージ「オフ」の状態

    設定までの道のりは、

    1. 右上のアカウント名をクリック
    2. Billing(請求する)
    3. Overview(概要)
    4. Enable auto recharge(自動リチャージ)

    です。

    以下、その画面キャプチャを示します。

    上記は日本語翻訳状態です

    また、オートチャージとは別に「使用制限」することもできます。

    以下のように設定できます。

    1. 右上のアカウント名をクリック
    2. Billing(請求する)
    3. Usage limits(使用制限)

    以下、その画面キャプチャを示します。

    上記は日本語翻訳状態です

    使用制限では、上限(最大使用量)が設定されていることが分かります。

    増やしたい場合はリクエストができます。

    ハードリミットはその上限に達すると「リクエストが拒否される」ものであり、ソフトリミットは「通知される」のみです。

    使用状況に合わせた設定が必要です。

    レート制限

    APIにはリクエストのレート制限が設定されています。

    詳しくはこちらを参照して下さい。

    大量のリクエストを短時間で送信すると、一時的に利用を制限される可能性があります。

    システムを構築する際は上記を踏まえた設計を心掛けましょう。

    セキュリティ

    APIキーは非常に重要な情報です。

    第三者に漏れないように管理し、公開しないようにしてください。

    当たり前のことですが、PCのディスプレイにログインパスワードを付箋で貼ってしまう人がいる時代です。

    十分に気を付けましょう。

    まとめ

    今回は、PythonからChatGPTを使うために必要なAPI keyの取得方法から実際に実行可能なスクリプトを紹介し、使用上の注意点も解説しました。

    ChatGPTのAPIを利用することで、様々なアプリケーションやツールでOpenAIの強力な自然言語処理技術を利用することができます。

    上記のステップとサンプルスクリプトを参考に、ご自身のプロジェクトでAPIを活用してみてください。

    今後もPythonを中心としたプログラミングの情報をお届けします。

    Pythonの演習はこちら ▶

    以下のメルマガにご登録頂くと、不定期に配信をお届けします。

    ぜひ購読してください!

    それでは、ステキなPythonライフを!

    ABOUT ME
    やまちゃん
    これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 最近ではPythonを用いたアプリ開発、ウェブアプリケーションの開発と運営に没頭。

    COMMENT

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です