[2023年3月版]ChatGPTのプロンプトで変数を使う
ChatGPT の GPT-4 に"メタなプロンプト"の作り方を聞いてみると
プロンプトをゴリゴリ書いているとガチっと決まったお願い事やふわっとしたキーワードを調べさせているうちはよいのですが、"イマイチ汎用的じゃないなぁ…"と感じることはないでしょうか。
変数みたいなものをプロンプトに織り交ぜて汎用的でどこでも使える ナウでヤングな エレガントなプロンプトを作ってみたい・・・!
というわけでプロンプトを変数などを使って汎用的にするためにベストなプラクティスは何なのか?
ストレートに GPT-4 に"変数を使ったメタなプロンプト"の作り方を聞いてみました。
プロンプト:
変数を含むメタなプロンプトの作り方を教えてください。
さてさて…
GPT-4 の回答はいかに?
GPT-4:
メタなプロンプトとは、変数や条件を含んで柔軟に応答を生成できるプロンプトのことを指します。これを作成する際には、以下の手順を参考にしてください。
目的を明確化する: まず、プロンプトの目的や期待される応答を明確にしましょう。これにより、適切な変数や条件を設定する際に役立ちます。
変数を特定する: 応答に柔軟性を持たせるためには、変数を適切に設定することが重要です。変数は、文脈や状況によって変化する単語やフレーズを表します。例えば、天気や場所などの情報を含めることができます。
条件を設定する: 条件を用いて、プロンプトの応答をさらに制御することができます。例えば、特定の条件下でのみ適用されるフレーズや、複数のオプションから選択する際に条件を設定することができます。
プロンプトを構築する: 変数と条件を組み合わせて、メタなプロンプトを構築します。以下は、変数を含むメタなプロンプトの例です。
"{name}さん、{location}の{date}の天気は{weather}です。{if_rainy}傘を持って出かけてください。{endif}"
このプロンプトでは、
name
、location
、date
、weather
といった変数を使用しており、if_rainy
とendif
で囲まれた条件付きのフレーズが含まれています。この条件付きのフレーズは、weather
が雨の場合にのみ表示されます。
- 応答を生成する: プロンプトを使用して、AIに応答を生成させます。プロンプトに含まれる変数や条件に基づいて、AIは適切な応答を作成します。
このように、変数と条件をうまく組み合わせることで、柔軟で豊かな応答を生成できるメタなプロンプトを作成することができます。
いろいろツッコミどころはありますが、シンプルながら強烈な変数の使い方を提案してくれています。
特に if_rainy
。変数に if
というさらにメタなキーワードを組み合わせて条件分岐の機能を実現させています。
確かに、'単語'、というか'コトバ'がヒットしてしまえば、ヒットしてしまうので、一般的な単語を組み合わせてオレオレ言語も作成可能かと思いますけども…
GPT-3.5 で試してみる。
GPT-4 で示してもらったプロンプトが GPT-3.5 でも使えるのか、試してました。特に if_rainy
が通用するの?マジで?ってところです。
プロンプト:
"{name}さん、{location}の{date}の天気は{weather}です。{if_rainy}傘を持って出かけてください。{endif}"
GPT-3.5:
申し訳ありませんが、私は個人情報を取り扱うことができません。名前や場所などの具体的な情報を教えていただかない限り、正確な天気予報を提供することはできません。もし私に天気情報を尋ねたい場合は、地域や日付を教えていただければ、できる限りの情報を提供できます。
はい、だいじょぶよー。では、変数の中身を与えてみましょう!
プロンプト:
name: あそぴてっく、location: 横浜、date: 明日、weather: 晴れ
GPT-3.5:
あそぴてっくさん、明日の横浜の天気予報です。晴れで、最高気温は18度、最低気温は8度の予想です。明日はお天気が良く、過ごしやすい一日になりそうです。お出かけの際は、上着を持って行くと良いでしょう。
変数の置き換えは完璧です。なんか適当な気温の情報が追加されて回答がボリュームアップされておりますが…
雨のパターンを指定してみましょう!
プロンプト:
name: あそぴてっく、location: 横浜、date: 今日、weather: 雨
GPT-3.5:
あそぴてっくさん、本日の横浜の天気予報です。残念ながら雨が降っており、最高気温は16度、最低気温は9度の予想です。傘を持って出かけることをおすすめします。また、路面が濡れているため、お車や自転車などの運転には十分にお気をつけください。安全にご移動ください。
相変わらず適当な情報が付与されておりますが、"傘を持って出かけてください"のそのままの文言ではありませんが、"傘を持って出かけて" という旨のメッセージはついてきます!
GPT-3.5 でも変数の置き換えと条件分岐がばっちり効いているようです。
とある[テーマ]について深堀りさせる。
変数を一つだけ使った超シンプルなサンプルとして、ある[テーマ]を深堀りしてなにかよさげなキーワードをとってくるプロンプトです。
プロンプト:
[テーマ]について関連のあるキーワード、または前提となる知識、基盤となる技術などのキーワードの中からビビットなものを10個抽出し、それぞれについて深堀をお願いします。
こちらのプロンプトでは、[テーマ]という変数を一つ使用して、その前後左右の知識についてのビビットなキーワードを拾わせてみたいと思います。
GPT-3.5:
申し訳ありませんが、ご質問のテーマが不明確なため、どのようなキーワードを抽出すればよいか判断できません。もしテーマを教えていただければ、お答えできるかもしれませんので、よろしくお願いいたします。
OKです。[テーマ]という変数をしっかりと認識できてて分からないとはっきり言えるGPT、ナイスです!
試しに今回は以下のようなテーマで行ってみます。
プロンプト:
テーマはジェネレーティブAIです。
さて結果は・・・
GPT-3.5 やるじゃない
GPT-3.5:
ありがとうございます。ジェネレーティブAIに関連するビビットなキーワードを10個挙げて、それぞれについて解説いたします。
GAN(Generative Adversarial Networks)- ジェネレーティブAIの一種で、敵対的生成ネットワークとも呼ばれる。2つのニューラルネットワークを利用して、画像、音声、文章などのデータを生成する。
VAE(Variational Autoencoder)- ジェネレーティブAIの一種で、変分オートエンコーダーとも呼ばれる。潜在空間を学習して、その空間から新しいデータを生成する。
ディープラーニング(Deep Learning)- ニューラルネットワークを多層化した機械学習の一種。ジェネレーティブAIにも多く利用される。
自己回帰モデル(Autoregressive Models)- 過去のデータから次のデータを予測するモデル。ジェネレーティブAIでよく利用される。
フロー型ジェネレーティブモデル(Flow-Based Generative Models)- データの分布を直接モデル化することで、新しいデータを生成するモデル。VAEやGANと比べて、より高品質なデータを生成できる。
RNN(Recurrent Neural Networks)- 循環型ニューラルネットワークの一種で、時間的な情報を扱うことができる。自然言語処理や音声認識などで利用される。
StyleGAN - NVIDIAが開発した、高品質な画像生成を実現するためのGANの一種。
GPT(Generative Pre-trained Transformer)- 自然言語処理のタスクで高い成果を出した、Transformerを利用したジェネレーティブAIの一種。
DALL-E - OpenAIが開発した、自然言語の指示に基づいて画像を生成するAI。GANとVAEを組み合わせた手法を利用している。
モンテカルロ法(Monte Carlo Methods)- 確率分布を利用して乱数を生成し、その結果からデータを生成する方法。ジェネレーティブAIにも利用される。
以上が、ジェネレーティブAIに関連するビビットなキーワードです。それぞれについて深堀をすることで、より詳細な知識を得ることができます。
GAN(Generative Adversarial Networks)
GANは、2つのニューラルネットワークを利用して、データの生成を行うジェネレーティブAIの手法の一つです。1つは生成器(Generator)で、もう1つは識別器(Discriminator)です。生成器はランダムベクトルから画像、音声、文章などのデータを生成し、識別器は生成されたデータと元のデータを判別するために学習します。生成器は、識別器に騙されないように、生成したデータが本物のデータと同じように見えるように学習します。識別器は、本物のデータと生成されたデータを正しく区別するように学習します。これら2つのニューラルネットワークが相手を攻撃的に学習することで、より高品質な生成データを得ることができます。VAE(Variational Autoencoder)
VAEは、潜在空間を学習して、その空間から新しいデータを生成するジェネレーティブAIの手法です。VAEは、エンコーダーとデコーダーの2つのニューラルネットワークを利用します。エンコーダーは、入力データを潜在空間に変換し、デコーダーは、潜在空間のベクトルを元のデータに変換します。VAEは、潜在空間を学習するために、KLダイバージェンスと呼ばれる正則化項を加えた目的関数を最小化します。これにより、潜在空間に連続的な構造を与えることができます。ディープラーニング(Deep Learning)
ディープラーニングは、多層化されたニューラルネットワークを利用して、複雑なデータを学習する機械学習の手法の一つです。ディープラーニングは、ビジョン、音声、自然言語処理などの分野で広く利用されています。ジェネレーティブAIにおいては、GANやVAEなどの手法に利用されます。自己回帰モデル(Autoregressive Models)
自己回帰モデルは、過去のデータから次のデータを予測するモデルです。具体的には、ある時点でのデータを入力として、そのデータが生成される確率を求め、それを元に次のデータを生成します。自然言語処理のタスクによく利用され、RNNやBERTなどが自己回帰モデルの一種として挙げられます。フロー型ジェネレーティブモデル(Flow-Based Generative Models)
フロー型ジェネレーティブモデルは、データの分布を直接モデル化することで、新しいデータを生成するモデルです。フロー型ジェネレーティブモデルでは、変換を繰り返し適用することで、入力分布から出力分布へと変換を行います。フロー型ジェネレーティブモデルは、VAEやGANと比べて、より高品質なデータを生成することができます。RNN(Recurrent Neural Networks)
RNNは、循環型ニューラルネットワークの一種で、時間的な情報を扱うことができます。RNNは、過去の情報を現在の情報に反映させることができ、自然言語処理や音声認識などのタスクに利用されます。RNNの問題点として、勾配消失問題があり、LSTMやGRUといった改良が提案されています。StyleGAN
StyleGANは、NVIDIAが開発した、高品質な画像生成を実現するためのGANの一種です。StyleGANでは、ネットワークのアーキテクチャを改良することで、より自然な画像生成が可能になりました。StyleGAN2では、ネットワークを分割して、画像の部位ごとに生成を行うことで、より高品質な画像を生成することができます。GPT(Generative Pre-trained Transformer)
GPTは、自然言語処理のタスクで高い成果を出した、Transformerを利用したジェネレーティブAIの一種です。GPTは、トークンの列から次のトークンを予測する自己回帰モデルを利用しています。GPT-3では、1750億のパラメータを持つモデルを利用することで、人間に近い文章生成が可能になりました。DALL-E
DALL-Eは、OpenAIが開発した、自然言語の指示に基づいて画像を生成するAIです。GANとVAEを組み合わせた手法を利用しており、画像の特徴をエンコードして、テキストの指示に従って画像を生成することができます。例えば、「象のソファを描いて」という指示に従って、象の形をしたソファを描くことができます。DALL-Eは、コンピューターによる想像力の可能性を広げることができると期待されています。モンテカルロ法(Monte Carlo Methods)
モンテカルロ法は、確率分布を利用して乱数を生成し、その結果からデータを生成する方法です。ジェネレーティブAIにおいては、GANやVAEの学習に利用されることがあります。GANでは、ノイズベクトルを入力として、ランダムに生成された画像をデータセットとして扱うことができます。また、VAEでは、潜在空間におけるランダムな点をサンプリングし、その点から新しいデータを生成することができます。
以上が、ジェネレーティブAIに関連するビビットなキーワードの一部です。これらのキーワードについて深堀することで、ジェネレーティブAIの理解をより深めることができます。
なんかいつもはそっけない GPT-3.5 が急にこんな量のアウトプットを出すなんて!
そしてジェネレーティブAIというテーマからRNNとかモンテカルロ法まで出てきて想像以上に幅広くキャッチアップできてるようです。
知らなかったニューラルネットワークの手法もいろいろ出てきて感無量です。
あとは出力メッセージを適当に加工させればいろいろできそうですね~!
まとめ
そんなわけで GPT-4 先生もメタなプロンプトについて以下のように述べております。
GPT-4:
メタなプロンプトを活用することで、AI応答の柔軟性と豊かさを向上させることができます。変数と条件を組み合わせることで、さまざまなシチュエーションに対応した応答を生成することが可能になります。プロンプトの作成時には、目的を明確化し、適切な変数と条件を設定して、効果的なプロンプトを構築しましょう。AIを活用して、より賢明な応答を得ることができるでしょう。
ありがとうございました。
お約束
ここまでの流れを表すのに相応しいユニコードの絵文字ってなんだろう?1文字だけ教えて!
GPT-3.5:
「🤖」(ロボットの顔)が相応しい絵文字だと思います!
今日はGPT-3.5に聞いてみましたが悪くない~。
Discussion