再使用可能プロンプトの作成

モデルの効果的なプロンプトを見つけるためのプロンプト・エンジニアリングには、時間と労力がかかります。 再利用して他のユーザーと共有できるプロンプトを作成することで、作業のメリットを拡大します。

プロンプトに柔軟性を追加するための優れた方法は、 プロンプト変数を追加することです。 プロンプト変数は、作成時にプロンプトの静的テキストに組み込まれ、実行時に動的にテキストに置き換えられるプレースホルダー・キーワードです。

注: チャット・モードでプロンプト変数を定義することはできません。

変数を使用したプロンプト・テキストの動的変更

基盤モデルの入力変数は、プロンプトをより簡単に再利用できるように、プロンプトを一般化するのに役立ちます。

例えば、生成タスクのプロンプトには、以下の静的テキストを含めることができます。

Write a story about a dog.

テキスト dog{animal}という名前の変数に置き換えると、動的コンテンツのサポートがプロンプトに追加されます。

Write a story about a {animal}.

変数 {animal}を使用すると、犬に関するストーリーのプロンプトをモデルに出すためにテキストを引き続き使用できます。 しかし、 {animal} 変数に指定された値を交換するだけで、猫、マウス、または他の動物に関するストーリーを要求するために再利用できるようになりました。

プロンプト変数の作成

プロンプト変数を作成するには、以下のステップを実行します。

  1. Prompt Lab から、あなたのプロンプトのテキストをレビューし、変数に変換するとプロンプトを再利用しやすくなる単語やフレーズがないか確認してください。

  2. ページの最初にあるプロンプト変数アイコンparameter.svgをクリックします。

    「プロンプト変数」 パネルが表示され、変数の名前と値のペアを追加できます。

  3. 新しい変数をクリックします。 変数名と、その変数のデフォルト値を追加します。

    変数名には、英数字または下線 _を含めることができますが、先頭を数字にすることはできません。

    変数のデフォルト値はフォールバック値です。この値は、変数に新しい値を指定してデフォルト値を上書きしない限り、プロンプトがサブミットされるたびに使用されます。

    以下の表に、追加する変数のタイプの例をいくつか示します。

    表 1. 変数名と値のペアの例
    変数名 デフォルト値
    アイルランド
    都市 ボストン
    プロジェクト プロジェクト X
    企業 IBM
  4. プロンプト内の静的テキストを変数に置き換えます。

    プロンプト内で置換したい単語またはフレーズを選択し、 テキスト parameter.svg ボックス内のプロンプト変数アイコンをクリックすると、利用可能な変数のリストが表示されます。 リストから、使用する変数をクリックします。

    変数は、選択されたテキストを置換します。 これは、 {variable name}という構文でフォーマットされ、変数名は中括弧で囲まれます。

    静的テキストに中括弧でフォーマットされた変数が既に含まれている場合、同じ名前のプロンプト変数が存在しない限り、それらの変数は無視されます。

    テキストアイコンをクリックすると、変数が値に置換された プロンプト全文を表示 完全なプロンプトテキストを確認できます。

  5. 実行時に変数の値を指定するには、 「プロンプト変数」 パネルを開き、 「プレビュー」をクリックして、変数の値を追加します。

    「プロンプト変数」 パネルの編集ビューから変数値を変更することもできますが、指定した値が新しいデフォルト値になります。

    ヒント: 変数に大きな値を使用したい場合は、 Python ノートブックでこれらの値を設定することをお勧めします。

モデルから必要な結果を生成するプロンプト静的テキスト、プロンプト変数、およびプロンプト・エンジニアリング・パラメーターのセットを見つけたら、プロンプトをプロンプト・テンプレート資産として保存します。 プロンプト・テンプレート資産を保存した後、プロンプトを再利用したり、現在のプロジェクトのコラボレーターと共有したりすることができます。 詳しくは、「 プロンプトの保存」を参照してください。

プロンプトの再利用の例

以下の例は、プロンプト変数を使用してプロンプトに汎用性を追加する方法を示しています。

お礼のメモの例

「ありがとう文書の生成」 組み込みサンプル・プロンプトの静的テキストを、プロンプトを再使用可能にするための変数に置き換えます。

組み込みプロンプトに汎用性を追加するには、以下のステップを実行します。

  1. Prompt Lab から、 [サンプルプロンプト] をクリックして、組み込みのサンプルプロンプトを一覧表示します。 「生成」 セクションで、 「ありがとうございます。生成」をクリックします。

    組み込みサンプル・プロンプトの入力がプロンプト・エディターに追加され、 flan-ul2-20b モデルが選択されます。

    Write a thank you note for attending a workshop.
    
    Attendees: interns
    Topic: codefest, AI
    Tone: energetic
    
  2. Review the text for words or phrase that make good variable candidates.

    この例では、以下の語が置き換えられると、プロンプトの意味が変わります。

    • ワークショップ
    • インターン
    • コード・デフスト
    • AI
    • エネルギッシュ
  3. プロンプト変数アイコン parameter.svg をクリックし、リスト内の各単語を表す変数を作成します。 現行値を変数のデフォルト値として追加します。

    表2. お礼のメモのサンプルの変数
    変数名
    イベント ワークショップ
    出席者 インターン
    topic1 コード・デフスト
    topic2 AI
    トーン エネルギッシュ
  4. 「プレビュー」 をクリックして、追加した変数を確認します。

  5. 単語の代わりに変数を使用するように静的プロンプト・テキストを更新します。

    Write a thank you note for attending a {event}.
    
    Attendees: {attendees}
    Topic: {topic1}, {topic2}
    Tone: {tone}
    

    プロンプト・エディター内の静的テキストが変数に置き換えられることを示すスクリーン・ショット。

    プロンプトの元の意味は維持されます。

  6. ここで、変数の値を変更して、プロンプトの意味を変更します。

    プロンプト変数パネルの 「プロンプト変数の入力」 ビューから、変数の値を追加します。

    表3. 変数の新しい値
    変数名
    イベント 人事プレゼンテーション
    出席者 親が必要です
    topic1 新しい親のリソース
    topic2 育児休業
    トーン 支援

    実際には、元のプロンプトを以下のプロンプトに変換します。

    Write a thank you note for attending a human resources presentation.
    
    Attendees: expecting parents
    Topic: resources for new parents, parental leave
    Tone: supportive
    

    「生成」 をクリックして、モデルがどのように応答するかを確認します。

  7. 変数の値を入れ替えて、同じプロンプトを再度再利用し、ユーザビリティー・テストの参加者に対するお礼のメモを生成します。

    表4. 変数の別の値のセット
    変数名
    イベント ユーザビリティー・テスト
    出席者 ユーザー・ボランティア
    topic1 新機能のテスト
    topic2 早期フィードバックの共有
    トーン 感謝する

    「生成」 をクリックして、モデルがどのように応答するかを確認します。

悪魔の提唱者の例

プロンプト変数を使用して、プロンプト用に作成した有効な例を再利用します。

モデルが従うパターンを確立するいくつかの例を追加することにより、期待される方法で回答するように基盤モデルをガイドすることができます。 この種類のプロンプトは、 いくつかのショットのプロンプトと呼ばれます。 迅速化のための優れた例を考案するには、想像力とテストが必要であり、時間がかかることがあります。 効果があることが証明される数回限りのプロンプトを正常に作成した場合は、プロンプト変数を追加することにより、そのプロンプトを再使用可能にすることができます。

検討中のアクションまたはプランから発生する可能性があるリスクや問題を検討する際に、 granite-13b-instruct-v1 モデルを使用したい場合があります。

例えば、プロンプトには以下の命令と例を含めることができます。

You are playing the role of devil's advocate. Argue against the proposed plans. List 3 detailed, unique, compelling reasons why moving forward with the plan would be a bad choice. Consider all types of risks.

Plan we are considering:
Extend our store hours.
Three problems with this plan are:
1. We'll have to pay more for staffing.
2. Risk of theft increases late at night.
3. Clerks might not want to work later hours.

Plan we are considering:
Open a second location for our business.
Three problems with this plan are:
1. Managing two locations will be more than twice as time-consuming than managed just one.
2. Creating a new location doesn't guarantee twice as many customers.
3. A new location means added real estate, utility, and personnel expenses.

Plan we are considering:
Refreshing our brand image by creating a new logo.
Three problems with this plan are:

プロンプトを再利用するには、以下のステップを実行します。

  1. 検討しているアクションを記述するテキストを変数に置き換えます。

    例えば、以下の変数を追加できます。

    表5. 可能なアクションを表す変数
    変数名 デフォルト値
    プラン 新しいロゴを作成してブランド・イメージを更新しています。
  2. 計画を定義する静的テキストを {plan} 変数に置き換えます。

    You are playing the role of devil's advocate. Argue against the proposed plans. List 3 detailed, unique, compelling reasons why moving forward with the plan would be a bad choice. Consider all types of risks.
    
    Plan we are considering:
    Extend our store hours.
    Three problems with this plan are:
    1. We'll have to pay more for staffing.
    2. Risk of theft increases late at night.
    3. Clerks might not want to work later hours.
    
    Plan we are considering:
    Open a second location for our business.
    Three problems with this plan are:
    1. Managing two locations will be more than twice as time-consuming than managed just one.
    2. Creating a new location doesn't guarantee twice as many customers.
    3. A new location means added real estate, utility, and personnel expenses.
    
    Plan we are considering:
    {plan}
    Three problems with this plan are:
    
    

    これで、同じプロンプトを使用して、他のアクションについてブレインストーミングするようにモデルにプロンプトを出すことができます。

  3. 別の計画を記述するように {plan} 変数のテキストを変更し、 「生成」 をクリックして新しい入力をモデルに送信します。