【GPT Builder】GPTsを便利にカスタマイズするためのテンプレを作ってみた【MyGPTs】

技術

GPTsのAction機能を使わない方法での制御には限界を感じたので、そろそろActionsを解禁して最強のGPTを作るか、と思い立ちました。

ひとまず土台を作ってしまえば、あとはそれをカスタマイズすればいいだけなので、その土台を作ってみました。
できるだけカスタマイズ部分をGPTに思考停止丸投げで作れるようなところまで持っていきました。

 

目次

概要

簡単にまとめると、「GPT上でGPTのAPIを実行させる」ことにしました。
ぶっちゃけ直接他のサービスのAPIを直接GPTsで扱うの、なんだか拡張性が低そうに見えたので(これは素人考えかもしれないですが)

具体的に言うと、
ActionでGoogle Apps Script(GAS)を実行させることが可能=自作のスクリプトをChatGPT上で制御可能、つまりGPTのAPIを使ったスクリプトを扱える
ということから、GASをGPTsで扱うための設定を施しました。

※Google Apps Script(GAS)は、GoogleのクラウドサービスをAPIとして利用するためのツールです。GASを使用することで、Googleスプレッドシート、ドキュメント、カレンダー、メール(Gmail)などのGoogleサービスをプログラム的に操作できます。これにより、データの自動取得、更新、メールの自動送信、カレンダーの管理など、様々な自動化が可能になります。GASはJavaScriptベースで、Googleのクラウド上で動作するため、どこからでもアクセスして利用できます。byGPT

外部APIがActionsで使える→それをそのままGPTS上で使うより、GAS上で管理して、それに合わせたスキーマを作る方がカスタマイズ性高くね?という発想。
GAS自体はGPTに書かせればいいので、カスタマイズしまくった処理をGAS上で実行させて、それをChatGPTから制御すればよいかなと。

作り終わって思ったのが、これChatGPTというUI/UXを使った、GASで駆動するWebアプリの作成やな、て感想。

ChatGPTのUI/UX自体がGPTを使い慣れてる人からしたら使いやすいし、個人的にもChatGPT上でツールが完結するなら楽だよね、と思うし、多分使い方的にOpen AIもこういうのを想定しているんじゃないかと思った。

素人並み感想。

参考にさせていただいた記事

GPT-4のAPIをGoogle Apps Script(GAS)で実行する方法!(https://auto-worker.com/blog/?p=7941)
→GASでGPTのAPIを利用する部分を参考にさせていただきました。

Google Apps ScriptでGPTsのCustom ActionsのAPIを作ってみた(https://qiita.com/iconss/items/3db0761bb4cfe1422a6e)
基本的な部分はほぼこの記事に沿って行いました。ぶっちゃけ「こんなの知ってるよね」前提で高度で重要なことを雑把に書いてたり、逆に中身のないスカスカGPTs記事も多い中、この記事は素人でも理解できるように丁寧な説明をしてくれている希少な記事だと思いました。

事前準備

ChatGPT PlusでMyGPTを作れるようにしておく。
Open AIのAPI keyを用意しておく。
Googleのアカウントを用意しておく。

GASのスクリプトを書く

今回は例として「泣ける話」か「笑える話」をランダムでGPTに生成させるスクリプトを作ります。

・GAS上で「泣ける話」か「笑える話」を生成するスクリプトを作り、それをカスタムアクションから使えるようにします。
・GAS上では「泣ける話」か「笑える話」をランダムにプロンプトで要求して、GPTに生成させます。

上記条件で生成をお願いしました。以下GPTによる回答。

カスタムアクションを利用して「泣ける話」または「笑える話」を生成するGoogle Apps Script(GAS)スクリプトと、それをGPTsで使用する方法のチュートリアルを作成します。初学者や中学生でも理解できるように、各ステップを丁寧に説明いたします。
1. Google Apps Scriptスクリプトの作成

まずは、Google Apps Scriptで「泣ける話」または「笑える話」を生成するスクリプトを作成します。
ステップ1: Google Apps Scriptプロジェクトの作成

Googleドライブを開き、「新規」→「その他」→「Google Apps Script」を選択して新しいスクリプトプロジェクトを作成します。
プロジェクトにわかりやすい名前を付けましょう(例:StoryGenerator)。

ステップ2: OpenAI APIキーの設定

OpenAIのウェブサイトにログインし、APIキーを取得します。
Google Apps Scriptのエディタで、ファイル → プロジェクトのプロパティ → スクリプトのプロパティにAPIキーを「APIKEY」という名前で保存します。

ステップ3: スクリプトの記述

この関数は、「泣ける話」または「笑える話」をリクエストし、GPTから生成された応答を取得します。

function doPost(e) {
  const apiKey = PropertiesService.getScriptProperties().getProperty('APIKEY');
  const apiUrl = 'https://api.openai.com/v1/chat/completions';

  // 「泣ける話」または「笑える話」のプロンプトをランダムに選択
  const storyType = Math.random() < 0.5 ? '泣ける話' : '笑える話';
  const messages = [{'role': 'user', 'content': storyType + 'を教えてください。'}];

  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
    })
  };

  const response = JSON.parse(UrlFetchApp.fetch(apiUrl, options).getContentText());
  return ContentService.createTextOutput(
    JSON.stringify({ "story": response.choices[0].message.content })
  ).setMimeType(ContentService.MimeType.JSON);
}

ステップ4: スクリプトの実行

スクリプトエディタの上部にある実行ボタンをクリックして、関数を実行します。
初回実行時は、OpenAIへのアクセスを許可する必要があります。



※スクショは許可の途中までしか用意しませんでしたが、これ以降は見たままの流れでできるはずです。

GPTはここまで教えてくれましたが、GPTsから利用するためにはデプロイも行わないといけません。

右上のデプロイを実行し、

ウェブアプリとしてデプロイする。

全員使えるようにしておかないとGPTsから使えないので注意。

GPTsのアクションを設定する

とりあえずざっくりとアイコン、GPT名、インストラクションを書く。インストラクションで必ずアクションを実行するように言っても、たまに守らない。ここはプロンプト入力時に指示すればいいので、とりあえず「こういうGASがあるから実行してね」的なことを書いておけばいい。カスタマイズしたらその内容に合わせて書けばいいと思うけど、正直こいつが中身を知っている必要はないから、単にGASを実行することだけ指示すればいいのでは?と思っている。

重要なのはActionを設定することだけだ。

スキーマの入力部分に以下のように入力。

{
  "openapi": "3.1.0",
  "info": {
    "title": "Story Generator",
    "description": "Generates either a sad or funny story",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://script.google.com"
    }
  ],
  "paths": {
    "/macros/s/[ここにデプロイIDを設定]": {
      "post": {
        "description": "Generates a story",
        "operationId": "generateStory",
        "responses": {
          "200": {
            "description": "A successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "story": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

このスキーマというものが素人マンのハードルになるんだけど、GASをカスタマイズした後に、そのGASのスクリプトとセットで上のスキーマをGPTに渡して、「適したスキーマに書き換えて」すればよいと思う。

あと、プレビューで会話して実行させるとデバッグ情報が出てくるから、上手く動かないときはその情報もGPTに渡してあげれば上手く書いてくれる。
実際、最初上手く実行できなかったけど、デバッグ情報をコピペしてスクリプトとスキーマをGPTにぶん投げたら、動くやつに書き換えてくれた。
素人はこういう書き換えの応用が柔軟にできなくてつらいので、とにかく手持ちの情報をいっぱい揃えてGPTにぶん投げるという姿勢が必要だなぁと感じた。

PathのスクリプトURLは、自分のGASのデプロイ管理からURLをコピーできるので、そこの/macros以降を入力すればOK。

GPTにGAS経由でGPTのAPIを使わせることができる

あとは実際に試してみるだけです。

アクションの実行時には許可を求められるので、クリックして許可。

 

GPTsでGASを実行して、GAS上でGPTのAPIを叩いて取得した結果を、GPTs上で見れました。成功。

まとめ

というわけで、この記事で紹介したGASのスクリプトと、Actionsで使うスキーマをカスタマイズすれば、GPTs上で色々やりたい放題できるようになります。
多分PythonとかNodeとかでAPIを自作したらもっと複雑なこともできるのかもしれませんが、多分素人が手を出すならGASが手っ取り早いと思います。
デプロイまでが簡単だし、管理考えなくていいし。
それでいてGAS自体がスプシとかと組み合わせれば、そこそこいろんな処理をやれるんで、機能は充分だと思います。

ということで、GASを活用して最強のGPTsを作っていきたいと思います。

※なお、今回のGPTsはGPTのAPIを使っているので、コストの都合上公開はしません。
※あと、参考元の記事を見ていただければ分かるんですが、Actionを利用したGPTsはプライバシーポリシーを設定しないと他人に公開できません(自分専用なら設定しなくて問題なし)。詳しくは参考記事の方をご確認ください。

コメント

タイトルとURLをコピーしました