AIにとって分かりやすいプロンプトを書く方法

雑記
スポンサーリンク

AIが計算または推論するための具体的なルールおよび制約を設定すること

投資のアドバイスを求める場合、漠然と相談するのではなく、以下のような条件を設定するようにします。

  • NISA枠を活用するものとします。
  • 毎年12月1日にETFと現金の比率を7:3にリバランスするものとします。
  • 配当金の計算にあたっては税引前および税引後の双方の場合についてそれぞれシミュレーションしてください。

理由

LLMは膨大な学習データから確率的に言葉を紡ぐため、制約がないと「最も無難で一般的な回答(=誰にでも当てはまるが、特定の個人の役には立たない回答)」を出力するよう設計されています。

効果

前提条件(現在の状況、リソース、やってはいけないこと等)を明示することで、LLMが探索する情報の範囲が極度に絞り込まれ、出力の解像度が劇的に向上します。この土台が欠落していると、残りの要素がどれほど優れていても的外れな回答になります。

AIが「何をもって最適解とするか」の評価基準(目的関数)を設定すること

  • 引越し先の住居エリアを選定する際、漠然と相談するのではなく「新幹線のアクセス性」という評価基準を設定する
  • 目的地までの経路を相談する際、漠然と相談するのではなく「コスト効率」という評価基準を設定する

ステップバイステップでの実行を要求すること

具体的には、以下の2つのプロンプトを指します。

  • ステップバイステップで検討してください。
  • シミュレーションに際してはPythonを用いてください。

理由

いわゆる「Chain of Thought(思考の連鎖)」と呼ばれる技術です。LLMは複雑な計算や論理的推論を一度の出力で行おうとすると、途中の文脈を見失い、誤答(ハルシネーション)を出す確率が高まります。

効果

プロセスを強制的に分割・言語化させることで、各ステップでの推論精度が上がり、最終的な出力の論理的な整合性と信頼性が担保されます。

補足

情報検索や文章要約といった「深い推論を必要としないタスク」においては、必須ではありません。ただし、高度な論理展開やシミュレーションを要求するタスクにおいては、重要度が上昇します。

「前のステップの出力結果を使って、次のステップの処理を行う」という依存関係があるタスクにおいては、プロンプトを分割すること

好ましくない例

A社株とB社株を1:1とするポートフォリオにおける20年後の配当利回りを計算したいので、A社とB社の事業分析から想定利回りを算定したうえで、両社の20年間の配当推移を計算し、最後にポートフォリオ全体として合算してください。

好ましい例

  • 第1ターン: 「使用する前提数値(株価、配当利回り、税率)と、シミュレーションロジックを提示して」(ここで人間が内容をチェック)
  • 第2ターン: 「そのロジックで実際にPythonで20年分の計算を実行して」
  • 第3ターン: 「その結果をポートフォリオ全体で合算して」

理由

1. アテンション(注意力)の分散と「急ぎ足」の防止

1回で全てを指示した場合(長い例)、AIは「①事業分析と利率計算」「②20年間の配当推移の計算」「③ポートフォリオ全体の合算」という3つの重いタスクすべてに、同時にアテンションを分配しなければなりません。

  • 起きやすい失敗: AIは最終ゴールである「③全体の合算」に早く到達しようとする特性があります。そのため、途中の「①」の分析を浅く済ませたり、複雑な変数(長期的な増配率の推移など)を単純化して「②」の計算を雑に行う、といったショートカット(論理の飛躍)を起こしやすくなります。

2. 出力結果の「確定」による計算リソースの節約

プロンプトを分けた場合(分ける例)、1回目のプロンプトでAIが導き出した「A社株とB社株の予想配当利回り」は、回答として画面上に固定(テキスト化)されます。

  • ここが最大のメリット: 次のタスク(2回目のプロンプト)に移る際、AIは頭の中のワーキングメモリで「さっき計算した利率は…」と保持し続ける必要がなくなります。「すでにチャット上に印字された確定済みの数字」を前提データとして読み込み、100%のアテンションを「20年分のシミュレーション処理」のみに集中させることができます。これにより、途中で計算の前提がブレる(ハルシネーションを起こす)リスクが劇的に下がります。

プロンプトを構造化すること(### 指示 ### や ### 前提条件 ### といったマークダウン記号を用いること)

理由

LLM(大規模言語モデル)の「アテンション(注意)機構」は、入力された文章全体の文脈を計算し、「どの単語にどれくらい注意を向けるべきか」を確率で判断しています。 もし、プロンプトがただのベタ打ちの長文で、「AIにしてほしいこと(指示)」と「処理の対象となる情報(データ)」が混在していると、AIは以下のようなミスを起こしやすくなります。

  • 境界線の喪失: どこまでが「守るべきルール」で、どこからが「計算用の数値」なのかを見失う。
  • 重み付けの失敗: データの末尾に書かれた些細な情報に過剰に引っ張られ、冒頭の重要な「指示」を忘れてしまう(これを専門用語で「Lost in the Middle現象」と呼ぶこともあります)。

マークダウン記号(# など)は、人間にとっての「見出し」であると同時に、AIにとっては「ここから別のコンテキスト(文脈)が始まる」という強力な区切り記号(トークン)として機能します。これにより、AIの注意力を意図した通りにコントロールできるようになります。

マークダウン形式で記載するときの3つの基本的なルール

  1. 見出しタグ(#): 「役割」「指示」「前提条件」「出力形式」など、ブロックのタイトルを明示します(# の数を増やすと小見出しになります)。
  2. 箇条書き(- または *): 条件やルールは文章で繋がず、必ず箇条書きにします。AIの読み飛ばしを劇的に防ぎます。
  3. データ隔離タグ(””” や —): AIに処理させたい「生のデータ」をこの記号で囲むことで、「これはルールではなく、処理対象のデータである」と完全に分離します。

実践的なプロンプト例

Markdown

# 役割
あなたはプロのデータサイエンティストです。以下の【指示】と【前提条件】に従って、【データ】を処理してください。

# 指示
提供されたポートフォリオデータに基づき、Pythonを用いて各銘柄の税引後配当利回りと、ポートフォリオ全体の年間予想配当額をシミュレーションしてください。

# 前提条件
- シミュレーションのプロセスは、ステップバイステップで論理的に説明すること
- 米国株(A社, B社など)の配当金は、米国源泉徴収税(10%)を控除した上で計算すること
- NISA口座(非課税枠)での保有分と、特定口座(国内課税約20%)での保有分を分けて計算すること

# 出力形式
- 各銘柄の計算結果は、マークダウンの表形式(比較マトリクス)で出力すること
- 最後に、シミュレーションに使用したPythonコードを記載すること

# データ
"""
・A社: 10株, NISA口座, 予想配当利回り 2.4%
・B社: 5株, 特定口座, 予想配当利回り 8.5%
・現金: 100,000円
"""

タイトルとURLをコピーしました