ツール

ChatGPT支援型コーディングを考える(コーディングにおける活用)

2023年2月5日

前回はChatGPTの「時に間違った内容を返してくる」特性に合った活用方法を考えました。

今回はその中でも「データ分析におけるコーディング」にしぼってChatGPTの活用方法を考えてみます。

コーディングにおけるChatGPTの活用

コーディングにおいてChatGPTを活用する際には、ChatGPTは時々間違った内容を返してくるという点を留意する必要があります。

これをふまえた上で、次のような活用方法を考えました。
・コーディングの下書き
・疑問点を文章で探す

コーディングの下書き

ChatGPTはコードの下書きを作ることができるため、それを起点にコーディングを行うことができます。

ChatGPTに下書きを作らせることで、コーディングのひな形を自動作成することができます。
検索でサンプルコードを探すこともできますが、検索結果から必要な情報にたどり着くまでの手間を省略することができます。
一方で、ChatGPTが回答を完成させるまで何秒か待つ必要があります。

一例として、ChatGPTにProphetで時系列予測を行うコードを書いてもらいました。

質問に対するChatGPTによる回答。Prophetを使って売上予測を行うコードを返している。ChatGPT Jan 9 Version. Free Research Preview.  2023/1/30閲覧

コードを示した上で、コードに関して説明してくれます。

コードが間違っている場合もありますが、これはQiitaの記事などでも同じです。
サンプルコードをコピペしてそのまま使うのではなく、きちんと関数や処理の意味を把握した上で実行して挙動を確認する点も同じです。

コードについてわからない点を質問したら答えてくれます。

質問に対するChatGPTによる回答。Prophetを使って売上予測を行うコードについて、列名を変更した理由を答えている。ChatGPT Jan 9 Version. Free Research Preview.  2023/1/30閲覧

文章でやりたいことを指示できるので、細かい調整も可能です。

下の画像のコードは、先日のProphetの時系列予測のコードに追加で次のような指示を順番に与えた場合の出力です。
・1949年1月から1960年12月までの学習データを使って、1961年1月から1965年12月までを予測
・予測は月単位で行う
・引数をハードコーディングしないで、変数として与える
・ファイルパスもハードコードしない(1つ上の指示に対して直しきれていない箇所の指摘)
・もう少し変数名を短縮
・Prophetの予測結果の誤差を評価
・イベントフラグも追加

追加指示を繰り返した後にChatGPTが返したコード。Prophetを使って売上予測を行うコードについて、期間指定やハードコードしない、評価指標を算出するなどの指示を行った。ChatGPT Jan 9 Version. Free Research Preview.  2023/1/30閲覧

具体的に指示していない箇所は、ChatGPTが自動で適当な値を入れてくれます。
たとえば、イベントフラグの具体的な日時を指定していないため、1955年1月1日に指定しています。
修正したい場合は、追加指示して変更します。

このように、指示に対する出力を見ながら追加指示を繰り返して誘導していきます。
あくまで下書きなので、細かい箇所は手動で直してもよいでしょう。

今回の例はProphetのドキュメントにも記載がある内容なので、ドキュメントを読めばわかる話です(その上、公式ドキュメントの方が信頼性が高い)。
しかし、必ずしも適切な例が検索ですぐに見つかるとも限りませんし、自分でコードを書く際の盲点に気づく可能性があります。
たとえば、閏年を判定するコードを書く際に特定の規則(2000年は閏年だが、1900年は閏年ではない)が抜けているなどに気づくことができます。

また、初心者にはドキュメントを読解するのが大変な場合もあるので、ChatGPTで概要を理解した上で公式ドキュメントを読むことで、早く内容を理解することができます。
このような活用方法は、どちらかというと初心者(あるいはそのライブラリをはじめて使う人)向けの内容になります。
公式ドキュメントを問題なく読みこなせるような人にとっては、公式ドキュメントの方がいいかもしれません。
しかし、自分がもっている前提知識が少ない場合はChatGPTで概要を理解した上で、ドキュメントを読んだり手を動かしてみると効率的になると思います。

疑問点を文章で探す

コードの下書き以外のChatGPTの活用方法としては、疑問点を文章で探すというものがあります。
Pythonでコードを実行してエラーが出た場合は、エラーメッセージを読んだ上でエラーメッセージを検索します。
しかし、検索エンジンによるキーワード検索では文章を検索しても必要な情報にたどり着くのが難しい場合も多々あります。
また、疑問点を検索用のキーワードにうまく変換できない場合もあります。
このような場合、文章により検索できるChatGPTが役立ちます。

具体例をあげます。
次の例は、こちらのページでProphetで時系列予測を行った際に出た疑問点です。

リンク先のページでは、季節変動のある増加トレンドのデータに対してProphetで時系列予測を行った際に季節変動をうまくフィッティングでませんでした。
この問題に対して、適切な検索キーワードをひねり出すのが難しく、検索ではなかなか必要な情報にたどり着けませんでした(実際には公式ドキュメントに記載があるのですが、それは一旦おいておきます)。
そこで、文章でChatGPTに質問したところ、次のように適切な対応を行ったコードを返しています。

質問に対してChatGPTが返した回答とコード。Prophetを使って時系列予測を行う際に、増加トレンドに合わせて周期性の上下動が大きくなる点をうまくフィッティングさせるための適切な方法を提示している。ChatGPT Jan 30 Version. Free Research Preview.  2023/2/2閲覧

seasonality_mode='multiplicative' は、この問題を解決するための適切な方法です。
キーワード化しづらい質問に対して、適切な回答が得られました。

このように、疑問点をキーワード化しづらい場合には、文章で質問できるChatGPTの優位性が際立ちます。

Google検索と連携できるChrome拡張機能

以上のようにChatGPTには検索エンジンには無い情報検索の特徴があるため、どちらがよいという二分論ではなく、検索エンジンとChatGPTをうまく組み合わせて使うとよいです。

次のようなChromeの拡張機能を使うことで、Google検索とChatGPTを同時に活用できます。

ChatGPT for Google

この拡張機能(ChatGPT for Google)を使うと、Google検索を行った際に同じキーワードでChatGPTでも同じ内容を質問できます。
Google検索を行いつつ、ChatGPTにも質問した結果を同時に見ることができるため、二つのツールをあわせた情報収集が簡単にできます。
ただし、「長文の質問への対応」や「指示を追加できる」といったChatGPTの特徴を生かすには、ChatGPT本体の方が使い勝手がよいと思います。

WebChatGPT

この拡張機能(WebChatGPT)は、ChatGPTに質問をした際に、Google検索の結果も活用してそれらしい答えを返してくれるものです。
ChatGPTが間違った答えを返すときでも、Google検索を行うとすぐに正しい答えにたどり着ける場合もあるので、そのような場面で活用できます。
この拡張機能を追加するとChatGPTで質問文を書くボックスの下に、ウェブ検索で探すかChatGPTに質問するかを選択できます。
ウェブ検索を選んだ場合は、文章で質問をしても質問に対するそれらしい回答を数個(指定可能)選んで返してくれます。

参考文献

ChatGPTを強化するChrome拡張機能「WebChatGPT」はとりあえず入れておくべき ディレイマニア 2023/1/30閲覧

-ツール
-, ,