GASでGPT-4oのAPIの利用方法!画像含むマルチモーダル入力のサンプルコード

OpenAIが2024年5月に発表したGPT-4の後継モデルであるGPT-4oは音声にも対応したマルチモーダルな生成AIです。

GPT-4oはChatGPTのアプリから実行する以外にAPIも用意され、プログラム経由で実行することができます。

そこで、Google Apps Script(GAS)でGPT-4oにリクエストする方法をサンプルコードを使って解説します。

2024年5月にGPT-4oが登場

2024年5月13日(現地時間)にOpenAIが発表した新しいモデルです。

2024年5月13日にOpenAI社は音声入力にも対応したテキスト・画像・音声のマルチモーダルな生成AIである「GPT-4o」を発表

GPT-4oはテキスト、音声、画像を統合的に処理可能なマルチモーダルAIとなっています。

これまでChatGPTは音声入力も可能でしたが、Whisperと呼ばれる別の音声認識用モデルを使っていました。

しかし、GPT-4oになってテキストと画像に加えて、音声も処理できるモデルとなっています。

GPT-4oのメリットは応答速度

GPT-4oはこれまでのGPT-4に比べると応答速度が格段に向上しています。

ChatGPTよりも高精度な応答をするGPT-4は生成結果を出力するまでに時間がかかるのがネックでした。

しかし、GPT-4oではGPT-4と比較すると、劇的に処理速度が速くなり、あっという間に応答が返ってきます。

GPT-4oの高速化モデルによって低遅延で音声も生成できるようになりました。

音声での生成AIとのやりとりでも、自然なやりとりができるほどとOpenAIはアピールしています。

GPT-4oがAPIでも利用可能

OpenAIが2024年5月に発表したGPT-4oはAPIとしても利用可能です。

APIとして利用することで、GPT-4oを自社サービスやアプリに組み込むことができます。

さらにGPT-4oのAPI利用料金はかなり安価で、GPT-4よりも1トークンあたりの利用料も安いです。

GPT-4oとGPT-4とChatGPT(GPT-3.5-Turbo)の料金比較でGPT-4よりもGPT-4oが50%安い

そのため、低コストで高性能な生成AIを活用できるようになっています。

※ただし、GPT-4oのAPIでは強みである音声入力は現時点で対応していません。

GASでGPT-4oのAPIを利用する方法

Google Apps Script(GAS)でGPT-4oのAPIを利用する方法を解説します。

基本的な方法は2023年に登場したGPT-4と同じようにAPIリクエストして実現可能です。

※GPT-4のAPIをGASでリクエストする方法は下記の記事で解説しています。

前述した通り、GPT-4oのAPIでは入力はテキストと画像のみ対応しており、音声には未対応です。

そこで、今回はGPT-4oにプロンプト(テキスト)のみ送るやり方と、プロンプト+画像を送るやり方をサンプルコードを使って解説します。

GPT-4oのAPIキー発行方法

GPT-4oをAPI経由で利用するには、OpenAIのAPIの利用登録を行い、APIキーを発行する必要があります。

GPT-4oのAPIキー発行方法はChatGPTやGPT-4と同様で、以下の方法で利用登録とAPIキー発行できます。

上記の手順を参考にまず、OpenAIのAPIキーを発行しておきましょう。

GPT-4oにプロンプトのみ送るサンプルコード

Google Apps Script(GAS)でGPT-4oにプロンプトを送り、応答結果をログ出力するサンプルコードを解説します。

GASスクリプトエディタで新しいプロジェクトを作成したら、事前準備として、GASのスクリプトプロパティにGPT-4oのAPIキーをセットします。

GPT-4oのAPIをGoogle Apps Script(GAS)でリクエストできるようスクリプトプロパティにAPIキーを設定

左メニューのプロジェクトの設定からスクロールすると表示される「スクリプトプロパティ」に「APIKEY:"OpenAIのAPIキー"」を追加して保存します。

GPT-4oをAPI経由でテキストプロンプトを入力し、応答結果を出力するGASサンプルコードは以下の通りです。

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

サンプルコードの2行目でスクリプトプロパティに追加したAPIキーを読み込んでいます。

その後APIで利用するモデルとしてGPT-4oを定義しています。

この「gpt-4o」を「gpt-3.5-turbo」や「gpt-4」に書き換えると使用するモデルの切り替えが可能です。

9行目でGPT-4oに入力するテキストのプロンプトを定義しています。

このプロンプトを書き換えることでGPT-4oに自由に質問やリクエストが可能です。

また、userロールやassistantロールのテキストを追加すれば、過去のやり取り・文脈に則した応答結果を得ることもできます。

APIのパラメータやは前段で紹介したGASによるGPT-4のAPIリクエストと同じなので、詳細な説明はそちらを参照してください。

GASのサンプルコードの関数である「requestGptCompletion」を実行すると、実行ログにGPT-4oの応答結果が出力されます。

Google Apps Script(GAS)でGPT-4oにテキストプロンプトのみ入力して、応答結果をログ出力するサンプルコードの関数を実行すると、GPT-4oからの生成AIの生成結果が実行ログに出力

このようにGASを使ってGPT-4oにAPI経由でリクエストして応答結果が得られました。

テキストのプロンプトで指示した内容に応じて、GPT-4oはAPIでも高精度な応答を高速に出力してくれます。

GPT-4oにプロンプト+画像を送るサンプルコード

続いてGPT-4oのAPIにプロンプトだけでなく、画像も一緒に送るGoogle Apps Script(GAS)のサンプルコードを解説します。

以下がGASでGPT-4oに画像とテキストをAPIリクエストするサンプルコードです。

function requestImageGptCompletion() {
  //スクリプトプロパティに設定したOpenAIのAPIキーを取得
  const apiKey = PropertiesService.getScriptProperties().getProperty('APIKEY');
  //OpenAIのAPIで利用するモデルはgpt-4oかgpt-4-turbo
  const model = 'gpt-4o';
  //GPT-4oのAPIのエンドポイントを設定
  const apiUrl = 'https://api.openai.com/v1/chat/completions';
  //GPT-4oに投げるメッセージを定義(ユーザーロールの投稿文のみ)
  const message = 'GPT-4oへのテキストプロンプト';
  //GPT-4oに投げる画像URLを設定する
  const image = '画像URL';
  //OpenAIのAPIリクエストに必要なヘッダー情報を設定
  const headers = {
    'Authorization':'Bearer '+ apiKey,
    'Content-type': 'application/json',
    'X-Slack-No-Retry': 1
  };
  //GPT-4oのモデルやトークン上限、プロンプトをオプションに設定
  const options = {
    'muteHttpExceptions' : true,
    'headers': headers, 
    'method': 'POST',
    'payload': JSON.stringify({
      'model': model,
      'max_tokens' : 2048,
      'temperature' : 0.9,
      "messages": [{
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": message
          },
          {
            "type": "image_url",
            "image_url": {
              "url": image
            }
          }
        ]
      }],
      })
  };
  //OpenAIのGPT-4oにAPIリクエストを送り、結果を変数に格納
  const response = JSON.parse(UrlFetchApp.fetch(apiUrl, options).getContentText());
  //GPT-4oのAPIレスポンスをログ出力
  console.log(response.choices[0].message.content);
}
Google Apps Script(GAS)でGPT-4oにテキストプロンプトに加えて画像も入力して、応答結果をログ出力するサンプルコード

前段のプロンプトのみ送るサンプルコードを改良しています。

今回は画像URLを送ってリクエストする方式で、11行目に画像URLを定義しています。

※画像リクエストはURLで指定する他に画像BASE-64でエンコードして送るやり方もありますが、今回はシンプルな方法で試しています。

APIに送る際のパラメータの部分(27~41行目)でmessagesの中にプロンプトのテキストに加えて、画像URLをセットしています。

プロンプトや画像URLを設定して「requestImageGptCompletion」を実行すると、画像とプロンプトに対する応答結果がログ出力に表示されます。

Google Apps Script(GAS)でGPT-4oにテキストプロンプトに加えて画像も入力して、応答結果をログ出力するサンプルコードの実行結果で、添付したチラシ画像からお買い得な商品と価格を日付ごとに解析して応答

今回はチラシ画像と特売品を読み取る指示のプロンプトを送ったところ、チラシ画像を解析して内容を読み取ってくれました。

GPT-4oのAPIで画像解析したスーパーマーケットのチラシ

スーパーマーケットの特売情報のチラシですが、日付ごとのお買い得商品をリストアップしてくれています。

一部誤った商品を出力しているものもありますが、きちんとチラシの内容を読み取って半分以上正しく商品と価格を認識できています。

チラシはOCRだけだと情報量が多いため商品と価格の対応関係の解析が難しいですが、GPT-4oを活用すればチラシからお買い得商品の抽出ができそうです。

まとめ・終わりに

今回、2024年5月に発表されたOpenAIの新しいモデルGPT-4oのAPIをGoogle Apps Script(GAS)でリクエストする方法を紹介しました。

これまでのChatGPTやGPT-4と同じように、GPT-4oもAPI経由でプロンプトを送り、応答結果を得ることができます。

GPT-4に比べ、応答速度はかなり向上しています。

またプロンプトに加えて画像も一緒にリクエストして、画像の内容を解析してもらうことも可能です。

GPT-4oによってOpenAIの生成AIはますます進化しているので、API経由でGPT-4oを使って色々なサービスやアプリに活用してみるのがおすすめです。