トピック

わりと簡単? ChatGPTの「GPTs」でオリジナルアプリを作る 外部API連携も

OpenAIが提供するAIチャットサービス「ChatGPT」に、オリジナルのAIチャットを自分で作れる「GPTs」という機能が追加されました。11日からは公式の「GPT Store」が開始し、作成したAIチャット(アプリ)の公開も可能になりました。アプリの有料販売については後日スタートとなっていますが、スマートフォンのアプリストアのような一大市場に成長する可能性もありそうです。今回はGPTsによって具体的にどんなものが作れるのか、実例を交えて紹介していきたいと思います。

オリジナルのAIチャットを作れるメリットとは

オリジナルのAIチャット(GPT)を作れると書きましたが、そもそもChatGPT自体、用途を問わず万能的に使えるため、たとえばある目的に特化したGPTを自作したところであまり意味がないのでは、と思うかもしれません。ChatGPTに入力するプロンプト(質問や指示)を工夫すれば、多くのことを誰でも実現できてしまうからです。

従来のChatGPTはプロンプトの工夫次第で汎用的に使える

ただ、それはプロンプトを適切に扱えるスキルがあればの話。ChatGPTが流行し始めた当初は、他の人が作り上げたプロンプトをマネしたり、SNSなどで共有されたものを単純に貼り付けて使ったりすることもあったと思います。ChatGPTではプロンプトをうまく扱えるかが一番の肝で、ここでつまづくと「難しい」とか「使えない」といった感想になってしまいがちです。結果、ChatGPTを駆使してどんどん便利なツールを作る人と、そうでない人との差が開いていってしまう状況になりました。

しかしGPTsの登場によって、この状況が2つの側面から改善する可能性があります。1つは「自分の欲しい機能を実現するGPTを簡単な手順で作成できる」こと、もう1つは「作成したGPTを公開できる」ことです。

ネイティブの先生を相手にしているかのように外国語学習できるものや、アドベンチャーゲームのようなものを作成することも可能ですし、あるいは他の人が作成した公開されているGPTをすぐに使うこともできます。

他のユーザーが作成したGPTのリンクを知っていれば、すぐに使い始められる

一番わかりやすいGPTの例としては、たとえば凝ったプロンプトをあらかじめ設定しておいて、ユーザー側は単純な質問や指示をするだけで特定用途に特化したGPTを活用できるようにする、というものです(似たものとして「カスタム指示」という機能が以前から用意されていますが、使えるのは1パターンのみという制約があります)。

先ほどの例で言えば、あらかじめ「外国語学習の先生の役割、応答の仕方、学習の中身と手順」などが設定されていれば、ユーザー側はそれらをいちいちプロンプトとして入力することなく、すぐに外国語会話のトレーニングを開始できます。もしくは名前を入力するだけで、自分が主人公のテキストアドベンチャーゲームを遊べたりもするでしょう。

あらかじめプロンプトを設定することで、ユーザーがそれを省けるだけではありません。GPTsでは何らかのファイルをアップロードして、そのデータを元に返答するようなGPTも作れますし、外部のサーバーと通信してデータ取得や分析などを可能にするAPI連携も可能です。

そうすることで通常のChatGPTでは実現不可能な機能をもつGPTを作成できます。郵便番号データと住所をひもづけるデータ(またはAPI)とを連携することで、入力した住所から郵便番号を調べられるようなGPTも考えられます。

住所から郵便番号を調べられるGPTはすでに一般公開されている

ステップ・バイ・ステップでGPTを作れる「GPT Builder」

それでは、具体的にどうやってオリジナルのGPTを作成していくのか、順を追って説明していきたいと思います。ちなみにGPTsはChatGPT Plus(月額20ドル)の登録ユーザー向けに提供されている機能のため、有償登録を忘れないようにしましょう。

まずはメニューから「探索する」を選択します。ここにはOpenAIが作成したGPTがいくつか並んでいます。

画像生成の「DALL・E」や、データ分析・コード実行を可能にする「Data Analysis」といった、以前からあるChatGPTのオプション機能が見えることからもわかるように、これらもGPTsの仕組みで実現しているようです。他にも好きな食材からレシピを提案するGPT、アップロードした画像を加工するGPTなどもあるので、最初にこれらで体験してみるのもいいかもしれません。

メニューから「探索する」を選択
OpenAIが作成したGPTが並んでいる

GPTを自作するには、ページ最上部にある「Create a GPT」を選択します。するとページ左側に「GPT Builder」が、右側に作成途中のGPTを試せるプレビュー画面が現れます。GPTはこのGPT Builder(Createタブ)を利用する方法と、後ほど説明する手動設定の方法(Configureタブ)の2通りで作成していくことになります。

ページ上部の「Create a GPT」を選択
「GPT Builder」とプレビュー画面が表示される

GPT Builderは初めてGPTsに触れる人におすすめです。ChatGPTと同じようにチャットでやりとりしていくだけで、自分の望むGPTができあがるようになっています。ここでは試しに「Web記事の内容を画像で要約するツール」を作ってみたいと思います。

最初に「どんなものを作りたいのか」を聞かれるので、「記事を画像で要約するものを作りたい」と日本語で答えます。GPT Builderは英語で返答しますが、「日本語にしてください」と入力すれば日本語に切り替わるので、最初に指示しておくといいでしょう。

「記事を画像で要約するものを作りたい」と回答

続いて作成するGPTの名前を提案してくれるので、それでよければ「OK」を、別の名前にしたければ別案を提示してもらうか、自分で入力します。さらにDALL・Eの機能を使ってGPTのプロフィール画像(アイコン)を生成してくれるので、これもそのまま採用するか、別案を提示してもらいましょう。

GPTの名前を英語で提案してきたので、こちらから別案を出す。同時に「日本語でやりとりしたい」旨も指示した
プロフィール画像も提案してくれた

今回は「記事を画像で要約」するツールということで、GPT Builderからは追加の質問として「扱うことの多い記事の種類」を聞かれました。ここはインプレスのWatchシリーズの記事を想定しているので「ニュース記事」と回答。次の「GPTとして避けるべきことや強調すべきこと」があるかどうかという質問には、特に思い当たることがないので、とりあえず「日本語を使用して」と要望しました。そうすると、プレビュー画面にあった英語も日本語に切り替わります。

扱うことの多い記事の種類は「ニュース記事」とした
ユーザーが使うときは日本語でやりとりするように要望

最後にやり取りするときの「口調」を決めればひと通りの設定が完了し、プレビュー画面で動作を確認できる状態になります。もちろん、さらに要望を追加して挙動を調整していくことも可能です。

筆者としてはより簡単に使えるように、ユーザーが記事URLを入力するだけで、そのページ内容を読み取り、要約文とそれを画像化したものを見られるようにしました。

やりとりするときの口調を決めてほぼ完成
具体的な挙動を細かく調整していく

さっそくプレビュー画面にURLを入力して動作確認します。問題なくイメージ画像と要約文が表示されましたが、こうしたオリジナルのAIチャットがわずか数ステップの質問と回答を繰り返すだけで完成してしまうのは驚きです。最終的に画像はイラストタッチとし、起承転結を意識した4コママンガ風になるようにしましたが、自分の思い描くものに近づける作業にもさほど手間はかかりません。

プレビューで動作確認。無事、イメージ画像と要約文が表示された

ただ、GPT Builderのチャットでやりとりする形だと、要望を効率よく反映できない場合もあります。そんなときは「Configure」タブで各種要素を手動設定していくこともできます。GPT Builderを通じて自動生成されたプロンプトが「Instructions」に表示されているので、ここを調整して挙動をカスタマイズしていきましょう。

「Configure」タブでは手動でプロンプトなどを設定できる

また、GPTのなかで使用できる機能として「Web Browsing」「DALL・E Image Generation」「Code Interpreter」の3つが用意されており、有効・無効を切り替えられるようになっています。今回の「記事を画像で要約」では、記事にアクセスするために「Web Browsing」が、要約画像を生成するのに「DALL・E」がそれぞれ必要になるので、いずれも有効にしています(デフォルトで有効になっています)。これらの機能が必要ないGPTを作っているなら、無効にしておいた方が狙い通りの挙動になるはずです。

最終的にイラストタッチで、4コママンガ風になるようにした

GPTsアプリ「記事を画像で要約」

・記事を画像で要約
https://chat.openai.com/g/g-EmVeF12tM-ji-shi-wohua-xiang-deyao-yue

アップロードデータで独自の処理を行なうGPTを作る

一歩進んだGPTも作成してみましょう。先ほどファイルをアップロードして、その内容をもとに回答するGPTも作れると書きました。ちょうど筆者が個人的に校正ツールを開発していることもあるので、そこで使っているデータを一部流用してみたいと思います。GPTの名前は「正しい固有名詞をゲット(ファイル版)」です。

「正しい固有名詞をゲット(ファイル版)」

このGPTは、ユーザーが気になる固有名詞を入力すると、データから検索して正確な表記を返すというものになります。たとえば「iphone」と入力すると「iPhone」を返しますし、「nvidia」なら「NVIDIA」となります。「nVidia」と入力してもちゃんと「NVIDIA」になりますし、「impresswatch」は「Impress Watch」になります。

データの中身

通常のChatGPTでもある程度正しい表記の固有名詞を答えてくれますが、基本的には統計的に正しいと思われる表現を推測して返す仕組みなので、確実に毎回正しいとは限りません。

しかし、静的なデータをもとに調べるのであれば、そういった“ブレ”みたいなものは発生しません。ユーザーとしてはわざわざ固有名詞を1つ1つ入力して確認する手間がかかるので、実用的なGPTかと言われると微妙ではあるものの、タイポを防ぐのに少しは役に立ってくれる……と思います。

外部データは「Configure」の「Knowledge」からアップロードできます。今回はテキストデータですが、PDFや画像にも対応しています。データをどうしてもPDFでしか用意できない場合、あるいは特定の画像のタッチをもとに画像生成するようなGPTを作りたいときにも活用できそうです。

正確な固有名詞を取得するためのデータを「Configure」の「Knowledge」でアップロード

アップロードするだけではGPT側が何をすればいいのか判断できないので、「Instructions」でこのGPTの目的と、データの内容、扱い方を説明します。これでほぼ完成です。プレビューで動作確認してみると、きちんと正しい表記を回答してくれました。おまけでその固有名詞の説明も補足してくれています。

「Instructions」でデータのフォーマットや扱い方などを説明する
固有名詞を入力するとデータ分析の処理が走り、10~数十秒で正しい表記を回答してくれる

データ分析の処理が入るためか、1回の質問につき10秒から遅いときは数十秒かかります。やはり実用的かどうかは微妙なところですが、用意するデータによってはかなり強力な機能を提供できそうです。

外部APIと連携するGPTを作る

アップロードしたデータではなくAPI連携で同じことを実現する方法も試してみます。「Configure」の画面には「Actions」という機能があり、ここで「新しいアクションを作成」ボタンを押すことで、外部のAPI(サーバー)と連携するための設定が行なえます。

「Configure」の「新しいアクションを作成」ボタンからAPI連携の設定へ

たとえば一般公開されている天気予報APIと連携して、ユーザーが地域名を入力するだけで該当エリアの詳細な気象情報を回答する、みたいなものが考えられます。そういった既存のAPIを利用することもできますし、自分で開発した独自のAPIを扱うことももちろん可能です。

「Actions」の画面では、APIにアクセスするための認証の方法、GPTがAPIを呼び出すときの挙動を決める定義(Schema)などを設定していきます。認証はAPI KeyやOAuthに対応しますが、今回は自作APIということもあるので簡単にするためNone(なし)としました。

「Actions」の設定画面
認証方法はAPI KeyとOAuthを選べる

SchemaはOpenAPIというAPI仕様に沿った形式で記述するようになっており、それに沿ったAPIであればその定義ファイルが存在するはずなので、貼り付けるか、ダウンロードURLを指定すればいいでしょう。OpenAPI仕様のAPIでなくても、プルダウンからひな形を選び、呼び出すAPIの仕様に合わせてパラメーター等を記入していけばOKです。

「Schema」は右側にあるプルダウンからテンプレートを選択し、それをもとに設定していける

筆者が作っている校正ツールはもともとエンジン部分をAPI的に設計していたので若干の修正で対応することができました。「Configure」の「Instructions」では、どういった機能をもつAPIなのか、どんなデータを返すのか、それをどう扱えばいいのかなどを指示しておきます。APIが返すデータは特定のフォーマットでなければならない、というような制約は基本的にない(Instructionsで説明すればよい)ので、自作に限らず既存のAPIとの連携は難しくなさそうです。

設定したSchemaの内容
「Instructions」はごくシンプルなものになった
こちらはプログラムコードの一部。多少の修正で対応できた
プレビュー画面ではGPTから送信されるデータの詳細な中身やエラーメッセージを確認可能。問題があったときの原因特定にもある程度対応しやすい

レスポンスは数秒程度で、同じデータ・同じ目的でもアップロードしたファイルよりAPI連携の方が高速に正しい表記が得られました。API側でさほど重い処理をしていないことや、やりとりするデータが軽いこともありますが、アップロードされたファイルの解析がGPT側でかなり複雑かつ負荷の大きい処理になっているのかもしれません。場合にもよるものの、快適に使えるGPTを目指すのであればAPI連携もぜひ試しておきたいところです。

なお、API連携するGPTは、使用時にAPI提供元を信頼するかどうかを問う確認ボタンが表示されます。APIがGETでデータ送信するのであれば「常に許可する」を選ぶことで確認は最初の1度だけになり、POSTであれば毎回必ずボタン操作が必要です。使い勝手を考えるとできるだけGETリクエストにしたいところですが、こればかりはAPIが処理する内容にもよってくるでしょう。

APIがGETリクエストで通信する場合は「許可する」の他に「常に許可する」も選択可能
「許可」や「常に許可する」を選ぶと処理が開始し、数秒後には返答してくれる

GPT開発時に注意したいこと

こうして作り上げたオリジナルのGPTは、自分だけで使うこともできますし、リンクを共有して他の人に使ってもらうこともできます。

また、「公開」を選択して保存することで、2024年初め頃のオープンが予定されている公式ストアに掲載され、世界中の人たちに(おそらく有料でも)提供できるようになります。GPTの販売で利益を上げる個人や企業が登場することもありえるでしょう。

他人も使えるGPTとして保存可能。API連携したものを共有、公開する場合はプライバシーページの設定が必須となる

ごく簡単な手順で完成してしまうオリジナルGPTですが、作成するときには注意したいことも1つあります。それは、GPTsにおけるチャットもGPT-4の制限が影響することです。2023年12月現在、GPT-4でのやりとりは3時間あたり40回の制限が設けられていますが、これがそのままGPTsにも適用され、頻繁に動作確認しているとあっという間に上限に達して開発を進めにくくなります。企業ユーザーで本格的にGPTs開発をしたいのであれば、さらに上のプランである「ChatGPT Enterprise」(要問い合わせ)の契約を検討するべきかもしれません。

GPT-4の制限はGPT開発時にも適用されることに注意
日沼諭史

Web媒体記者、IT系広告代理店などを経て、フリーランスのライターとして執筆・編集業を営む。AV機器、モバイル機器、IoT機器のほか、オンラインサービス、エンタープライズ向けソリューション、オートバイを含むオートモーティブ分野から旅行まで、幅広いジャンルで活動中。著書に「できるGoProスタート→活用 完全ガイド」(インプレス)、「はじめての今さら聞けないGoPro入門」(秀和システム)、「今すぐ使えるかんたんPLUS+Androidアプリ 完全大事典」シリーズ(技術評論社)など。Footprint Technologies株式会社 代表取締役。