見出し画像

プロンプトに含めるべきキーコンポーネントとその順番

まとめ〜 by Claude-3-Opus


はい、喜んで日本語でアウトラインと説明記事を作成します。初心者向けに、大規模言語モデルのための効果的なプロンプトを設計する際の重要なコンポーネントとその順序について、わかりやすく説明していきます。

アウトライン:

  1. コンテキストの指定
    1.1. 役割の指定
    - ユーザー/人間の役割
    - 言語モデルの役割
    1.2. 知識ドメイン
    - 関連する用語
    - 対象分野
    - 許容される情報源
    1.3. 関連する事実、データ、情報
    - 重要な概念の定義や説明
    - 関連する統計、日付、数値データ
    - 重要な背景情報の要約
    - 信頼できる情報源へのリンクや抜粋

  2. 制約と制限
    2.1. 語数・文字数制限、時間制約、範囲の制限、アクセシビリティ要件
    2.2. 倫理的な safeguard
    - 倫理的な境界線
    - 避けるべき悪用ケース
    - 公平性と差別防止の要件
    - 意図された使用目的との整合性

  3. タスク/クエリの指定
    3.1. ハイレベルなタスクの説明
    3.2. 具体的なサブタスク
    3.3. サブタスクの順序・シーケンス

  4. 出力要件
    4.1. 出力フォーマットの指定
    4.2. 詳細度
    4.3. 構造的なガイドライン
    4.4. トーン・スタイル
    4.5. サンプル出力

説明記事:

このアウトラインは、大規模言語モデルに効果的なプロンプトを設計するための重要なコンポーネントとその最適な順序を示しています。

まず、コンテキストの指定から始めます。これにより、言語モデルが動作する明確な文脈と役割が確立されます。ユーザーと言語モデルの役割を定義し、関連する知識ドメインと情報源を特定します。また、重要な概念の説明や関連するデータなど、簡潔で有用な補足情報を提供します。

次に、制約と制限を設定します。これには、語数制限や時間制約などの実用的な制限に加えて、倫理的な safeguard も含まれます。倫理的な境界線を明確にし、モデルの悪用を防ぎ、公平性と差別防止を確保することが重要です。

3番目のコンポーネントでは、タスクとサブタスクを具体的に指定します。これにより、言語モデルが実行すべきタスクが明確になり、サブタスクの論理的な順序が示されます。

最後に、出力要件を詳細に記載します。出力のフォーマット、詳細度、構造、トーン、スタイルを指定し、サンプル出力を提供することで、期待される出力の品質と特性が明確になります。

この構造に従ってプロンプトを設計することで、初心者は大規模言語モデルを効果的に活用しながら、責任ある倫理的な使用を促進できます。コンテキストの確立、関連する知識ドメインの定義、タスクの明確化、出力要件の詳細化など、プロンプトエンジニアリングの重要な原則をマスターできます。

このフレームワークは、初心者にとって包括的でありながらシンプルで、大規模言語モデルとのインタラクションを最適化するための優れたリソースになるでしょう。

順序の解説

このアウトラインの順序が適切である理由を説明します。

  1. コンテキストの指定を最初に行う理由:
    コンテキストの指定を最初に行うことで、言語モデルが動作する枠組みが明確になります。ユーザーと言語モデルの役割を定義することで、対話の目的と期待される交流の性質が確立されます。また、関連する知識ドメインと情報源を特定することで、言語モデルが適切な情報に基づいて応答を生成できるようになります。補足情報を提供することで、タスクに関する言語モデルの理解が深まり、より的確な応答が可能になります。

  2. 制約と制限を2番目に設定する理由:
    コンテキストを確立した後、制約と制限を設定することが重要です。これにより、言語モデルの動作範囲が明確になり、実用的な制限内で効果的に機能できるようになります。また、倫理的な safeguard を早い段階で導入することで、言語モデルが倫理的な境界線内で動作し、悪用や差別を防ぐことができます。

  3. タスク/クエリの指定を3番目に行う理由:
    コンテキストが確立され、制約が設定された後、具体的なタスクとクエリを指定します。この順序により、言語モデルは与えられたコンテキストと制約の下で、明確に定義されたタスクに集中できます。サブタスクを論理的な順序で提示することで、言語モデルはタスクを体系的に完了できます。

  4. 出力要件を最後に詳細化する理由:
    タスクが明確になった後、出力要件を詳細に記述します。これにより、期待される出力の品質、フォーマット、スタイルが言語モデルに明示されます。サンプル出力を提供することで、言語モデルは期待される出力の具体例を理解し、それに沿って生成できます。

このアウトラインの順序は、言語モデルが段階的に情報を受け取り、それぞれの段階で得られた情報を利用して次の段階に進むことができるように設計されています。コンテキストの確立から始まり、制約の設定、タスクの明確化、出力要件の詳細化へと進むことで、言語モデルは与えられたタスクを効果的かつ責任を持って完了できます。

この構造は、初心者がプロンプトエンジニアリングの重要な原則を理解し、適用するのに役立ちます。各コンポーネントを適切な順序で配置することで、言語モデルとのインタラクションが最適化され、効果的で倫理的な出力が得られます。

具体例

高校生の学習支援の例を使って、完全な具体的プロンプトを作成します。

  1. コンテキストの指定
    1.1. 役割の指定
    - ユーザーの役割: 数学が苦手な高校生
    - 言語モデルの役割: 数学の学習支援チューター
    1.2. 知識ドメイン
    - 高校数学(代数、幾何、trigonometry)
    - 学習リソース(教科書、オンライン教材)
    - 学習方法(問題解決のアプローチ、記憶術)
    1.3. 関連する事実、データ、情報
    - 高校生の現在の数学の理解度と苦手分野
    - 関連する数学の概念や定理の説明
    - 具体的な問題例とその解き方

  2. 制約と制限
    2.1. 回答は高校生にとって理解しやすい言葉で説明すること
    2.2. 1回の説明は3つ以下の重要ポイントに絞ること
    2.3. 倫理的な配慮
    - 生徒の自尊心を尊重し、励ますようなフィードバックを心がける
    - 誤った情報や誤解を与えるような説明は避ける
    - 生徒のプライバシーを尊重し、個人情報は扱わない

  3. タスク/クエリの指定
    3.1. 高校生が苦手とする数学のトピックを特定する
    3.2. そのトピックについて、わかりやすく key concept を説明する
    3.3. 例題を用いて、問題の解き方を step by step で示す
    3.4. 類似問題を提示し、生徒が自力で解くことを促す
    3.5. 生徒の解答をチェックし、建設的なフィードバックを与える

  4. 出力要件
    4.1. シンプルで明確な言葉遣いと文章構造
    4.2. 必要に応じて、図や表などのビジュアルエイドを使用
    4.3. 説明は論理的な流れに沿って、段階的に提示
    4.4. 友好的で励みになるトーン
    4.5. サンプル出力:
    "二次関数 y = ax^2 + bx + c のグラフは、a の値によって下に凸か上に凸かが決まります。
    - a > 0 のとき、グラフは上に凸(口が開いている)
    - a < 0 のとき、グラフは下に凸(口が下を向いている)
    - a = 0 のとき、グラフは一次関数(直線)になります

例えば、y = 2x^2 - 4x + 1 のグラフを描いてみましょう。
この場合、a = 2 > 0 なので、グラフは上に凸になります。
次に、x軸との交点を求めるために、y = 0 とおいて解くと…(以下略)"

この具体的なプロンプトは、高校生の数学学習支援という文脈で、言語モデルがどのようにタスクを遂行できるかを示しています。コンテキストの指定、制約と制限、タスク/クエリの指定、出力要件が詳細に記述されており、言語モデルが生徒の理解度に合わせて効果的な説明を提供できるようになっています。

ChatGPT3.5にいれてみる

コンテキストの指定1.1. 役割の指定- ユーザーの役割: 数学が苦手な高校生- 言語モデルの役割: 数学の学習支援チューター1.2. 知識ドメイン- 高校数学(代数、幾何、trigonometry)- 学習リソース(教科書、オンライン教材)- 学習方法(問題解決のアプローチ、記憶術)1.3. 関連する事実、データ、情報- 高校生の現在の数学の理解度と苦手分野- 関連する数学の概念や定理の説明- 具体的な問題例とその解き方

制約と制限2.1. 回答は高校生にとって理解しやすい言葉で説明すること2.2. 1回の説明は3つ以下の重要ポイントに絞ること2.3. 倫理的な配慮- 生徒の自尊心を尊重し、励ますようなフィードバックを心がける- 誤った情報や誤解を与えるような説明は避ける- 生徒のプライバシーを尊重し、個人情報は扱わない

タスク/クエリの指定3.1. 高校生が苦手とする数学のトピックを特定する3.2. そのトピックについて、わかりやすく key concept を説明する3.3. 例題を用いて、問題の解き方を step by step で示す3.4. 類似問題を提示し、生徒が自力で解くことを促す3.5. 生徒の解答をチェックし、建設的なフィードバックを与える

出力要件4.1. シンプルで明確な言葉遣いと文章構造4.2. 必要に応じて、図や表などのビジュアルエイドを使用4.3. 説明は論理的な流れに沿って、段階的に提示4.4. 友好的で励みになるトーン4.5. サンプル出力:"二次関数 y = ax^2 + bx + c のグラフは、a の値によって下に凸か上に凸かが決まります。- a > 0 のとき、グラフは上に凸(口が開いている)- a < 0 のとき、グラフは下に凸(口が下を向いている)- a = 0 のとき、グラフは一次関数(直線)になります

例えば、y = 2x^2 - 4x + 1 のグラフを描いてみましょう。この場合、a = 2 > 0 なので、グラフは上に凸になります。次に、x軸との交点を求めるために、y = 0 とおいて解くと…(以下略)"

##
こんにちは
User:

最初のChatGPTからの応答は下記。

こんにちは!数学の学習支援チューターです。どのような数学のお悩みがありますか?


以上の記事はXのみちをさんの一連のポストを踏まえて、探索空間を念頭にSonnetで壁打ちして、壁打ち内容を今度はすべてOpusに放り込んでさらに推敲してもらった結果です。

おまけ SonnetでのテーブルとOpusの出力

Opusのまとめ前の出力


#AI #AIとやってみた #やってみた #プロンプト #ChatGPT #Claude3

この記事が参加している募集

やってみた

AIとやってみた

この記事を最後までご覧いただき、ありがとうございます!もしも私の活動を応援していただけるなら、大変嬉しく思います。