プロンプトエンジニアリング(その6)

前回のブログでは、医学論文に関して、世話好きなChatGPTについて記載しました。

プロンプトの開発はこれまでのプログラミングとは異なり、厄介なことが多々あります。今回は、プロンプトの変更が及ぼす影響について記載します。

厄介なプロンプト変更

私は、ChatGPTなどを用いて医学論文から特定の情報を抽出したり、症例報告を分析させることを生業の一部としています。そのため、1万件を超すプロンプトを試作してきました。プロンプトを開発する中、非常に苦労していることがありますが、その一つがプロンプト(指示文)の変更が及ぼす影響です。

例えば、プロンプトに「以下のテキストを読んで、以下の指示に従ってください。1.xxxxxxx 2.xxxxxxx 3.xxxxxx … 」というような指示文を書いても、ChatGPTから意図した結果(Completion)が出力されなかったとします。

その原因を考え、例えば、プロンプトの指示文「2.xxxxxxx」 のみを修正して、再度、修正後のプロンプトを動かしてみます。すると、指示文「2.xxxxxxx」は期待通りの結果を出力できるようになっても、全く無関係な指示文「5.xxxxxxx」が期待通りに動かなくなってしまうのです。

簡単な指示であれば、そういったことは発生しにくいのですが、トークン単価を考えると、欲張った指示になりがちで、プロンプトに記載する前提条件、指示内容などが多くなりがちです。

こういう状況が発生した場合の対処は、指示の順序を変えてみる。指示をあえて分割せずに1行で表現する。など、これまでの経験で身につけた色々なテクニックで切り抜けるのですが、そういった方法が常に上手くいくとも限らないのです。ひたすら、プロンプトの修正を続けて、ようやく解決するといった日々が続くこともよくあります。

GPTが確率モデルである所以かなと思いながら…

では、また

次へ
次へ

プロンプトエンジニアリング(その5)