Jupyter Notebook に ChatGPT を統合する方法

Jupyter Notebook に ChatGPT を統合する方法

Jupyter NotebookChatGPT を統合できないものだろうか、と考えた方もいることでしょう。

結論から言うと、Jupyter NotebookChatGPT を統合する機能がChromeやFirfoxなどにあります。

それを使うことで、ChatGPTを使いながら、Pythonのコーディングなどが実施することができます。

この統合機能は、Pythonコードを整えたりレビューしたり改善案を出したりコード例を提示したりしてくれます。

何よりもJupyter NotebookPythonなどを実行したときに出力されたエラーメッセージの解説と、コードの修正案を出してくれるのが嬉しいところです。

もちろん、ChatGPTに対しJupyter Notebook内で質問すると、コーディング以外の質問にも答えてくれます。

何はともあれ今回は、「Jupyter Notebook に ChatGPT の統合の仕方」というお話しです。

Jupyter NotebookをChromeで利用していることを前提に話しを進めます。

OpenAIアカウント作成(2023年5月2日現在)

OpenAIのアカウントをお持ちでない方は、以下のサイトからアカウント作成してください。

OpenAI platform

 

アカウント作成の手順を簡単に説明します。

OpenAI platformhttps://platform.openai.com/overview)を開き、Sign upをクリックします。

 

Sign upをクリックすると、次のような画面が表示されます。

GoogleアカウントMicrosoftアカウントで、アカウント作成できます。

 

あなた自身の情報を聞かれますので、入力します。

 

認証で利用する電話番号を聞かれますので、あなたの携帯電話番号などを入力します。

 

あなたの携帯番号を入力すると、あなたの電話番号に認証番号がSMS/MMSなどに送られてきます

送られてきた認証番号を入力します。

 

送られてきた認証番号を入力すると、アカウント作成が終了し、トップページに遷移します。

 

OpenAI API Keyの作成

Jupyter NotebookChatGPTを使うには、OpenAI API Keyが必要です。

OpenAI API Keyを作成するには、右上のユーザ名をクリックしView API Keysを選択します。

 

次のような画面が表示されます。Create new secret keyをクリックし、OpenAI API Keyを作ります。

 

Create new secret keyをクリックすると、OpenAI API Keyの名前(Name)を促されます。

 

何のために利用するのか分かるように名前(Name)を入力し、Create secret keyをクリックすると、OpenAI API Keyが作成されます。

このOpenAI API Keyは、Jupyter NotebookChatGPTを統合するときに利用しますので、なくさないように保存しておいてください。

 

OpenAI API Keyが作成されると、元の画面に戻ります。作成されたことが画面から確認できるかと思います。

 

Jupyter Notebook に ChatGPT を統合する準備

Jupyter NotebookChromeで利用していることを前提に話しを進めます。

以下のURLからChromeChatGPT拡張機能インストールします。

ChatGPT – Jupyter – AI Assistant

 

Chromeに追加をクリックします。

 

以下のような画面が表示されOpenAI API Keyの入力を促されます。

 

OpenAI API Keyを入力しSave API Keyをクリックします。

 

これで準備は終了です。

 

Jupyter Notebook を開いてみよう

準備が終わったら、Jupyter NotebookChromeで開き、何かしらNotebookを開いてみましょう。空のNotebookを新規で作成して頂くだけでも問題ありません

見慣れないボタンがツールバーに追加されています。

拡大してみます。

Jupyter Notebook上でChatGPT機能を使うときに利用します。

左から……

  • Format(コードのフォーマットを整える提案)
  • Explain(コードの解説)
  • Debug(エラーメッセージの解説と修正案の提示)
  • Complete(コード例の提示)
  • Review(コードのレビュー)
  • Question(テキストで質問)
  • Voice Question(音声で質問)

 

右から2番目にある吹き出しマークはQuestionで、テキストで質問するとChatGPTがテキストで回答してくれます。よくある一般的な使い方かと思います。

一番右にあるスピーカーのマークのVoice Questionは料金が掛かるので注意してください。

 

ChatGPTが統合したJupyter Notebookの便利な機能紹介

以下のロジスティック曲線の関数を定義したコードに対し、幾つかの機能を試していきます。

# 飽和モデル(関数)の定義
def Saturation(X,K,b,c,m):
    return K/(1+b*np.exp(-c*(X-m)))

 

 Format(コードのフォーマットを整える提案)

Formatをクリックすると、ChatGPTから次のような回答(下図の後半部分)が返ってきました。

 

ChatGPTによる改善案(和訳)です。

  • コードが何をしているのか説明するためのコメントを追加しました。
  • 関数がどのような入力を受け、何を返すかを説明するために、関数にdocstring(「”””」で囲んである関数などの仕様を記載する部分)を追加しました。
  • 関数の入力と戻り値のヒント(解説)を追加しました。

 

不思議なのが関数の入力と戻り値のヒント(解説)の部分(Argsの部分)です。明示していないのに、ロジスティック曲線の説明になっています。

 

 Explain(コードの解説)

Explainをクリックすると、ChatGPTから次のような回答(下図の後半部分)が返ってきました。

 

ChatGPTによる関数の解説(和訳)です。

この関数「Saturation」は、X、K、b、c、mの5つのパラメータを受け取り、これらのパラメータに基づいて計算された値を返します。…(略)…

 

 Complete(コード例の提示)

Completeをクリックすると、ChatGPTから次のような回答(下図の後半部分)が返ってきました。

 

ぱっと見ですが、Format(コードのフォーマットを整える提案)で出力されたコード例とほぼ同じです(当たり前なのかもしれませんが……)。

 

 Review(コードのレビュー)

Reviewをクリックすると、ChatGPTから次のような回答(下図の後半部分)が返ってきました。

 

Format(コードのフォーマットを整える提案)だけでも端的でいいかなと思いますが、Format(コードのフォーマットを整える提案)よりも丁寧に説明している印象です。

 

 Debug(エラーメッセージの解説と修正案の提示)

以下のコードを実行し、あえてエラーを出します。

# 飽和モデル(関数)の例
exp_dat = pd.DataFrame(range(100)) #入力データ
exp_sat = pd.DataFrame(index=exp_dat.index)

exp_sat['K=1 b=1 c=1 m=50'] = Saturation(exp_dat,1,1,1,50) 
exp_sat['K=1 b=1 c=0.1 m=50'] = Saturation(exp_dat,1,1,0.1,50) 
exp_sat['K=1 b=2 c=0.1 m=50'] = Saturation(exp_dat,1,2,0.1,50) 
exp_sat['K=1 b=1 c=0.01 m=50'] = Saturation(exp_dat,1,1,0.01,50) 

exp_sat.plot() #グラフ

 

エラーメッセージが出ています。

 

Debugをクリックすると、ChatGPTから次のような回答(下図の後半部分)が返ってきました。

 

まさに、エラー要因とコードの改善案が提示されるので、非常にいい感じです。

 

まとめ

今回は、「Jupyter Notebook に ChatGPT の統合の仕方」というお話しをしました。

ChatGPTJupyter Notebookに統合することで、Pythonコードを整えたりレビューしたり改善案を出したりコード例を提示したりしてくれます。

何よりもJupyter NotebookPythonなどを実行したときに出力されたエラーメッセージの解説と、コードの修正案を出してくれるのが嬉しいところです。

もちろん、ChatGPTに対しJupyter Notebook内で質問すると、コーディング以外の質問にも答えてくれます。

興味のある方は、簡単なので試して見てください。