LoginSignup
14
9

Googleスプレッドシートに GPT3 を組み込んで関数として使う

Last updated at Posted at 2023-01-17

GPT3_FUNCTION_ON_GAS.gif

元ネタ:
https://twitter.com/kajikent/status/1615179400231931906

Googleスプレッドシートに GPT3 を組み込んで関数として使うと、上のようなことができるらしいので、作ってみた。

SheetAI.appでノーコードで作れるって言ってる人いるけど、知らないサイトにメールアドレス渡すのって怖いし、何より自分でカスタマイズできると面白いですよね!

実際やってることは非常に簡単 (手っ取り早くGASのコードを知りたい人は ページ内リンク にジャンプ)

1. OpenAIのAPIページにアクセス

2. サインアップしアカウントを作成してログイン

(サインアップには携帯電話番号が必要)
image.png

3.左上のアカウント名をクリックし、ドロップダウンメニューから「View API keys」を選択

01.png

4. Create new secret key をクリック

クリップボードに API キーがコピーされるので一時的に控えておく。
image.png

5. Googleスプレッドシートを開き、メニューから拡張機能 -> Apps Script を選択

image.png

6. エディタ左側に縦に並んでいるアイコンのうち、歯車のアイコン(プロジェクトの設定)をクリック

image.png

7. 設定画面を一番下までスクロールして、「スクリプトプロパティを追加」をクリック

image.png

8. APIキーを追加

image.png

プロパティには、大文字半角で「APIKEY」、
値には、先ほどOpen AIのサイトから発行した API キー を入力する

「スクリプトプロパティを保存」をクリック。

9. エディタの編集画面に戻り、下記のコードを入力

function GPT3(prompt) {
  const apikey = ScriptProperties.getProperty('APIKEY');
  const url = 'https://api.openai.com/v1/completions';
  const headers = {
    Authorization:'Bearer ' + apikey,
    'Content-type': 'application/json',
  };
  
  const options = {
    muteHttpExceptions : true,
    headers: headers, 
    method: 'POST',
    payload: JSON.stringify({
      model: 'text-davinci-003',
      max_tokens : 50,
      temperature : 0,
      prompt: prompt
    }),
  };
  
  const response = UrlFetchApp.fetch(url, options);
  if (response.getResponseCode() !== 200) {
    const message = JSON.parse(response.getContentText());
    return 'Error:' + message.error.message;
  }
  const responseObj = JSON.parse(response.getContentText());
  return responseObj.choices[0].text.replace(/\r?\n/g,"");
}

実行ボタンをクリック
image.png

実行すると、下記のようなダイアログが出るので「権限を確認」をクリック
image.png

自分のアカウントをクリック
image.png

詳細をクリック
image.png

「安全ではないページに移動」をクリック
image.png

10. スプレッドシートに「=GPT3("質問文")」の形式で関数を入力。

image.png

たとえば、B3セルに会社名を入れて、C3セルに下記の数式を入れる。
すると、設立年が返ってくる。

=GPT3("When founded" & B3 & "? Answer with year numbers only.")

できあがったもの。
GPT3_FUNCTION_ON_GAS.gif

注意

あまり大量に数式を配置したり、頻繁に更新したりすると、レート制限によってエラーになることがあります。(私の上記のコードだと、エラーのときはちゃんとエラーが発生していることがわかるとともに、どんなエラーかという内容が、該当セル上に出ます)

max_tokens や temparature は好みで調整してください。

14
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
9