GPT-4のAPIをGoogle Apps Script(GAS)で実行する方法!

2023年7月12日

GPT-4のAPIが2023年7月6日より一般公開されて、誰でも利用可能になりました。

そこでGPT-4のAPIをGoogle Apps Script(GAS)で実行する方法を解説します。

Google Apps Script(GAS)のサンプルコードでGPT-4のAPIリクエストに必要な項目を説明します。

GPT-4のAPIが誰でも利用可能に

2023年7月6日にOpenAIがGPT-4のAPIを誰でも利用できるよう、一般公開すると公式サイトで発表しました。

OpenAIの公式サイトでGPT-4のAPIを一部ユーザーのみでなく、全ての有料ユーザーに開放すると2023年7月6日に発表

GPT-4は有料版のChatGPT Plusでしか利用できず、APIはウェイトリスト登録後、招待メールが届いたユーザーしか使えませんでした。

ChatGPTよりも高精度の生成AIであるGPT-4のAPIが誰でも使えるようになったので、多くユーザーがAPI利用することが見込まれます。

↓GPT-4のAPI一般公開については下記の記事で詳細をまとめています。

GPT-4のAPI利用にはGASがおすすめ

GPT-4のAPIを利用方法としてはローコードやノーコードツールもありますが、プログラミングでの利用が一般的です。

プログラミングにおけるGPT-4のAPI使用事例では、Pythonが最も多いです。

ただ、オススメしたいのはGoogle Apps Script(GAS)です。

Google Apps Script(GAS)はサーバーレスの無料で使えるスクリプトサービスで、業務改善や業務自動化に活用

Google Apps Script(GAS)はクラウドサービスで開発環境を整えずに利用できます。

さらにGoogleスプレッドシートやGoogleドキュメントといったGoogle系サービスと連携して、入力プロンプトや生成結果の保存も簡単です。

PythonでもGoogle Colab(Colaboratory)を使えば、ブラウザ上でGPT-4のAPIリクエストはできます。

開発環境を構築せずにブラウザですぐにPythonが使えるGoogle Colab(Colaboratory)

ただし、生成結果をファイルとして保存するのはひと手間かかります。

そうした点でGPT-4のAPIを利用する場合は、手軽にAPIリクエストができる点に加え、実行結果も保存しやすいGoogle Apps Script(GAS)がおすすめです。

まずOpenAIのAPI登録とAPIキーの発行

実際にGPT-4のAPIをリクエストするには、開発元であるOpenAIのAPIに対して利用登録が必要になります。

利用登録後にAPIキーを発行すれば、GPT-4のAPIリクエストが可能です。

下記の記事でOpenAIのAPI利用登録とAPIキー発行手順を解説しています。

まだOpenAIのAPIを利用したことがない人は、記事で解説している手順に従ってAPI利用登録とキー発行を行いましょう。

GPT-4のAPIが使えるか確認方法

OpenAIのAPI利用登録ならびにAPIキー発行ができたら、実際にGoogle Apps Script(GAS)でGPT-4のAPIを実行できると思うかもしれません。

ただし、GPT-4のAPIが登録したOpenAIのAPIアカウントで利用可能か確認する必要があります。

というのも、GPT-4のAPIは2023年7月6日から一般公開したとOpenAIが発表しているものの、まだ利用できないユーザーが多く存在しているからです。

そのため、GPT-4のAPIが利用できるか確認しなければなりません。

GPT-4のAPIが利用可能か調べる方法はPlayGroundです。

ChatのPlayGroundのURLにアクセスすると、モデルの選択ができる項目があります。

GPT-4が利用可能なAPIユーザーの場合、モデルにGPT-4が表示

このモデル選択に「gpt4」と表示されていれば、GPT-4のAPIが利用可能です。

ただ、gpt-4がPlayGroundのモデルに表示されず、gpt-3.5-turboのみ表示される場合もあります。

OpenAIのChatGPT(GPT-4)のプレイグラウンドでのChatでのモデル表示にGPT-4が存在せず

GPT-4のAPIが利用不可能なので、開放されるまでもうしばらく待ちましょう。

GASでGPT-4のAPIを使うサンプルコード

GPT-4のAPIが利用できることがPlayGroundで確認できましたら、Google Apps Script(GAS)でAPIリクエストを行いたいと思います。

実際にGoogle Apps Script(GAS)のスクリプトエディタを使って、APIキーの設定手順や、サンプルコードを説明します。

OpenAIのAPIでGPT-4のモデルをパラメータして生成結果をリクエストするGoogle Apps Script(GAS)のサンプルコード
function requestGpt4Completion() {
  //スクリプトプロパティに設定したOpenAIのAPIキーを取得
  const apiKey = PropertiesService.getScriptProperties().getProperty('APIKEY');
  //GPT-4のAPIのエンドポイントを設定
  const apiUrl = 'https://api.openai.com/v1/chat/completions';
  //GPT-4に投げるメッセージを定義(ユーザーロールの投稿文のみ)
  const messages = [{'role': 'user', 'content': 'Google Apps Scriptによる業務改善事例とサンプルコードを教えてください。'}];
  //OpenAIのAPIリクエストに必要なヘッダー情報を設定
  const headers = {
    'Authorization':'Bearer '+ apiKey,
    'Content-type': 'application/json',
    'X-Slack-No-Retry': 1
  };
  //GPT-4のモデルやトークン上限、プロンプトをオプションに設定
  const options = {
    'muteHttpExceptions' : true,
    'headers': headers, 
    'method': 'POST',
    'payload': JSON.stringify({
      'model': 'gpt-4',
      'max_tokens' : 2048,
      'temperature' : 0.9,
      'messages': messages})
  };
  //OpenAIのGPT-4にAPIリクエストを送り、結果を変数に格納
  const response = JSON.parse(UrlFetchApp.fetch(apiUrl, options).getContentText());
  //GPT-4のAPIレスポンスをログ出力
  console.log(response.choices[0].message.content);
}

GASスクリプトの内容は、ChatGPTをGASで実行するときと同様です。

OpenAIのAPIキーはコード上に直書きするのはよくないので、スクリプトプロパティに設定して読み込むようにしましょう。

GPT-4のAPIをGoogle Apps Script(GAS)でリクエストする際は、OpenAIのAPIキーはスクリプトプロパティに設定するのがおすすめ

OpenAIのChat機能のAPIエンドポイントとなるURLを指定し、GPT-4に送るメッセージを定義します。

※今回はシンプルにユーザーロールからのメッセージのみ送ります。

APIリクエストヘッダーに加えてパラメータを設定しますが、そこで「model」に「gpt-4」を設定します。

通常のGPT-4(8K版)は8000トークンまで扱えるので、max_tokensも大きめに設定できます。

最後にUrlFetchApp.fetchでエンドポイントURLとオプション情報を引数にすれば、GPT-4のAPIにリクエストされます。

GPT-4のAPIリクエストするGASサンプルコードを実行すると、実行ログに応答結果が返ってきます。

Google Apps Script(GAS)でGPT-4のAPIにリクエストした結果、かなり長文で詳しい内容を生成

GASの業務改善事例とそのサンプルコードを要求したところ、3つの業務改善事例の概要とサンプルコードをGPT-4が生成してくれました。

Google Apps Script(GAS)は、G Suiteの各種アプリケーション(Gmail、Googleドキュメント、スプレッドシートなど)を自動化するためのスクリプト言語です。以下に、GASを活用した業務改善事例とサンプルコードを示します。

1. **Gmailとスプレッドシートの連携**

    事例:問い合わせメールの自動整理・分類

    Gmailから特定のキーワードが含まれるメールを取得し、その情報をGoogleスプレッドシートに自動的に保存します。これにより、問い合わせメールの内容を一覧化し、それに基づく分析や対応の効率化を図ることができます。

    サンプルコード:
    
```javascript
    function extractFromGmail() {
      var threads = GmailApp.search('subject:問い合わせ from:(example@example.com)');
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

      for (var i = 0; i < threads.length; i++) {
        var messages = threads[i].getMessages();
        for (var j = 0; j < messages.length; j++) {
          sheet.appendRow([messages[j].getDate(), messages[j].getBody()]);
        }
      }
    }
```
2. **定期的なレポート作成の自動化**

    事例:スプレッドシートに保存されたデータをもとに、定期的なレポートをGoogleドキュメントで作成

    スプレッドシートのデータを読み取り、それをもとにレポートを作成し、Googleドキュメントに出力します。この処理を定期的に実行することで、レポート作成作業の自動化が可能です。

    サンプルコード:
    
```javascript
    function createReport() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var data = sheet.getDataRange().getValues();
      var doc = DocumentApp.create('Report');
      var body = doc.getBody();

      for (var i = 0; i < data.length; i++) {
        body.appendParagraph(data[i][0] + ': ' + data[i][1]);
      }
    }
```
3. **自動リマインダー機能**

    事例:スプレッドシート上の期限情報から自動でリマインダーメールを送信

    スプレッドシート上に記載された期限情報をもとに、期限日の数日前になったら自動でリマインダーメールを送信します。

    サンプルコード:

```javascript
    function sendReminder() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var data = sheet.getDataRange().getValues();
      var today = new Date();

      for (var i = 0; i < data.length; i++) {
        var deadline = new Date(data[i][0]);
        var daysLeft = Math.floor((deadline - today) / (1000 * 60 * 60 * 24));

        if (daysLeft == 3) {
          MailApp.sendEmail({
            to: 'example@example.com',
            subject: 'Deadline reminder',
            body: 'You have ' + daysLeft + ' days left until the deadline for ' + data[i][1],
          });
        }
      }
    }
```
これらの事例は比較的シンプルなものですが、Google Apps Scriptは非常に柔軟であり、複雑な業務流を自動化することも可能です。

変数の定義がvarを使っているので、少し古いプログラムですが、すぐに実用可能なGASコードを生成してくれました。

文脈に沿った回答をGPT-4から得るには

なお、GPT-4のAPIについても、ChatGPTと同じように文脈に沿った出力が可能です。

ChatGPTのAPIをGoogle Apps Script(GAS)でリクエストする方法を紹介した記事で、過去のやり取りを含めるやり方を解説しています。

前述のGPT-4のAPIをリクエストするサンプルコードは、ユーザーロール1つのみメッセージに指定していました。

そこに過去のユーザーロールのメッセージやGPT-4の応答結果であるアシスタントロールのメッセージを加えることで、文脈に沿った生成をしてくれます。

ただし、過去のやり取りを多く含めると、入力トークン数が増大し、API利用料が高額になるので注意が必要です。

※GPT-4のAPI利用料金については下記の記事で解説しています。

まとめ・終わりに

今回、一般公開されたGPT-4のAPIをGoogle Apps Script(GAS)でリクエストするコードを紹介しました。

GPT-4のAPIが誰でも使えるようになりましたが、手軽にAPI実行したい場合はGoogle Apps Script(GAS)がおすすめです。

OpenAIのAPI利用登録し、APIキーを発行すれば、開発環境等は不要でGPT-4のAPIリクエストをGASで試すことができます。

ただ、注意点として、GPT-4のAPIはまだアカウントによっては開放されていないケースがあります。

そのため、OpenAIのプレイグラウンドで、GPT-4のモデルが選択可能か確認しましょう。

GPT-4はChatGPTよりも高性能なので、色々な用途で利用が見込めます。

ぜひGoogle Apps Script(GAS)を活用して、GPT-4の便利な自動化事例を作っていきましょう。

ただし、GPT-4のAPIは利用料金がChatGPTよりもかなり高価なので、実行しすぎには注意です。