LLMをより賢くするためのプロンプト設計入門

現在の社会では、AIGCの普及に伴い、効果的なプロンプトの使い方を知ることは重要です。本記事では、iFlytekの星火大モデルを例に、プロンプト設計の基本と実践的なテクニックを解説します。

星火大モデルは、中国のiFlytekが開発した大規模言語モデルです。強力な中国語創作能力を持ち、複雑な文脈での論理的推論を処理し、様々なタスクを実行できます。

星火大モデルを効果的に利用するためには、適切なプロンプトの設計が不可欠です。プロンプトはモデルの出力品質と正確性を大幅に向上させます。本記事では、プロンプトの生成方法と重要性に焦点を当て、星火大モデルにおけるプロンプトの活用方法を分析します。

プロンプトとは?

プロンプトとは、モデルが関連する出力を生成するよう誘導するために設計された入力シーケンスです。簡単に言えば、モデルに与える「ヒント」や「指示」のことです。

星火大モデルでは、異なるプロンプトを設計することで、モデルに特定のテキストを生成させることができます。例えば、中国の四大発明の一つである「紙の発明」について短い文章を生成させたい場合、以下のようなプロンプトを提供できます:

あなたは英語翻訳者、スペルチェック担当者、そして修辞の改善者として働いてください。
私がどの言語で話しても、その言語を認識し、より美しく洗練された英語に翻訳して回答してください。
私の単純な単語や文を、より美しく高尚な表現に置き換えてください。意味は変えずに、より文学的なものにしてください。
修正と改善された部分のみを回答し、説明は不要です。私の最初の文は「how are you?」です。これを翻訳してください。

プロンプトの生成方法

優れたプロンプトを書くための重要なポイントを理解することが不可欠です。この分野で有名な開発者Matt Nighの作品が参考になります。

CRISPEプロンプトフレームワークは、ステートメントを最適化するためのガイドフレームワークです。CRISPEは以下の意味を持ちます:

  • C - Capacity and Role(能力と役割):モデルに期待する役割と能力を明確に指示します。
  • R - Insight(洞察):背景情報と文脈を提供し、モデルが問題をより良く理解できるようにします。
  • I - Statement(指示):モデルに何をすべきかを明確に指示します。
  • P - Personality(個性):回答のスタイルや方法を指定します。
  • E - Experiment(実験):複数の回答を生成し、テストを行うよう指示します。

GitHub上の多くのプロンプトロールは、基本的にCRISPEフレームワークに基づいて構築されています。

まず、役割を特定し、背景を説明し、要求を提示し、最後にスタイルを確定します。複数の例を生成するかどうかは、個人の好みに応じて決定できます。

簡単なテストを始めましょう。例えば、私たちが興奮するとき、一生懸命学んだことを忘れてしまい、口から出てくるのは「**」だけになります。ここでは、この状況をモデルに表現させます。

私の単純な単語や文を、より美しく高尚な表現に置き換えてください。意味は変えずに、より文学的なものにしてください。

この回答は悪くないですが、私が伝えたい意図と少し異なります。そこで、複数の回答を生成し、選択できるようにプロンプトを改良します。

私の単純な単語や文を、より美しく高尚な表現に置き換えてください。意味は変えずに、より文学的なものにしてください。4つの結果を提供してください。

今回は良い結果が得られたので、より正確に現在の状況を表現できるか試してみましょう。

私の単純な単語や文を、より美しく高尚な表現に置き換えてください。意味は変えずに、より文学的なものにしてください。第一人称で身临其境(実際にその場にいるような)感覚を表現してください。4つの結果を提供してください。

さらに改善の余地があると感じたので、モデルの想像力をさらに刺激します。

私の単純な単語や文を、より美しく高尚な表現に置き換えてください。意味は変えずに、より文学的なものにしてください。少し联想(連想)を加えて物語性を高めても構いません。第一人称で身临其境(実際にその場にいるような)感覚を表現してください。4つの結果を提供してください。

これで、プロンプトの最適化の方向性が明確になりました。特定の意味をモデルに伝えたい場合、一度で完璧な結果を得ることは難しいです。段階的に最適化する必要があります。もし最適化の幅が大きすぎると、プロンプトが元の方向から外れてしまう可能性があるため、そのルートでの最適化を続けることはありません。

次に、事前条件を追加することによる最適化の別のアプローチを見てみましょう。

以下に提供する4つの文の資料に基づき、指定された資料の文のスタイルに従って、約500字の旅行記を作成してください。

資料:
1. 高くそびえる山々は、純粋無垢な雲に触れそうなほど高く、青い空が背景となり、神秘的で壮麗な雰囲気を加えています。
2. その山々の高さは雲にまで達し、綿のように白い雲と趣をなし、青い空は巨大な鏡のように、この美しい絵巻を映し出しています。
3. 高山は雲霧に包まれ、自然の傑作のようです。白い雲は青い空の下でより純粋に見え、人々を魅了します。
4. 巍峨たる山々を仰ぎ見ると、天を突き破ったかのように、白い雲と青い空と一体化し、美しい絵巻を形成しています。

もしモデルの書いた文章に満足できない場合は、提供された資料や要求を修正して、望む仕事を完了できるように助けを求めることができます。この場合、個人用の知識ベースをどのように構築するかを考えるかもしれません。モデルにいくつかの質問に答えてもらい、その回答能力を示すように指示できます。

モデルの回答能力を示すために、いくつかの質問を準備する必要があります。もちろん、モデルに直接質問の生成を依頼することもできます。

以下に提供する内容は、旅行記に関するものです。あなたは国語の先生として、4つの関連する読解問題を作成してください。

資料:
{
旅行記:高山の頂きの壮麗な絵巻
私は高くそびえる山々の頂きに立っています。純粋無垢な雲に触れそうなほど高く、青い空が背景となり、神秘的で壮麗な雰囲気を加えています。この山々の高さは雲にまで達し、綿のように白い雲と趣をなし、青い空は巨大な鏡のように、この美しい絵巻を映し出しています。
頂上に登ると、眼前の景色に息をのむほど驚かされました。高山は雲霧に包まれ、自然の傑作のようです。白い雲は青い空の下でより純粋に見え、人々を魅了します。私は新鮮な空気を深く吸い込み、自然の力と静けさを感じました。
巍峨たる山々を仰ぎ見ると、天を突き破ったかのように、白い雲と青い空と一体化し、美しい絵巻を形成しています。この絵巻の中で、山々は高くそびえ立ち、城のように見えます;白い雲はその中を漂い、綿菓子のように柔らかく;青い空は遠くまで広がり、無限の想像の空間を与えてくれます。
私は曲がりくねった山道を進み続け、一歩ごとに自然の懐に一層近づいていきます。山の風が顔を撫で、清涼で心地よいです。遠くから鳥のさえずりが聞こえ、この純粋な土地で自由に飛び回っています。私は自然の魅力と生命の活力を感じます。
この高山の頂きで、私は内なる静けさとバランスを見つけました。喧騒の多い都市生活から離れ、自然の美しさと力を静かに鑑賞できます。ここにあるすべては純粋で真実であり、私の生活と価値観を再考させます。
この高山を去るとき、私は自然への畏敬と感謝の気持ちでいっぱいでした。この旅行は高山の頂きの壮麗な絵巻を体験させ、自然の偉大さと無私無欲さを理解させました。将来、再びこの神奇な土地を訪れ、自然と親密に触れ合い、生命の美しさと無限の可能性を感じたいです。
}

これは大規模言語モデルの使用における課題の一つです。私は常に修正を試みましたが、モデルが画像のみを返す状況を変えることはできませんでした。この問題は改善が必要です。APIを直接呼び出してテキストを生成することもできます。ここでは個別のデモは行いませんが、他の大規模モデルでは望んだ回答を得ています。具体的には以下のようになります:

読解問題:
1. 作者が旅行記で描写した景色にはどのような特徴がありますか?
2. この旅行を通じて、作者は自然についてどのような認識を得ましたか?
3. 作者は旅行記で生活と価値観の再考について言及しています。作者はどのようにしてこの点を達成したのでしょうか?
4. この旅行記はあなたにどのような感覚と啓示を与えましたか?

次に、これらの質問の特徴に基づいて、さらに回答を検討します。ここでは説明のために一つの例だけを選びます。

以下に提供する資料に基づき、読解問題を作成してください。回答の字数は約50字に制限してください。

資料:
{
旅行記:高山の頂きの壮麗な絵巻
私は高くそびえる山々の頂きに立っています。純粋無垢な雲に触れそうなほど高く、青い空が背景となり、神秘的で壮麗な雰囲気を加えています。この山々の高さは雲にまで達し、綿のように白い雲と趣をなし、青い空は巨大な鏡のように、この美しい絵巻を映し出しています。
頂上に登ると、眼前の景色に息をのむほど驚かされました。高山は雲霧に包まれ、自然の傑作のようです。白い雲は青い空の下でより純粋に見え、人々を魅了します。私は新鮮な空気を深く吸い込み、自然の力と静けさを感じました。
巍峨たる山々を仰ぎ見ると、天を突き破ったかのように、白い雲と青い空と一体化し、美しい絵巻を形成しています。この絵巻の中で、山々は高くそびえ立ち、城のように見えます;白い雲はその中を漂い、綿菓子のように柔らかく;青い空は遠くまで広がり、無限の想像の空間を与えてくれます。
私は曲がりくねった山道を進み続け、一歩ごとに自然の懐に一層近づいていきます。山の風が顔を撫で、清涼で心地よいです。遠くから鳥のさえずりが聞こえ、この純粋な土地で自由に飛び回っています。私は自然の魅力と生命の活力を感じます。
この高山の頂きで、私は内なる静けさとバランスを見つけました。喧騒の多い都市生活から離れ、自然の美しさと力を静かに鑑賞できます。ここにあるすべては純粋で真実であり、私の生活と価値観を再考させます。
この高山を去るとき、私は自然への畏敬と感謝の気持ちでいっぱいでした。この旅行は高山の頂きの壮麗な絵巻を体験させ、自然の偉大さと無私無欲さを理解させました。将来、再びこの神奇な土地を訪れ、自然と親密に触れ合い、生命の美しさと無限の可能性を感じたいです。
}
問題:この旅行を通じて、作者は自然についてどのような認識を得ましたか?

これで、プロンプトの基本的な使い方をすべて紹介しました。本記事のデモは深くありませんが、基本的な使い方を簡単にご紹介しました。例えば:事前に大規模モデルを利用してプロンプトの生成を助けたり、プロンプト生成の過程で大規模モデルの参加が結果を最適化できるかどうか、あるいはこれらの資料をベクトルデータベースに保存すれば、個人用の知識ベースのようなアプリケーションを実現できるかどうかなどです。これらの資料をベクトル形式で保存することで、情報をより効率的に管理し、検索しやすくすることができます。大規模言語モデルに問題を記憶させ、関連する問題を保存させると、質問に文法エラーがある場合、モデルが自動的に修正を助けてくれるようにできますか?つまり、プロンプトを提供し、質問をモデルに尋ねて、修正された問題を得るということです。これらはすべて可能です。

タグ: プロンプトエンジニアリング 大規模言語モデル iFlytek 星火大モデル CRISPEフレームワーク

6月18日 16:28 投稿