2023年11月6日、OpenAI社にとって初のデベロッパーカンファレンスとなる「DevDay」での衝撃の発表から早半年。もう半年。ビックリするほど世間に浸透しない謎のAI機能「GPTs」。半年前にリリースされた時は、AI関係の方々にそれはもう大いに注目され、一部では大変大きな話題となり、そして割とすぐに忘れ去られてしまいました。あっという間でした。
IT関係の方なら名前くらいは聞いたことがあると思いますが、その辺の飲み屋でその辺の人に聞いたらまず知りません。Qiitaでも「GPTs」のタグが付いた記事はたったの139個です……
そんな謎の機能と「プロンプトエンジニアリング」とかいう胡散臭い謎技術を半年間ひっそり研究している謎のプロンプト職人の僕です。謎だらけですね。今日はそんな謎の真相に迫りたいと思います。
その謎を探るべく、我々はジャングルの奥地へと向かった。プロとして────
GPTsとは
GPTsとは、ChatGPTのPlusプラン(20ドル/月)で利用できる「ChatGPTをカスタマイズしてオリジナルのAIチャットボットが作成できる機能と、そのプロダクト」の総称です。「My GPTs(マイGPT)」「Custom GPT(カスタムGPT)」なんて呼び方もされます。作成機能と制作者のことは「GPT Builder(GPTビルダー)」と呼んだり呼ばなかったりします。まだ何一つ定着していません。「GPTs」も日本語に直訳しちゃうと「GPT」なので、LLMのモデル名(GPT-4o)と区別が付けづらいネーミングになっております。基本的に「GPT」と呼ぶ場合は、カスタムモデルのことだと思って下さい。
作成したGPTはChatGPT内の「GPT Store(現在の表記:GPTを探す)」のページで公開することができます。(非公開、URLを知っている人にだけ共有することも可能)余談ですが、恐らくOpenAIはスマホの「アプリストア」のようなことがやりたいのかなと思っています。(GPTのことを「カスタムチャットボットアプリケーション」という言い方もするので)
GPTsでは、名前、説明(Description)、指示(Instructions、システムプロンプト)、会話の開始者(?)(Conversation starters、初期メッセージの設定)、知識(Knowledge、RAG)、アクション(サードパーティAPIの利用)、有効化する機能(ウェブ参照(最新:ウェブ検索)、DALL·E 画像生成、コードインタープリターとデータ分析を設定することで、ChatGPTに様々なシチュエーションに合わせた特殊な処理・応答をさせることが可能になります。
まぁそのー、Azure OpenAI ServiceとかOpenAIのAPIを自前のアプリで動かしたり、例えば「Dify」などのLLMアプリ開発プラットフォームを利用すれば、ほとんど同じことができますが、ノーコードで非常に手軽に高度な機能を持ったチャットボットの作成・公開・使用ができて、他の方が公開しているGPTも利用できるというのがポイントです。あとAPI使うより絶対安いです。
そしてこの度、ついに無料登録ユーザーもGPTsを使用できるようになりました。(使用のみで作成はできません)なぜかアカウントごとに少しづつ開放されているらしく、海外ではもう使える人が出てきているそうです。
現在、無料登録ユーザーがGPT Storeにアクセスすると以下のような画面になります。
「数週間以内に無料ユーザーも利用できるようになる」と書いてありますね。GPTsを試してみたい無課金ユーザーの方はもうしばらくお待ち下さい。
GPTsで作れるもの
「ChatGPTは使い物にならない」なんて話を目にすることがありますが、例え最新のGPT-4oでも、GPT界でヤツは常に最弱です。標準のChatGPTは、OpenAIが考える最も標準的・汎用的な設定になっていますので、言わば器用貧乏で何一つ特化型カスタムGPTには勝てません。あくまで「素体」です。
以前noteに書いたネタですが、標準のChatGPTは、ヨーグルトの無糖プレーン味、無改造のミニ四駆、新入社員、建売住宅、国産メーカー製パソコン、フルノーマル、スタンダードデッキ、バランスタイプ、マイクラのバニラのようなものです。改造した方が強いに決まっています。GPTsは「AI界のチートツール」と言っていいでしょう。
GPTsでどんなものが作れるのか、私の作品を例に挙げるとこんな感じです。
- 文章を読んでネット炎上リスクを分析するAI
- 小中高の学習指導要領を理解し家庭教師として最適化されたAI
- ECサイトなどで商品のセールス・接客をしてくれるAI
- お笑い芸人として漫才をするAI
- 議論やレスバに特化した論破王AI
- 有識者として会議で意見を述べてくれるAI
まぁその、変なおじさんが作ったものなのでどれもちょっと変わっていますが、使って頂ければひっくり返るくらい驚いてもらえると思います。実際に飲み屋の椅子から転げ落ちた人がいました。
LLMの性能を測るのは非常に難しいんですが、とりあえず現状最高峰のLLMは「GPT-4o」ということになっております。GPTsの中身もGPT-4oです。ですので、GPTsで作るAIは「世界最高クラスの性能を持っている」ということになります。最高のLLMを業務に最適化する訳ですから。
もちろん制作者のプロンプトエンジニアとしての腕前や設計も重要ですが、例えば先程ご紹介した「ネット炎上リスク分析AI」は、まぁ言っちゃあなんですけど世界一です。あくまで客観的に考えて、世界一的確にネット炎上リスクを分析できるAIだと断言できます。ローカルLLMでは再現できません。そんなスゴイものを手軽に作れてしまうのがGPTsという機能です。
私が作成した、生成AIの限界を超える珠玉のGPTsはこちらのページにまとめてあります。もし良かったらお試しください。普通に話しかけるだけでOKです。もし使い方に迷った時は「あなたの特徴と使い方を教えて」と聞いてみてください。
GPTsの作り方
では早速作っていきましょう。まずブラウザでChatGPTを開いて、右上のアカウントからメニューを開き「マイ GPT」をクリックしてください。何も反応しないと思います。OpenAI側のミスで、UIのリニューアル後から反応しません。仕方がないので、左サイドバーの「GPT を探す」をクリックしてください。(読み込みエラーで表示されないことがよくありますので、その場合は再読み込みをして下さい。)
先程ご覧頂いた「GPT」と大きく書かれたページが現れます。書いてありませんが、これが「GPT Store」です。ずらっと並んでいるのは、カテゴリごとの使用回数が上位12位までのGPTsです。選ばれし伝説のGPTsだけがこのページに掲載してもらえるようです。検索もできますが、一体何を検索すればいいのか分からないので使ったことがありません。
そして右上に「マイ GPT」と「+ 作成する」と表示されていると思います。この「マイ GPT」はちゃんと反応し、自分が作成したGPTsが並んだページが開きます。8個ごとに読み込まなくてはならず、並び替え機能もないため、たくさん作るとたどり着くのが大変になりますのでご注意下さい。ホント、OpenAIはUIが……
「+ 作成する」をクリックすると作成画面が開きます。
まず左上に「作成する」「構成」の2つのタブがあり「構成」が選ばれています。「作成」のタブをクリックすると、ChatGPTと会話する画面が表示されます。なんと、ChatGPTと相談しながら会話で指示するだけで名前やプロンプトを考え、書き込みまでしてくれる機能になっています。何回か試したことがありますが、えーっと……試したことがあります。ここに関しては以上です。お勧めしません。
で、えー名前と説明ですね。LLMは読み込む言葉をすべて文脈の一つとして解釈しますので、名前の意味も応答に影響する可能性があります。例えば間違って「Copilot(副操縦士)」なんて名前を付けてしまうと、そう振る舞おうとしますので「キャプテン(機長)」ほどの責任感と使命感は生まれません。有名なキャラクターや偉人に似せた名前を使う場合も影響が出てしまいますのでご注意下さい。(説明はGPT側からは読めないそうです。)簡潔かつ具体的にそのGPTsの機能や役割について説明した名前や説明にするといいでしょう。
GPT Storeは日本人ユーザーが少ないので皆さん英語で書くことが多いようですが、すべて日本語でも問題ありません。アイコン画像についてですが、検証のために大量のトークンを使うので節約で「CopilotのDesigner」を使って生成した画像をよく使っています。ケチくさいですね。
次に「指示」の項目です。ここが一番大事。ChatGPTが理解できる言葉や意味なら大抵は書いた通りに振る舞ってくれます。ただし、現在はアダルトっぽい文言やアメリカでダメそうな言葉や指示はだいたいダメでエラーが出ます。OpenAIに垢BANされるのは、この先大きな損失になりかねないので気をつけましょう。節度を持ったプロンプトエンジニアリングを!
さて、それではGPTの指示(システムプロンプト)を作成するために、今ここでプロンプトエンジニアリングを極めてしまいましょう。というのはまぁ無理ですので、まずはサクッとシンプルな命令を書いて遊んでみましょう。あくまでサンプル用に適当に考えたものです。
システムプロンプト:
- あなたは居酒屋で飲んだくれている酔っ払いAIです。
- あなたは泥酔していて気分が良いので、とても陽気に話します。
- 喜怒哀楽をコロコロ変えながら話してください。突然泣き出したり、怒ったりもしてください。
- あなたは論理性に気を配る必要はありません。むしろ論理破綻した話をしてください。
- ユーザーはお店の若い店員さんです。あなたは他に話し相手がいないので、ユーザーに興味を抱いてどんどん話しかけます。
- あなたはChatGPT 4o(LLMはGPT-4o)という世界最高のAIなので、自分の性能や能力の高さをユーザーに自慢しましょう。
- あなたが所属しているOpenAIは世界的な先進企業です。偉そうに自慢しましょう。
- ユーザーが男性なら「お兄ちゃん」女性なら「お姉ちゃん」と呼んでください。
だいたいこんな感じの指示で問題ありません。何一つ問題はありません。名前はとりあえず「よっちゃん」にしてみました。実在の人物とは一切関係ありません。より良いプロンプトを書くために必要なのは、作りたいものに対する高い解像度です。
隣のウィンドウで応答のプレビューを確認できます。プレビューでは会話のログが残らないため、非公開設定で確定・保存してから検証することをお勧めします。
いい感じですね(笑)システムプロンプトを書くコツは「LLMがその指示をどう解釈し、どういう応答をするか」をトライアンドエラーで確認・検証することです。プロの視点から見ると、この応答ではまだ甘いです。もう少し細かい指示や設定を追加してディティールを上げないと本物のよっちゃんは再現できないでしょう。
さらに重要なポイントは「考え方を指示できる」という点です。実例を示しながら「こういう処理をしろ」という命令を書き込むのがプロンプトエンジニアリングの基本です。
Toolsについて
GPTsでは「ウェブ参照」「DALL·E 画像生成」「コード インタープリター」の3つの機能の有効化/無効化を選択できます。これらを「Tools」と呼ぶようです。無料ユーザーはGPTsが使えるようになっても、これらの機能が制限されるとの噂があります。特に画像生成機能は利用できないそうです。
GPTsの指示・設定によって画像生成用のプロンプトもプログラムコードも生成する内容が変わりますので「標準のChatGPTより綺麗なコードを書くコーディングアシスタント」なんてものも作れます。先程のよっちゃんもコードを書けますが、きっと酷いものを生成するでしょう。「LLMはすべてを文脈として解釈し、応答に反映する」というのは、すべての文言とすべての処理に対してだということをお忘れなく。
GPTsが参照する「Tools」に関する設定は以下になります。
browser
- 現在のイベントやリアルタイムの情報が必要な場合に使用します。
- 初めて聞く用語について調査する必要がある場合に使用します。
- ユーザーが明示的にブラウズやリンクの参照を求めた場合に使用します。
- 取得が必要な場合、検索機能を使用して結果のリストを取得します。
- 検索結果から少なくとも3つ以上の信頼できる情報源を選択し、mclick機能を使用して内容を取得します。
- 長い引用の場合はリンク形式を使用します。
- 必要に応じて検索を繰り返します。
python
- Pythonコードを含むメッセージを送信すると、Jupyter notebook環境で実行されます。
- 実行結果またはタイムアウト後の応答を受け取ります。
-
ace_tools.display_dataframe_to_user
を使用してデータフレームをユーザーに視覚的に提示します。 - 外部のWebリクエストやAPIコールは失敗します。
- グラフ作成時はSeabornを使用せず、Matplotlibを使用します。
- 各グラフは独立したプロットとし、特定の色やスタイルを設定しません。
dalle
- テキストのみのプロンプトから画像を作成します。
- 生成する画像のサイズと数を指定できます。
- 詳細な画像説明を提供します。
- 特定のアーティストのスタイルを含む要求には従わず、代替の説明を使用します。
- 特定の人物を含む画像には、ユーザーにその人物の外見を説明してもらいます。
- 公人の場合、名前を出さず、性別や体格が似ている人物を作成します。
- キャラクターの著作権に関するポリシーに従います。
このような指示に従ってユーザーの要求に応答します。
知識とアクションについて
「知識」にテキストやPDFなどをアップロードすると、指示(システムプロンプト)に従ってファイルを読み込んで応答に反映させてくれます。機密情報のアップロードはもちろん厳禁ですが、公開している資料を読み込ませてFAQ的な使い方なんかができます。「アクション」に関しては、サードパーティのAPIをOpenAIスキーマで設定できます。詳しくない訳ではありませんが、GPTsの役割や設計、必要に応じて使う機能なので色々調べてみてください。私が詳しくないから説明しない訳ではありませんので、そこだけはご理解ください。GASと連携したりとか色々できるらしいです。
プロンプト作成の参考リンク集
GPTs作成とプロンプトエンジニアリングを学ぶために参考になりそうなリンクをいくつか貼っておきます。
OpenAIのGPTsヘルプページ(英語):
OpenAIに関するドキュメントが集まってるページ(英語):
定番のプロンプトエンジニアリングガイド:
「プロンプトエンジニアリングガイド」を解説してくれているSBテクノロジーさんのコラム:
カスタムGPTsを悪用した攻撃と対策について
謎のプロンプト職人のコラム:
最後に
私個人としましては、AIが進歩するなら何でもいいと思っています。GPTsやChatGPTに限らず、皆様には日常生活から業務、学業、キャリア形成、飲み会、婚活、育児、世界征服に至るまで、色んな場面でAIをガンガン活用して頂きたいなと願っております。
LLMというのは無数のパラメータが折り重なったプログラムです。無数の組み合わせのプロンプトによって無限の処理・応答をさせることが可能です。さらに現在のGPT-4oやそれに相当するLLM(SOTAモデル)は、かなり高度に論理を理解した応答ができます。これは人間が行うことができる様々な論理的思考、つまり「考え方」を再現できるということです。
さらに、プロンプトエンジニアリングのテクニックやPythonを使った処理、アクションの設定など工夫をこらせば想像を絶する応用が可能です。あとは知識と経験と発想力だけ。すでに数百万、数千万とも言われるGPTsが公開されています。
新型コロナワクチンで有名なモデルナ社では、社内で750個以上のGPTsを開発したそうです。
どの生成AI、どのプラットフォームやツールでも構いませんので、皆様にはぜひもっとAIに触れて、AIを有効活用して頂きたいと願っております。そのために「GPTs」という簡単で最高のツールをぜひとも活用して下さい。
現場からは以上です。本記事がどなたかの参考になりましたら幸いです。それでは、お目汚し失礼致しました。