GPT-4o miniのAPIをGASでリクエストする方法【サンプルコード付】

2024年7月20日

OpenAIが新しい生成AI「GPT-4o mini」を2024年7月18日に発表しました。

GPT-4oのコスト効率を高めたGPT-4o miniは低コストでAPIが利用可能です。

そこでGoogle Apps Script(GAS)でGPT-4o miniのAPIリクエストする方法を解説します。

GPT-4o miniが7/18発表

2024年7月18日(アメリカ時間)にOpenAIが新しい生成AIのモデル「GPT-4o mini」を発表しました。

5月に発表した高速な応答能力を持つGPT-4oを低コストで実行できるようにした小型AIモデルです。

※GPT-4o miniの特徴や性能、API料金について以下の記事で解説しています。

Gemini 1.5 FlashやClaude3 Haikuなど他の生成AIの廉価モデルと比較しても、GPT-4o miniは優れたベンチマークを記録しています。

GPT-4o miniのAPIが利用可能

新しく公開されたGPT-4o miniは発表されたタイミングでAPI経由でも利用できるようになっています。

API経由で利用できることでGPT-4o miniを様々なサービスやアプリからリクエスト可能です。

業務改善や業務効率化に生成AIを活用する上でもAPI利用が必要になってきます。

GPT-4o miniはChatGPTよりAPIが格安

GPT-4o miniのAPIは低コストで利用料金が格安であることが特徴に挙げられます。

元のAIモデルであるGPT-4oと比較すると入力プロンプトのトークン数に応じて発生するAPI従量料金は、GPT-4o miniはたった3%です。

100万トークンという膨大なテキストをAPI経由で入力しても日本円で24円しかかかりません。

これは生成AIの中では驚愕の安さと言えます。

応答速度も高速なので、複数回に分けてAPIを実行してより精度の高い回答を得たり、大量のテキストを入力することも可能です。

さらに生成AIブームの火付け役となったChatGPTのAPIと比較しても安価です。

GPT-4o miniのAPI料金はChatGPTの半額以下になります。

そのため、現時点でOpenAIが提供する生成AIでは最安なのがGPT-4o miniです。

GASでGPT-4o miniのAPIリクエスト手順

すでにAPIとしてGPT-4o miniが利用できるので、Google Apps Script(GAS)でAPIリクエストする方法を解説します。

GPT-4o miniのAPIを利用するには、OpenAIのAPIの利用登録を行い、APIキーをまず発行します。

OpenAIのAPI利用登録とAPIキー発行は動画で解説しています。

APIキーが発行できれば、GASのコードから実行できる準備は完了です。

※APIキーは他の人が取得すると不正利用される恐れがあるため、秘匿しておきましょう。

GASプロジェクトにAPIキーを設定

基本的にGASでGPT-4oやChatGPTのAPIをリクエストするやり方と同じです。

まず事前に取得したOpenAIのAPIキーをGASプロジェクトのスクリプトプロパティに設定します。

1.新規のGASプロジェクトを開き、左メニューにあるプロジェクトの設定を選択します。

2.プロジェクトの設定を下にスクロールすると、スクリプトプロパティが表示されるので、スクリプトプロパティの追加をクリックします。

3.キーに「APIKEY」、値に事前にコピペしておいたOpenAIのAPIキーを貼り付けて保存します。

これでGASプロジェクトにOpenAIのAPIキーを設定できました。

これでGASのコードからGPT-4o miniにリクエストが可能となります。

GPT-4o miniのAPI実行するGASサンプルコード(テキストのみ)

GPT-4o miniのAPIをGoogle Apps Script(GAS)で実行するコードを、サンプルコードで説明します。

まずテキストプロンプトのみGPT-4o miniに送るGASのサンプルコードです。

function requestGpt4oCompletion() {
  //スクリプトプロパティに設定したOpenAIのAPIキーを取得
  const apiKey = PropertiesService.getScriptProperties().getProperty('APIKEY');
  //OpenAIのAPIで利用するモデルを選択する(gpt-4o-mini,gpt-4o)
  const model = 'gpt-4o-mini';
  //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);
}

3行目で先ほどスクリプトプロパティに追加したOpenAIのAPIキーを読み込んでいます。

5行目でAPIで利用するモデルとしてGPT-4o miniを定義しています。

この「gpt-4o-mini」を「gpt-4o」に書き換えると上位モデルの切り替えが可能です。

9行目でGPT-4oに入力するテキストのプロンプトを定義していて、このプロンプトを書き換えることでGPT-4oに自由に質問やリクエストが可能です。

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

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

GPT-4o miniのAPI実行するGASサンプルコード(テキスト+画像)

続いて、マルチモーダル入力として、テキストに加えて画像をプロンプトとして入力するGoogle Apps Script(GAS)のサンプルコードです。

function requestImageGpt4oCompletion() {
  //スクリプトプロパティに設定したOpenAIのAPIキーを取得
  const apiKey = PropertiesService.getScriptProperties().getProperty('APIKEY');
  //OpenAIのAPIで利用するモデルを選択する(gpt-4o-mini,gpt-4o)
  const model = 'gpt-4o-mini';
  //GPT-4oのAPIのエンドポイントを設定
  const apiUrl = 'https://api.openai.com/v1/chat/completions';
  //GPT-4oに投げるメッセージを定義(ユーザーロールの投稿文のみ)
  const message = 'GPT-4o miniへのテキストプロンプト';
  //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);
}

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

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

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

テストとしてポケモンの画像をGPT-4o miniに送り、ポケモンの名前を教えてもらうプロンプトをリクエストします。

3匹いるということも伝えず、画像から3匹それぞれの名前を正しく回答できるか検証です。 

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

その結果、きちんと画像内ポケモンの数や位置を認識して正しい名前を回答することができました。

ChatGPTのAPIは置き換え推奨

前述した通り、ChatGPTのAPIよりもGPT-4o miniのAPIの方が利用料が安くなっています。

さらに性能面でみても、GPT-4o miniはChatGPTよりも長文に対する応答精度が高いです。

性能・コストいずれの点でもGPT-4o miniの方が優れているため、ChatGPTのAPIを使ったチャットボットやアプリ、WebサービスはGPT-4o miniにモデルを置き換えることをオススメします。

ChatGPTからGPT-4o miniにAPIのモデルを切り替えるだけでAPI利用料のコストを60~70%近く削減可能です。

まとめ・終わりに

今回、GPT-4o miniのAPIをGoogle Apps Script(GAS)でリクエストする方法を紹介しました。

2024年7月18日(アメリカ現地時間)に発表されたGPT-4o miniはAPIもすでに公開されて利用可能です。

そこでAPIキーの取得からGASでAPIキーをセットしてリクエストする方法をサンプルコードで解説しました。

GPT-4o miniはAPI料金がGPT-4oはもちろん、GPT-4oよりも安く手軽に利用できます。

さらにAPIを簡単に扱えるGASを使えば、色々な業務効率化をGPT-4o miniで実現可能です。

今回紹介したGPT-4o miniのAPIをリクエストするGASサンプルコードを改良して、生成AIをAPIで活用しましょう。