GAS(Google App Script)でChatGPTのAPIを使ってみた

どうも皆さんこんにちは、ホークスファンの市川です。

 

最近ようやく私もGhatGPTのAPIを試す機会があったので、

今回はGAS(Google App Script)を使ってAPIを実行する方法を試してみたいと思います。

 

GASとは

Googleが開発・提供しているプログラミング言語です。

JavaScriptをベースに作成されています。

 

GoogleスプレッドシートやGoogleカレンダー、Googleドライブ等、

Googleのサービスと簡単に連携することができます。

ChatGPTのAPI

アカウントの登録を行えばだれでもサイト上でChatGPTを利用できるようになりますが、

サイト上で行っている「質問をする」→「回答を受け取る」の流れを、

サイト上ではなく自分のプログラムから利用するためのツールになります。

APIキーの発行

※OpenAIのアカウント作成済み前提で進みます

  1. プラットフォームにアクセスしログイン後、画面右上のアカウントアイコンをクリックし、「View API Keys」を選択します

  2. 「API Keys」画面に移動するので、「+ Create new secret key」ボタンをクリックします
  3. Key作成のモーダル画面が表示されるので、名前を入力し「Create secret key」ボタンをクリックします
  4. Keyが作成されたので、コピーアイコンをクリックしてkeyをコピーしましょう
    (※keyが漏洩すると他人が勝手に利用できてしまうので管理には気をつけてください)

GASのプロパティ設定

次にGASの設定に移ります。

  1. Googleスプレッドシートを開き、「拡張機能」→「Apps Script」を選択してください
  2. コードを入力するような画面に移動するので、画面左にあるメニューの歯車アイコン(プロジェクトの設定)をクリックしてください
  3. 画面下に「スクリプト プロパティ」という設定欄があるので、そこに先ほど取得したKeyを設定します
    ここに設定することで、プロパティに設定した名称でkeyの値を取得できるようになります

APIのサンプル

本題であるChatGPTのAPIを実行していきます。

  1. メニュー内の「エディタ」を選択して、コードを入力する画面にもどります
  2. 下記コードを入力してください
    /**
     * ChatGPT サンプル
     */
    function chatGptSample() {
      //スクリプトプロパティに設定したOpenAIのAPIキーを取得
      const apiKey = ScriptProperties.getProperty('OpenAI_key');
      //ChatGPTのAPIのエンドポイントを設定
      const apiUrl = 'https://api.openai.com/v1/chat/completions';
      //ChatGPTに投げるメッセージを設定
      const messages = [
        {'role': 'system', 'content': '文末に60%の確率で♡、40%の確率で☆をつけてください'},
        {'role': 'user', 'content': '日本で最も北に位置する都道府県は?'},
      ];
      //OpenAIのAPIリクエストに必要なヘッダー情報を設定
      const headers = {
        'Authorization':'Bearer '+ apiKey,
        'Content-type': 'application/json',
        'X-Slack-No-Retry': 1
      };
      //オプションの設定(モデルやトークン上限、プロンプト)
      const options = {
        'muteHttpExceptions' : true,
        'headers': headers,
        'method': 'POST',
        'payload': JSON.stringify({
          'model': 'gpt-3.5-turbo',
          'max_tokens' : 2048,
          'temperature' : 0.9,
          'messages': messages})
      };
      //OpenAIのChatGPTにAPIリクエストを送り、結果を変数に格納
      const response = JSON.parse(UrlFetchApp.fetch(apiUrl, options).getContentText());
      //ChatGPTのAPIレスポンスをログ出力
      console.log(response.choices[0].message.content);
    }
  3. 「実行」するとChatGPTからの返答が画面に表示されます
    ※アクセス権限のエラーになる場合はこちら

APIのロール

API利用時に設定するmessageに関して簡単に説明します。

ChatGPTに質問を投げる際にはサンプルコード10行目のようにjson形式でデータを渡す必要があります。

その際、「role」と「content」というkeyに値を設定しなければなりません。

「role」は3種類用意されています。

  1. system
    GhatGPTに役割や前提条件を設定します。
    今回のサンプルでは回答時に最後に♡か☆をつけて回答するように条件を設定しています。
  2. user
    ChatGPTへ問いかけをする際の内容を設定します。
    今回のサンプルでは「日本で最も北に位置する都道府県はなにか」という問いかけを行っています。
  3. assistant
    ChatGPTからの回答を設定します。
    ChatGPTからの回答を元に、さらに問いかけを行う場合に利用します。

 

GASのアクセス権限エラー

GASを初めて利用する際、アクセス権限のエラーが表示されます。

下記手順で許可することが可能です。

  1. 権限を確認ボタンをクリック
  2. 詳細を開いて、移動のリンクをクリック
  3. 許可をクリック

 

あとがき

今回GASを利用してChatGPTのAPIを試してみましたが、思っていたより簡単に実行することができました。

オプションの設定や、モデルの学習等まだまだやれること(調べてないこと)が沢山あるので、

時間を見つけて色々試していこうと思います。

 

AIの活用はどの企業でもこの1年のテーマとなっているのではないかと思うので、

乗り遅れないようにしたいですね。