PythonでChatGPTの回答をExcelへ出力する方法!xlwings使用!

Python

PythonでChatGPTの回答をExcelへ出力する方法を知りたいときはないでしょうか。

けど、そんな中で悩むことは、

・PythonでChatGPTの回答をExcelへ出力する方法がわからない
・PythonとChatGPTを連携する方法がわからない

ですよね。

今回はそんなお悩みを解決する

・PythonとxlwingsでChatGPTの回答をExcelへ出力する方法

についてまとめます!

PythonでChatGPTの回答をExcelへ出力する前の下準備

xlwingsについて

xlwingsはExcelとPythonをつなぐことができるPythonライブラリで、ExcelとPythonの相互連携ができます。

xlwingsを使用すると、Excel VBAマクロの代わりにPythonコードを使用してExcelの操作ができるようになります。

今回はExcelからxlwingsを使い、Pythonを実行、ChatGPTのAPIを起動させ、その回答を元のExcelへ出力するようにします。

タカヒロ
タカヒロ
ExcelからPythonコードを呼び出すことができますので、Pythonコードをいちいち開いて実行する必要はありません。

使い方

xlwingsを使ってExcelとPythonを連携させる場合、Excelファイル内にPythonコードを記述し、ExcelからPythonを実行します。

Excelファイルを開き、xlwingsをインストールした状態で、xlwingsの機能を使ってPythonを実行することができます。

xlwingsとOpenAIをインストール

xlwingsとOpenAIをインストールしましょう。

OpenAIとはGPTシリーズを使えるようにするツールキットです。ChatGPTを使うため併せて実装していきます。

1. コマンドプロンプトまたはターミナルを開きます。

2. pipコマンドを使用して、xlwingsをインストールします。以下のコマンドを入力してEnterキーを押します。

pipをアップグレードします。

pip install --upgrade pip

xlwingsをインストール

pip install xlwings

OpenAIをインストール

pip install openai

Pythonファイル

Pythonを実行するためのPythonファイルを用意します。

テキストファイルで空のテキストを作成し、拡張子を.pyにして任意の名前で保存します。ファイル名は半角英字にしてください。

サンプルは以下としています。

F:\test\gpt.py

タカヒロ
タカヒロ
Pythonコードは後で入れますのでこの段階では空欄で結構です。

回答用のExcelファイルを用意する

回答用のExcelファイルを用意しましょう。

Excelファイルを新規作成し、Pythonファイルと同じファイル名にし、同一階層に保存します。

F:\test\gpt.xlsx

質問内容はA1セルに入力してください。

タカヒロ
タカヒロ
PythonとChatGPTを連携させるためには準備がちょっと大変ですね、

ChatGPTのAPIキーを取得

今回使うChatGPTのAPIキーを取得しましょう。

API keys発行ページへアクセスします。

タカヒロ
タカヒロ
初回ログインの場合はアカウントを登録してください。

「Create new secret key」をクリックし、出力されたAPIキーをメモします。

タカヒロ
タカヒロ
発行されたAPIキーは画面を閉じた後は見られなくなりますので、しっかり記録するようにしましょう。また、外部に漏れないよう注意しましょう。

ChatGPTのAPIを使う上での注意点

ChatGPTのAPIを使う上での注意点を先にお伝えします。

ChatGPTのAPIは利用していくと料金が発生する仕組みになっています。ですので、発行したAPIを数多く使ったり、第三者に共有し、不特定多数の人達に利用されたりすると知らぬ間に費用が多額になってしまっている可能性がありますので、十分注意してください。

ただ、初回登録時は18ドルの無料枠がありますので、それを超えない分量であれば料金は発生することはありません。

今どれぐらい使っているかを確認する方法はUsageページから確認することができますので、随時確認するようにしましょう。

PythonでChatGPTの回答をExcelへ出力する方法

PythonでChatGPTの回答をExcelへ出力する方法について説明をします。

ChatGPT APIと連携するPythonコード

ChatGPT APIと連携するPythonコードは以下の通りです。

import xlwings as xw
import openai

def main():

    # OpenAI APIキーを環境変数から読み込みます。
    openai.api_key = "sk-****************************************************"

    # アクティブなブックを取得します。
    book = xw.books.active
    sheet = book.sheets[0]

    # A1セルに入力された質問を取得します。
    question = sheet.range('A1').value

    # CatGPTに質問を送信し、回答を取得します。
    response = openai.Completion.create(
        engine="davinci",
        prompt=question,
        max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.5,
    )

    # A2セルに回答を出力します。
    answer = response.choices[0].text.strip()
    sheet.range('A2').value = answer

if __name__ == '__main__':
    main()

タカヒロ
タカヒロ
短いコードで驚いた方もおられるかと思います。Python側でOpenAIのモジュールが用意されているからですね。

Pythonコードを設定する

Pythonコードを設定していきましょう。

先ほどメモしたAPIキーを入力します。

openai.api_key = "sk-****************************************************"

Pythonコードを実装する

先ほど作成したPythonファイルへコードを貼り付け、保存します。

F:\test\gpt.py

Pythonを実行する

ExcelからPythonを実行し、ChatGPTの回答をExcelで得てみましょう。

xlwingsタブをクリックし実行ボタンをクリックします。

実行結果です。

ChatGPTの回答がA2セルへできましたね!

タカヒロ
タカヒロ
なお、使用しているモデルが旧バージョンの”davinci”ですので、回答の精度は現行モデルよりちょっと低いです…
まあ、今回の記事のメインはPythonとChatGPTとExcelの連携方法ということで、ご了承ください…

Pythonコードの説明

Pythonコードについて説明をします。

xlwingsとopenaiの両モジュールをインポートしています。

import xlwings as xw
import openai

アクティブなExcelブックを参照し1シート目を取得します。

book = xw.books.active
sheet = book.sheets[0]

A1セルに入力された質問を取得します。

question = sheet.range('A1').value

CatGPTに質問を送信し、回答を取得するためのパラメータを設定しています。

response = openai.Completion.create(
engine="davinci",
prompt=question,
max_tokens=1024,
n=1,
stop=None,
temperature=0.5,
)
answer = response.choices[0].text.strip()

各パラメータの意味は以下の通りです。

engine 使用するGPTモデルを指定します。上記のコードでは「davinci」と指定しています。
prompt GPTモデルに入力するテキストを指定します。上記のコードでは、「question」という変数に格納されたテキストを指定しています。
max_tokens GPTモデルが生成する最大トークン数を指定します。上記のコードでは、1024と指定しています。
n GPTモデルが生成する回答の数を指定します。上記のコードでは、1と指定しています。
stop GPTモデルが生成する回答の終了条件を指定します。上記のコードでは、Noneと指定しており、GPTモデルが自動的に回答を終了するようにしています。
temperature GPTモデルが生成する回答の多様性を制御するためのパラメータです。上記のコードでは、0.5と指定しています。値が低いほど、より確信度の高い回答が生成されますが、値が高いほど、より多様な回答が生成される可能性があります。

A2セルに回答を出力します。

sheet.range('A2').value = answer

さいごに

いかがでしょうか。

今回は、

・PythonとxlwingsでChatGPTの回答をExcelへ出力する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

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