DX

ChatGPTをGoogleスプレッドシートで使ってみる「GPT関数」

この記事では、ChatGPTをGoogleスプレッドシートで用いて、聞きたいことに対してChatGPTにスプレッドシート内で答えてもらうことをやっていきます。

スプレッドシートでChatGPTを呼び出すためにはGPT関数を使います。
GPT関数を使えるようにするためには、アドオン「GPT for Sheets™ and Docs™」が必要になります。こちらのアドオンの有効化方法については以下の記事にて取り上げています。

GPT関数を使うためにはOpenAI APIの有料アカウントが必要です。

 

ChatGPTとスプレッドシートで今回やってみること

図のように、A列の「りんご」「パイナップル」「メロン」「いちご」に対して、
①B列で特徴をChatGPTから書き起こしてもらうことを行います。
②B列の色を書き起こしてもらいます。

まずは、任意のスプレッドシートを用意してください。

A列の「果物」について
B列で「特徴」を得よう

最初は「果物」についてただ情報を得てみましょう。B2のセルにA2の情報をChatGPTから得るよう以下の関数を入れてみます。

=gpt(A2)

これではただ単に、A列の言葉に対してChatGPTが返してきているだけですので、B1にある「特徴」という単語は使っていません。

先程「=gpt(」とスプレッドシートに入力した際以下のようなガイドが出てきたかと思います。

GPT(prompt, [value], [temperature], [max_tokens], [model])

と表記が出てきます。こちらのパラメータについては以下のようになっています。

prompt (プロンプト)

GPTに与えるテキストの開始部分で、タスクの指示や質問を含めることができます。
先程の例

=gpt(A2)

では、B1セルの特徴が含まれていませんでしたが

今回の図のように

=gpt(A2&"の"&B1)

とすることによって
A2:りんご
"の":の(スプレッドシートの通常の関数と同じで、文字として入れるにはダブルクォーテーション「"」で挟みます)
B1:特徴
※アンド「&」も通常の関数同様、合体させる際に使います。
これにより「=gpt(A2&"の"&B1)」は「=gpt("りんご特徴")」となります。

value (値) [オプション]

GPTに与える特定の値やコンテキスト情報を含めることができます。

=gpt(B1,A2 )

とすることによって、

B1:特徴
A2:りんご
これにより「=gpt(B1,A2 )」は「=gpt("特徴"をGPTへ送信,"りんご"の情報を含める)」となります。

temperature (温度) [オプション]

GPTは確率ベースのモデルであり、テキスト生成時にランダムな要素を持ちます。このランダム性は、生成されるテキストの多様性や予測の不確実性を制御するために使用されます。
temperatureの値は、0より大きく1以下の任意の実数で設定されます。値が高いほど、生成されるテキストはよりランダムで多様なものになります。一方、値が低いほど、生成されるテキストはより決定的で確定的なものになります。

temperatureが高い場合(例: 1.0以上)
・ランダム性が強くなります。
・より多様なテキストが生成されます。
・同じプロンプトを複数回実行しても、異なる回答や文体のテキストが得られることがあります。
temperatureが低い場合(例: 0.2以下)
・ランダム性が低くなります。
・より確定的なテキストが生成されます。
・同じプロンプトを複数回実行しても、ほぼ同じ回答や文体のテキストが得られることがあります。

temperatureの適切な値は、タスクやユースケースによって異なります。一般的には、ランダム性を求める場合には高い値を使用し、より制御された結果を望む場合には低い値を使用します。

先程設定した=gpt(B1,B2)にtemperatureの設定をする場合

=gpt(B1,B2,0.5)

の様になります。

温度が極端に高い(例: 非常に大きな値)場合、生成されるテキストが無意味になることがあります。逆に、温度が極端に低い(例: 0に近い値)場合、非常に制約されたテキストが生成される可能性があります。

そのため、適切な温度の設定を試行し、望む結果を得るために調整することが重要です。

max_tokens (最大トークン数) [オプション]

生成されるテキストの最大トークン数を0~4000の間で制限するパラメータです。デフォルト値は256となっています。
トークン数は、テキストを単語や文字などの小さな単位に分割した数を表します。

先程設定した=gpt(B1,B2,0.5)にmax_tokensの設定を80とする場合

=gpt(B1,B2,0.5,80

の様になり、80トークンで文章が切られます。

トークンについては以下の記事の一部で取り上げています。

model (モデル) [オプション]

使用するGPTモデルのバージョンを指定するパラメータです。
デフォルトは「text-davinci-003」ですが、他のモデルを指定することも可能です。

GPTモデルのバージョン(2023年7月現在)
text-davinci-003
gpt-4
gpt-3.5-turbo-16k
gpt-3.5-turbo
text-ada-001
text-babbage-001
text-curie-001

モデルやバージョンの詳細情報はOpenAIの公式ドキュメントやリソースを参照してください。

 

先程設定した=gpt(B1,B2,0.5,80)にmodelの設定を「text-davinci-003」とする場合

=gpt(B1,B2,0.5,80,"text-davinci-003"

の様になります。

さいごに

「max_tokens (最大トークン数)」でトークンの上限を設定する場合、先程の例のように文章が途中で切られてしまう現象が発生してしまいます。
文字数制限をした回答を得たい場合は、ChatGPTの通常のチャットでもつかう手法ですが、「○○文字以内」という文言を入れ込むことで可能になります。

図ではB1を「特徴」から「特徴を40文字以内」と変更することによって、回答が40文字以内で帰ってくるようにしました。
ただしこの場合「max_tokens (最大トークン数) 」が文字数制限より下回ったトークンになると、先程同様途中で文字が切れてしまう場合があるので、適正な数値で調整をして下さい。

感覚的に、GPT関数で流す内容を文章として捉えて、ChatGPTの通常のチャットに流すイメージで的確な内容を入れてあげることが望ましいです。

リサーチなどを行う場合など、この関数を使っていくことによって業務効率はかなり向上するかと思います。

GPT関数で読み込んだ内容は、関数の呼び出し毎に独立して計算されるため、スプレッドシートを改めて立ち上げるタイミングや、GPT関数を再度呼び出した場合、再計算が行われ、新たにトークンが消費される可能性があります。
GPT関数を使用して回答の回収が終わっているものは、テキスト化し関数を削除しておきましょう。

 

関連記事

TOP