アフィリエイト広告を利用しています

AIチャットボット「ChatGPT」API経由 でGoogleスプレッドシートで使う方法

ChatGPTが話題だ。「ChatGPTとは何ですか?」と尋ねると、

ChatGPTは、自然言語処理(NLP)の技術を利用したチャットボットです。AIを使用して、ユーザーの質問に自動的に回答することができます。ChatGPTは、複雑な質問を理解し、正確かつ正確な回答を返すために開発されたNLPアルゴリズムを利用しています。

このような答えが返ってくる。

API経由で、Google スプレッドシートのGASでプログラムを書いてAPI経由にて、ChatGPTが関数で使えると聞いて、早速試した。

前段取りでAPIキーを取得

OpenAIのアカウントを取得し、API Keyをこちらのページから取得し、メモ帳などに一旦保存しておく。(APIキーは絶対に公開しないこと)

GASスクリプト

Googleスプレッドシートを開き、メニューの[拡張機能] > [Apps Script] を開き、GAS編集画面を表示する。

一旦、エディターの文字を全部消した後、下のコードを貼り付ける。sk-paste-your-API-secret-key-here に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-paste-your-API-secret-key-here";
//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();
}

MODEL_NAME = “text-davinci-003” のところで、どの機械学習モデルを使うのかを選択している。

  • text-davinci-003
    • 最も高性能。高い品質、長い出力が得られる。
  • text-curie-001
    • Davinciより高速で出力 低コスト。
  • text-babbage-001
    • 素直な出力、非常に高速、低コスト。
  • text-ada-001
    • シンプルな作業で、最も高速。一番低コスト。

私は、今のところは、無料でモニター利用できるので(2023年1月現在)text-davinci-003 を使っている。

貼り付けた後、保存 > 実行 をクリックすると、「権限の確認 ダイアログが表示」されるので、実行するgoogleアカウントを選び、

「このアプリはGoogleでは確認されていません」の画面にある小さな「詳細」をクリック。

すると下の画面になるので、「GPT3(安全ではないページ)に移動」をクリックする。

次の画面の「許可」をクリックする。

Google スプレッドシート

これでGoogleスプレッドシートにて、

=IF(ISBLANK(A1),,GPT("小説 "&A1&" のあらすじは:",1000))

このコードをA2のセルに貼り付けて、A1のセルに「〇〇〇〇」と質問すると

すると、このように出力を得られる。

なお、同じ質問で、「text-ada-001」を使うと、こんな出力になった。差が大きいと感じる。

エラー

Exception: Request failed for https://api.openai.com returned code 429. Truncated server response: { “error”: { “message”: “The server is currently overloaded with other requests. Sorry about that! You can retry your request, or contact us … (use muteHttpExceptions option to examine full response)(行 33)が発生しました。

このようなエラーが表示された場合、サーバーリクエストが多くビジーとのこと。しばらく時間を置くか、出力する文字数を減らすようにパラメータを変えてみると、答えてくれるかもしれない。

参考記事

✓ あわせて読みたい
GPT-3 and Google Sheets

なお、以下の関連記事も必読です!

Chat-GPTとは何か、使い始め方から活用法まで紹介
Chat-GPTと深津式を組み合わせて、最強ブログタイトルを作る
Google Apps ScriptでGmailの受信トレイのラベルを外すコード

▼ オンライン講座(販売中)
Chat-GPT AIで爆速タイトル作成!ブログがもっと楽しくなる講座

この記事を書いた人

大東 信仁

カンパチが好きです。

プロフィールはこちら

10月14日開催 参加者募集中
(画像をタップ→詳細へ)

ミッションナビゲート モニター
(画像をタップ→詳細へ)

広告