正直メリットデメリットあるし、あんまり正しいと言えないけど、個人的にRAGシステムやAIエージェントの構築の際に使ってしまっている付け焼刃的なプロンプトテクニックを紹介します。

英語太文字命令文

回答上の制約など絶対に従わせないと回答したことにならないような指示は、大文字かつ英語の命令文で記述すると、日本語の平文で書くときより従う可能性が上がります。

例えば、回答を絶対100文字以上、300文字以下にしないと、生成AIの回答を表示するアプリケーションの画面上に表示されない場合に、

THE RESPONSE MUST BE BETWEEN 100 AND 300 CHARACTERS

と書くとちゃんと100文字~300文字で回答が返ってくる可能性が上がります。生成AIが登場しプロンプトエンジニアリングという概念が流行した初期に言われていたテクニックですが、個人的には今も一番強力な方法だと思っています。

他の制約はいいから、どうしてもこれだけ従わせたいという時は後で紹介するマークダウン表記における強調表現と組み合わせ、さらにエクスクラメーションマークもつけて、

**THE RESPONSE MUST BE BETWEEN 100 AND 300 CHARACTERS!!!**

と書くことも有効です。これ以外にもちょっとパワハラ気味なプロンプトを書くことでより従わせやすくするテクニックは他にもありますが、あまりにも優先されすぎてほかのプロンプトが無視される可能性が上がるので、基本は丁寧語でわかりやすく書くというのを原則に、どうしてもという場合に文章に緩急をつけるために使用するのが良いかと思います。

マークダウン表記における強調表現 ** **を使う

マークダウンでは、以下のような「強調表現」を「**強調表現**」のように強調したい部分を囲むことで表記します。生成AIはマークダウンの文章を大量に学習しているので、この表現も理解することができます。

なので例えば、

**回答は必ず結論から答え、後から結論の根拠となる事実を述べてください**

のように、優先して従わせたい文章をアスタリスク2つで囲むと、囲まない場合よりも優先されます。このほかにも重要な単語はダブルクォーテーション””で囲むなども有効です。

回答例や回答のフォーマットを与える

回答しないといけないことや、回答形式を指定してしまって生成AIが思考することを極力減らすことも1つの手段です。

生成AIは思考しているように見えて、思考することがあまり得意ではないです。結局のところ、学習済みの文章に含まれている人が思考して記述した文章を参考に、一番正解に近そうな回答を確率的に選んでいるので、複雑な条件からいくつか思考ステップを経て1つの答えを導きだすことは非常に苦手です。

したがって、思考することをなるべく減らしてタスクを簡単にすることも大切です。何をどのように答えるべきか考えることも生成AIにとってはタスクの難易度を上げてしまう思考プロセスですし、これだけ回答すればいいということを明示的に与えてしまうことで、生成AIが回答までに考える情報を減らすことができます。

プロンプトの総量を減らす

各社継続的に新モデルをリリースしているので、最近の生成AIモデルはモデルに入力できるプロンプトの総量が生成AIが発表された初期より格段に増えています。ただし、それはあくまで技術的に入力可能な文章量であって実際に生成AIがモデルの中で処理できる情報量はそれほど増えてないのが実情です。たくさん入力できるからと言ってプロンプトを増やすと、情報を扱いきれず無視される確率が高まります。

RAGの参照文書のようにどこかが無視されていても重要な部分が拾えていればそれほど問題ない場合はいいですが、システムプロンプトのように一文でも無視されるとまずい場合は、システムプロンプトの総量を減らすというのが有効な手段です。なので、優先度が低い指示文や、指示しなくても従う可能性が高い指示文はシステムプロンプトから省き、重要なプロンプトだけを残すのも1つの手です。

この記事は最初会社のオウンドメディアに投稿しようと思ったんですが、経験則で書いているんのでちょっと正確性を欠くかなと思って個人ブログに書きました。ただ、意外とこういうのってあんまりまとまってない気がするので書きました。

それでは。