今回は真面目に、生成AI(LLM)に設定する「システムプロンプト」についてまとめてみました。現在日本では、複雑な論理構造のシステムプロンプトを設計する技術の有用性はほとんど認知されていません。しかし、AIの利活用の普及によって理解と需要が高まって行くものと予想しています。
著者について
Sharaku Satohと申します。昨年からGPT-4とプロンプトについて個人で研究していまして、GPT Storeがリリースされてからは、主にGPTsに設定するシステムプロンプト(指示/Instructions)の考案と実験に勤しんでおります。
私が制作・公開しているGPTsの一部を以下のページにまとめてあります。
先日、こちらの「教えてAI」で行われているプロンプトコンテストのGPTs部門で優勝させて頂きました。
プロンプトとは
OpenAIやスタンフォード大学などが共同で発表した論文「The Prompt Report: A Systematic Survey of Prompting Techniques」を元にご説明します。
論文では冒頭で次のように語られています。「プロンプトは広く普及し、高度に研究されている概念ですが、この分野がまだ初期段階であるため、矛盾した用語が使用されており、プロンプトを構成するものについての理解が不十分です。この論文では、プロンプト手法の分類をまとめ、その使用法を分析することで、プロンプトの構造化された理解を確立します。」
プロンプトとは、生成AIモデル(LLM)に入力されるクエリ全般のこと。画像や音声、その他メディアのデータも広義のプロンプトです。LLMは入力されたプロンプトの情報を解析して応答を構成します。テキスト一文字から絵文字一つ、数百~数千の事例や指示を書き込んだメガプロンプトまで様々な種類があります。
プロンプトにおける代表的な手法には「In-Context Learning (ICL/コンテキスト内学習)」があります。自然言語による実例や指示を与えることで、LLMのパラメータに含まれる知識や論理を利用して応答をコントロールする技術です。トークンの消費量は増大しますが、Fine-tuningと同等の効果が得られます。原理上、LLMが解釈可能な論理や説明であれば、どんな設定や考え方でも応答に反映させることが可能です。
プロンプトエンジニアリングの基礎を学びたい場合は、「Prompt Engineering Guide」もおすすめです。
システムプロンプトとは
ChatGPTやClaudeなどのチャットボットに初期設定されているプロンプトのこと。他に、GPTsでは「指示」、ClaudeのProjectsでは「Custom Instructions(カスタム指示)」と表記されています。Azure OpenAI Serviceなどの各種API利用時にも設定できます。生成AIチャットボットの基本設定を構成するプロンプトです。
タイトルの「システムプロンプトエンジニアリング」という分野は、調べた限りまだ存在しません。本記事が正式に語られた初のソースになるかもしれません。
Anthropicによる説明
Claudeのユーザーガイドでシステムプロンプトに言及した項目があります。
「ユーザーが質問やタスクを提示する前に、チャットボットにコンテキスト、指示、ガイドラインを提供する方法」と説明されています。タスクに応じた設定やプロンプト技術をユーザーの代わりにあらかじめ適用しておくものという説明です。
OpenAIによる説明
「Key Guidelines for Writing Instructions for Custom GPTs」でGPTsに設定するシステムプロンプトについての技術的なガイドラインが提示されています。Custom GPTsに設定するシステムプロンプトの書き方の基本を案内する目的のドキュメントです。
FLIP理論
私がGPTsのシステムプロンプト作成で使用している構成をまとめた記事です。実例をほとんど使用せず、論理的なフレームワークや観念/概念を利用して、疑似人格をベースにGPTsの応答をコントロールするプロンプト技術の解説とテンプレートを紹介しています。
「SNSで拡散すると無料で読める」という仕様ですが、以下で私が書いたGPTs用システムプロンプトの一つを丸々公開しています。プロンプトの文章量は176行、約5700文字。見本として作ったので少し冗長です。
SNSで拡散したくない方もいると思いまして「Prompt Style」というサイトでも公開しています。
システムプロンプトエンジニアリングとは
現在日本では、AIのキャラクター設定またはツールとしての動作を記述する簡易的なシステムプロンプトが主流ですが、設計によってAIの性能と応答の質を大きく変えることができます。システムプロンプトはAIの思考を構成する技術であり、AIの利用価値を最大限に引き出すためのソリューションです。
システムプロンプトの設計では、LLMの原理を理解した上で、AIを「人物と思考」に置き換えて考えることが有効です。もしあなたが弁護士に相談したい時に、必要なのは六法全書の情報ではありません。弁護士にも得意分野があり、その分野の専門家としての知識と経験、考え方やメソッドを持っています。相談をどう捉え、どう解釈するかも一人ひとり違います。つまり、あなたが必要とするのは一般的な情報や汎用的な法律相談などではなく、ケースを正しく理解して最も効果的な答えをくれる特定の人物とその思考です。
ChatGPTやClaudeなどの標準モデルは汎用的な設定になっており、プロンプト技術や論理的なフレームワークによって形を与え、特定の人格や思考を詳細に構成する技術が「システムプロンプトエンジニアリング」と言えます。
AI及びヒューマノイド・ロボットの社会実装が進み、人間の代わりに仕事を行う場面が増えるほど、ヒューマナイズ(擬人化)のためのシステムプロンプトの複雑性と必要性が増すと考えられます。
最後に
大まかではありますが、生成AIのシステムプロンプトとその技術についての要点をお伝えできたかと思います。「プロンプト」や「プロンプトエンジニアリング」は未だに、画像生成AIやチャットボットへの簡易的な指示やテクニックだと思われていますが、それはあくまで利用におけるメッセージの一種であって、プロンプトエンジニアリングの本質は、LLMの膨大なパラメータ群に論理的な枠組みを与えることで思考、つまり知的能力を構成する技術です。
前者をHTMLのようなマークアップとするなら、後者はプログラミングに相当します。現在知られているプロンプト技術による作用は、LLMで実現できる性能のほんの一端に過ぎません。「The Prompt Report」で述べられているように、まだ初期段階の研究分野です。LLMのパラメータとコンテキスト・ウィンドウの組み合わせだけでも天文学的な数字になりますが、さらにどのLLMがどの論理をどう応答に反映させるのか、そしてこの世に存在する論理とその組み合わせや書き方と相互作用まで考慮すると、その可能性は計算のしようがありません。
このように、「システムプロンプトエンジニアリング」はまだ世界的にも未知の分野ですが、より多くの人がより複雑な構造のプロンプトを書き、AIの可能性を広げ、社会実装が進んで行くことを願っております。本記事がその一助になりましたら幸いです。