かずきち。の日記

サーバサイドエンジニアのつぶやき

ChatGPTのAPIキーが発行されたので、GASを使って「みんなのChatGPT」をディプロイメントする

世間を賑わすChatGPT

OpenAIが開発したChatGPTが世間を賑わせています。
チャットで気になる言葉を話しかければ答えてくれます。
しかしこの手のサービスは何が怖いか?というと今までの検索ワードを抜かれるということです。

myactivity.google.com

あなたが今までGoogle検索で検索した言葉はすべてここ管理され、広告に生かされています。
同様にChatGPTも入力された言葉がOpenAIによって回収されています。
今回はChatGPTで聞かれた言葉を記録するアプリを作っていきます。
公開すれば誰が何をChatGPTに検索したかわかります。

みんなのChatGPTを作っていく

上フレームで検索、下フレームで回答できるようにアプリを作っていく。

script.google.com

開発者ディプロイでおいておきます。
上のフォームで質問を投げるとしたフレームのスプレッドシートで回答を返してくれます。

GoogleスプレッドシートでChatGPTを取り扱うには

↓下記のコードを貼りつける。SECRET KEYには自分のシークレットAPIキーを入力し、

/**

* GPT-3 and Google Sheets

*

* @param {string} prompt Prompt.

* @param {number} temperature (Optional) Temperature.

* @param {string} model (Optional) GPT-3 Model.

* @return Response returned by GPT-3.

* @customfunction

*/

const SECRET_KEY = "sk-自分のAPIキーに変更";

//const MAX_TOKENS = 10;

const MODEL_NAME = "text-davinci-003"; // more structured and deterministic: for data

//const MODEL_NAME = "davinci"; // more flexible and creative: for stories, chatbots

const MODEL_TEMP = 0.3;

function GPT(prompt,max_tokens=30) {

  const url = "https://api.openai.com/v1/completions";

  const payload = {

  model: MODEL_NAME,

  prompt: prompt,

  temperature: MODEL_TEMP,

  //max_tokens: MAX_TOKENS,

  max_tokens: max_tokens

};

const options = {

  contentType: "application/json",

  headers: { Authorization: "Bearer " + SECRET_KEY },

  payload: JSON.stringify(payload),

};

  const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());

  return res.choices[0].text.trim();

}

スプレッドシートに紐付けたスクリプトに展開すれば完了である。
「=GPT関数」の完成である。


ChatGPTのAPIにはバージョンが有る

GPT3 (text-davinci-003)
gpt-3.5-turbo
のように組み込むChatGPTのモデルによって正確性・速度・料金が変わってくるのです。
3より3.5のほうが優れているのはご想像どおりです。
より早く、より正確にChatGPTが回答をしてくれます。
書いたコードは100行を切るというシンプル構成ですが、Google上でChatGPTを使用できるようになりますので、興味がある人はぜひ上を参考にやってみてください。

【デモ】
script.google.com