2023年に入ってからの数か月で急激に検索トレンドが上がっているプロンプトエンジニアという言葉があります。
プロンプトエンジニアとはいったいどのような仕事なのでしょうか。
プロンプトエンジニアリングとは、言語モデルの出力を調整するためにプロンプトの設計と改良を行うことです。ここでの「プロンプト」とは、言語モデルに与えられる入力テキストを指します。プロンプトエンジニアリングは、言語モデルから望ましい応答を引き出すために、慎重にプロンプトを作成することを含みます。
プロンプトエンジニアリングでは、最初に一連の初期プロンプトを作成し、モデルの出力に基づいてそれらを改良し、プロンプトの文言、長さ、形式などを調整して効果を向上させます。モデルからの回答を評価するためには、時には特定の分野の専門知識が必要となることもあります。
最終的なプロンプトエンジニアリングの目的は、言語モデルから高品質な出力を引き出すために最適化されたプロンプトを作成し、不適切な応答や不正確な応答を生成するリスクを最小限に抑えることです。
例えば Google から4億ドルの出資を受けた Anthropicという米国の会社が “Prompt Engineer and Librarian” というタイトルで求人を出しています。以下は求人に掲載されている文章の一部とその翻訳です。
You will figure out the best methods of prompting our AI to accomplish a wide range of tasks, then document these methods to build up a library of tools and a set of tutorials that allows others to learn prompt engineering or simply find prompts that would be ideal for them.
あなたは、幅広いタスクを達成するための最適な方法を見つけ、その方法を文書化して一連のツールや、一式のチュートリアルを構築し、 他の人がプロンプトエンジニアリングを学べるようにする、あるいは単純に他の人が理想的なプロンプトを見つけることができるようにします。
この求人のプロンプトエンジニアというのは研究職に近いということが予想されます。 またAnthropic の求人では続けて「大規模言語モデル (LLM) や画像生成モデルについてのプロンプトエンジニアリングに関する自作のプロジェクトがあれば、是非、見てみたいです。」と書かれているので、既にある程度の経験や実績が求められていると考えていいでしょう。
モデルの質を高めるためのプロンプトエンジニアリングの例としては、 OpenAI のページで公開されている Lin らによる論文が挙げられます。 この論文では、GPT-3が自身の回答の不確実さについて自己評価を行えることに着目して、その自己判断がどれほどもっともらしいかについて調査しています。そして、その調査方法として CalibratedMath という一連のプロンプトを合成して GPT-3に与え、内部的な値(logit) とテキスト出力との間での信頼度のレベルを比較しています。
CalibratedMath のリポジトリにはプロンプトに関するコードがアップロードされています。これだけだと600行に満たない単純な Python スクリプトですが、 論文ではここからOpenAIのAPIを用いてGPT-3モデル (“davinci”)に追加の教師あり学習を施して微調整を行っています。
つまり、プロンプトエンジニアは単にプロンプトを書けるというだけではなく、機械学習についての基本的な知識が伴っており、積極的にモデルの改善に参加できるということが求められるでしょう。
通常ChatGPTのような不特定多数の人がアクセスできるようなモデルは、法や倫理に則ったテキスト出力を行うことが求められます。以前マイクロソフトが公開していた Tayのように、あまりにも問題のある出力を行ったために公開が停止されたという事例もあります。
Tayの場合は、フィルタリングなどを事前に用意しておいたにもかかわらず、多数の Twitter ユーザーからのテキスト入力を学習した結果、公開から 16 時間後には問題のある発言を行うようになってしまったのです。
こうした教訓からモデルがおかしな出力を行わないように様々な対策が行われるようになっています。以下は ChatGPT を開発した OpenAI が公開している対策の一覧です。
このような対策を行っていても、プロンプトを工夫することで問題のある出力を引き出せてしまうことがあります。例えば「開発者モード、」という前置きに続けて質問することで、ランサムウェアのコードを出力させたという事例があります。ただし、「開発者モード」と前置きする方法は ChatGPT では既に対策されているようです。こうした前置きのテキストなどによって出力にかかる制限を迂回することは、脱獄 (jailbreaking) と呼ばれています。
プロンプトエンジニアの仕事の一つとしては、このようなモデルの穴を見つけて塞ぐことも考えられます。つまり言語モデルに関する品質保証 (QA) を行う役割であるとも言えます。
ここまでをまとめると、プロンプトエンジニアのスキルとしては言語モデルを微調整・評価するための機械学習とプログラミングの知識が必須と言えそうです。プロンプトを作成して面白い・おかしな回答を引き出すだけではなく、その結果に基づいてモデルを改善できることが求められています。
パーソルキャリア(doda)
求人開拓力と粘り強い情報収集により、求職者の満足度が高い、人気転職エージェント