見出し画像

【GAS】ChatGPTを使って会話形式でChatGPTのAPIを利用するスクリプトを作成した。

ChatGPT便利ですよね。
GPT-4モデルは特に便利だと感じます。しかし、2023/05/14現在、Plusモードでも3時間で25回という制限があります。

いろいろ繰り返しているとすぐに25回に達してしまいます。将来的にはどうなるかわからないですが、熱中して一気に作業を進めたいときは少しネガティブな要素です。
そして、履歴も追うことはできますが、探すのが手間だったりします。

なので、スプレッドシートを利用して上記の問題を回避したいと思います。
そしてせっかくなのでGASのスクリプトもChatGPTに書いてもらいましょう

設計

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

2023/5/14時点のリファレンスで作成しているので、情報が劣化するかもしれません。適宜読み替えて下さい。

ChatGPTのAPIに投げるメッセージの属性にはsystem、user、assistantがあります。
ユーザーが入力する内容としてはsystemかuserになります。どちらの重みづけが優先されるかは以下のQiitaの記事を参照し、
system:会話全体としての設定、役割(「あなたは編集者です」といったもの)をはじめに与える
user:通常の質問はこちらで投げる
とすることにしました。

https://qiita.com/yu8ikmnbgt6y/items/2ea717d266b98d9b7f9d

assistantはChatGPTからの回答として入力する場合に利用します。

そのため次のようにします。

B1に役割を入力します。
4行目以下のA列には質問を、4行目以降のB列にはChatGPTからの回答を記載します。

ChatGPTは会話形式で進んでいくため次のように利用を想定して作成します

  • 初回実行時
    B1に設定、役割を入力し、A4に質問内容を記載しAPIに投げる
    APIにはB1(system)+A4(user)の内容をAPIに投げる
    戻り値をB4にマッピングする

  • 2回目実行時
    A5に質問内容を記載しAPIに投げる
    APIにはB1(system)+A4(user)+B4(assistant)+A5(user)
    戻り値をB5にマッピングする

3回目以降はこの繰り返しですね。
こういったスクリプトを書いてほしいので、ChatGPTに依頼するための文章を作成します。

以下の条件でのGASのスクリプトを作成して下さい。

  • ChatGPTのAPIを実行する

  • 「実行」シートを対象とする

  • B1の内容をroleとして実行する

  • 初回実行時はB1の内容とA4の内容をAPIに投げる。A4の内容はuser属性として投げる

  • APIのレスポンスはB4に出力する。

  • これを一単位とする。

  • A5に内容が入力されている場合、B1の内容をrole、A4の内容をuser+B4の内容をassistant属性としてAPIに投げる。

  • 以下A6、A7の場合も繰り替えす


この文章を記載している時点でGPT-4が制限中なので、3.5での実行ですが、それっぽいものを作成してくれました。

ただ、ChatGPTのトレーニングデータが2021年9月時点のものであることからか、APIリクエストの部分がうまく生成できなかったため、リファレンスやネット上の情報を確認しながら修正します。


実行結果

問題なく実行できそうですね。

ただ、実行に関してはトークンを多く消費するため、gpt-4での実行だと金額が一気に跳ね上がってしまいそうです。トークンの上限をつけるとメリットが失われてしまいそうですね。

とはいえ、活用していきたいと思います。

コード

実行可能な状態のコードです。APIキーはご自身で取得してください。APIキーを取得しないと実行できません。

API代のお小遣いを頂けると嬉しいです!

ここから先は

1,617字 / 1画像

¥ 100

この記事が気に入ったらチップで応援してみませんか?