プロンプトエンジニアリングとは何か
前回に引き続き、今日もMidjourneyの話題です。Midjourney登場後、とたんに名前をよく聞くようになった「プロンプトエンジニアリング」に関してです。
プロンプトエンジニアリングに関して、自分が一番最初に目にした記憶のある記事は、こちらのshi3zさんの記事です。Midjourney登場以前の1年以上前の記事です(記事では、プロンプトプログラミングと表現されています)。早い、早すぎです。正直このときは意味は分かるものの、まったくピンときていませんでした。
プロンプトは、WindowsのコマンドプロンプトやMac/Linuxのターミナルを使うエンジニアにとっては、コマンド入力前の記号( >
とか$
)ですが、今Midjourneyの登場で話題になっているAI時代の「プロンプト」は「AIに対しての指示」を指すようです。そのプロンプトをいかにうまく使うか、AIにうまく指示を出すかがプロンプトエンジニアリングと呼ばれる概念のようです。
具体的には、いかにうまくGoogle検索をするかという「ググラビリティ」や、DeepLのような自動翻訳エンジンに翻訳しやすい文章を与えるというのが、イメージしやすいプロンプトエンジニアリングの一種もしれません。
AI以前だと、いわゆるコマンドを駆使して、特定の作業を実現する「シェル芸」のようなものがプロンプトエンジニアリングに相当するのかもしれません。
一部のエンジニアだけが使えたプロンプトエンジニアリングが、AIによって一般の人まで誰しも使えるようになってきた。特に Midjourneyの登場によって、その範囲がクリエイションの分野まで広がってきたというのが今起きつつあるパラダイムシフトではないかと感じています。
魔術としての「プロンプト」
AIの登場によって、誰でも使えるようになったと思える「プロンプト」ですが、うまくGoogle検索が使いこなせない人がいるように、結構使いこなしにコツがいります。
そして Midjourneyのような高度なAIが出てくると、よりその傾向が加速していきそうです。
私がそれを実感した例ですが、Midjourneyで「サイバーパンクな秋葉原」を描きたいと思ったとします。
素直に「cyberpunk akihabara」と入力しましょう。
うん、全然悪くないです。悪くないですが
「もっと退廃的な雰囲気とか、写実的な雰囲気とか、もう少し写真でいうボケを使った表現を出せないかなー」
と感じてしまったとしましょう。ひたすら試行錯誤します。
例えば、apocalypose
という単語を混ぜたり、具体的なレンズの機種を入れたり、midjourneyのパラメータで画角や画質を調整します。
試行錯誤した結果です。
どちらが良いかは好みによるかと思いますが、私が脳内でイメージしていた絵にはこちらが近いです。
こういった絵を描くためのプロンプトがどうなるかというと以下です。
cyberpunk apocalypse akihabara Voigtlander nokton 25mm f0.95 --ar 16:9 --quality 5
cyberpunk akihabara kawaii --ar 16:9
知らない人がパッとみると、言語というよりコマンド、いわゆるLinuxのシェル芸的なものに近いのではないでしょうか。
そして、このような呪術的なプロンプトを入力すると、自分の思い通りの絵が出てくると魔術的と感じますね。
このような呪術は、多くの人が研究しています。多くは公開されていますが、一部はこういったプロンプト(呪術)を売買する動きも出てきています。
興味ある人は、以下のスクラップにリンクまとめていますので、テクニックあたりを参考にしてみてください。
プロンプトエンジニアリングの加速
プロンプトエンジニアリングが加速すると、多くの入力と出力の関係をみることでブラックボックスであるAIの中身を推測してハックする動きも加速しそうですね。
プロンプトエンジニアリングを助けるためのツールを使うと、AIの可能性をより引き出せる気がします。
例えば、自分はPythonでランダムに単語を組み合わせて自動でMidjourneyのプロンプトを詠唱(入力)し続けるツールを作ってみました。使っているイメージとしては以下のような感じです。
#midjourny 新たな潜在空間を発見するために、Pythonでランダムな複数の英単語の組み合わせを詠唱するプログラム組んだ。
— からあげ (@karaage0703) August 12, 2022
自分にはない発想の組み合わせを発見できそう pic.twitter.com/zcZQ8o7UZF
こういうツールを使うと、自分の引き出しには無い面白そうなプロンプトを見つけられそうです。以下のような画像は自分には無い発想でした。
ちなみに上記画像を生成するプロンプトはSpironema cladophoraceous distributedly
です。
他にも複数のstylize
のパラメータを一気に試せるツールとかを作成しています。
コードは以下のGitHubリポジトリで公開しています。便利なツールを思いついたら追加していく予定です。PR歓迎です。
こういったプロンプトハックに必要なことって、仮説を立てて、試行と思考を繰り返すという地道な作業だったり、作業を助けるためのツールの作成という、まさにエンジニアリングだったりしますね。
まとめ
プロンプトエンジニアリング、AIが発達するまでの過渡期的な存在な気がしていて、あんまり重要と思っていなかったのですが、こうして Midjourneyで遊んでいて、プロンプトにコツがあったり、出来上がるものの違いを目にすると、AIが高度化するほど重要な技術になってくるような気もしてきました。
そして、こういったプロンプトエンジニアリングは、いわゆる理系のエンジニアではない人が、エンジニア以上に使いこなせる可能性があることも興味深い点ですね。データベースソフトを作れる人が、エクセルをうまく使えるわけではないのと同じことかもしれません。
すでにアート系の人が Midjourneyをかなり使いこなしているようです。個人的にはMidjourneyはお絵かきソフトというより、自分のイメージを具体化するカメラに近いと思っているので、カメラが得意な人はうまく使える気がします。
また、プロンプトエンジニアリングを極めて、AIを使いこなすのも楽しいですが、自分でAIを作っていくのもなかなかエキサイティングです。さすがにMidjourneyのようなAIを個人で作るのは難しいですが、用途や性能を限定すれば、個人でも十分実用的なAIを作ることができます。
AIを創れることとAIを使いこなせることは、全く別ではあるのですが、AIを創れるから、AIを理解しているからこそできるプロンプトエンジニアリングというものがあるような気がしています。AIを使いこなすための便利なツールをつくるとかはその1例かもしれませんね。
というわけで宣伝ですが、拙作「からあげ先生のとにかく楽しいAI自作教室」は、手軽に楽しみながらAI作りを楽しめる書籍だったりします。よろしければ是非!