Mastering prompt engineering
Version 1.0 - 05/14/2025

目次

紹介

現代のデジタル技術時代において、プロンプト技術を通じて人工知能の力を最大限に活用することがますます重要になっています。しかし、多くの情報源が一般的で根拠のないアドバイスや不明確な説明を広めており、誤解や非効率的な適用を引き起こしやすい状況です。これにより、時間と労力の無駄が生じ、AIの真の潜在能力を活用する能力が低下しています。

ソフトウェア技術分野での10年以上の経験と、OpenAI、Google、Anthropicなどの信頼できる情報源からの研究とまとめを通じて、読者の皆様にプロンプト設計を最適化するための基礎知識と実践的な方法を共有したいと考えています。私の目標は、AI技術に正しく、効果的にアプローチし、仕事や個人開発プロジェクトにおいて最大の価値を提供することです。

非公式な情報源は、簡単にトリックを信じさせますが、実際には効果的ではありません。または、AIの動作方法について誤解を招くことさえあります。ほとんどの場合、ゼロショットプロンプティングを適用し、モデルの能力に大きく依存しています。では、ゼロショットプロンプティングとは何でしょうか?

ゼロショットプロンプティング

ゼロショットプロンプティングは、大規模言語モデル(LLM)と対話する技術で、例示を提供する必要はありません。これは、LLMの知識を一般化する能力に依存しています。

基本的に、LLMの動作方法は、文脈に基づいて次の単語を予測することです。したがって、明確なプロンプトを受け取ると、学習した知識を適用して適切な応答を生成できます。

ゼロショットプロンプトの技術が間違っているとは思いません。実際、AIと簡単な要求だけで作業できるのは素晴らしいことです。しかし、現時点では、AIはまだそのレベルに達していません。

利点

1. シンプル: ゼロショットプロンプティングは追加データを必要としないため、関連データが入手困難または希少な場合に価値があります。

2. 柔軟性: プロンプトは必要に応じて簡単に調整できます。プロンプトの改善や更新には労力がかかりません。

3. 多様性: ゼロショットプロンプティングは、LLMの知識を多様な分野で活用する印象的な能力を示します。

制限

1. モデルの能力に大きく依存: モデルがプロンプトを理解できないか、その分野の知識を持っていない可能性があります。

Llama 3.1の例: プロンプト: 約200語のベトナム語の長いジョークを書いてください。 結果は、無限のトークン繰り返しエラーまたはランダムな文字列です。
その後、この文書自体を文脈に入れます。 プロンプト: ゼロショットプロンプティングとは何ですか? 結果: ゼロショットプロンプトは、特に大規模言語モデル(LLM)などの人工知能(AI)モデルのための質問(プロンプト)設計技術で、モデルはそのタスクを実行するための具体的な例なしでタスクを実行するように要求されます。LyonとGarman(2000)は、ゼロショット学習を、モデルが他のタスクから学んだ知識を再トレーニングなしで新しいタスクに適用できる方法として定義しました...
したがって、Llama 3.1がベトナム語を理解していないわけではありません。文書では、Llamaが答えた内容を正確に書いていません。それは私が望む回答についての完全な文書を提供したためです。

2. プロンプトの品質に依存: ゼロショットプロンプティングの効果は、プロンプトがどれだけ明確かつ具体的に書かれているかに大きく依存します。

上記の例では、GoogleでLyonとGarmanに関する情報を見つけることができませんでした。そのため、私が望むものを明確に要求する必要がありました。

プロンプト: ゼロショットプロンプトとは何ですか?提供された情報を基に、簡潔に日本語で答えてください。 結果: ゼロショットプロンプトは、AIに具体的な例を提供せずにタスクを実行させる技術です。AIは、トレーニングプロセスで得た既存の知識に基づいて応答を生成し、参照データやユーザーからの具体的な指示を必要としません。例: 「春についての詩を書いてください」と指示し、詩の例を一切提供しない。

3. 複雑なタスクの難しさ: 複雑な推論や特別なフォーマットを必要とするタスクでは、ゼロショットは他の方法(例: フェウショット)ほど効果的でない場合があります。

プロンプト: 以下の文字を組み合わせて、完全な日本語の単語を作成してください: o / ã / h / h / n / à 結果: 以下の文字から作成された完全な日本語の単語: ほーん

4. 結果の一貫性の欠如: ガイドとなる例がないため、モデルは同じプロンプトに対して異なる結果を生成する可能性があり、表現方法に依存します。

上記の例でも、実行するたびに結果が異なります。

1. 以下の文字から作成された完全な日本語の単語: ほーんは。 2. 提供された文字は: o / ã / h / h / n / à 作成可能な完全な日本語の単語: "はーんは"; 3. 提供された文字は: o / ã / h / h / n / à。これらを組み合わせて、正しい可能性のある日本語の単語: "はーおん"

ゼロショットプロンプティングが効果的に実行できるいくつかのアプリケーション

1. テキスト分類:

以下の段落を政治、経済、スポーツ、エンターテイメントのいずれかのカテゴリに分類してください: [段落]

2. テキスト要約:

以下の記事を3つの主要なポイントで要約してください: [記事の内容]

3. 感情分析:

以下の顧客レビューの感情を分析し、それがポジティブ、ネガティブ、またはニュートラルのいずれであるかを示してください: [顧客レビュー]

4. データフォーマット変換:

以下のテキストを、名前、年齢、職業、趣味のフィールドを持つJSONテーブルに変換してください: [テキストの説明]

ゼロショットプロンプティングは、単純なタスクに非常に有用です。私は、より複雑なタスクをわずかなプロンプトで実行できるようになるのを長く待っていました。しかし、今日のAIを活用するためには、戦略が必要です。

基準を特定する

プロンプトの設計を始める前に、最も重要なのは、目標と成功基準を明確に特定することです。そうでなければ、結果を主観的に評価し、測定ができなくなります。LLMに道を探らせるのではなく、正確に何を望んでいるのか、そしてその目標を達成したかどうかをどのように知るかを特定してください。

良い基準は以下の通りです:

具体的(Specific): 目標について明確で正確である必要があります。

例: コーヒーの健康効果について、非専門家の読者向けに500語のブログ記事を書く。少なくとも3つの参考文献を含める。

測定可能(Measurable): 明確な指標や尺度が必要です。

上記の例では、成功基準は500語の記事であり、少なくとも3つの参考文献を含むことです。

達成可能(Achievable): 目標は、経験、業界のベンチマーク、または以前の研究に基づいている必要があります。現在のモデルの能力を超える過度に高い目標を設定すべきではありません。

関連性(Relevant): 目的とニーズに応じて基準を調整してください。医療アプリケーションでは高い精度が非常に重要ですが、一般的なチャットボットではそれほど重要ではありません。

明確なプロンプトの黄金律
タスクをよく理解していない同僚に説明するようにプロンプトを提示し、指示に従うように依頼してください。彼らが混乱する場合、AIも同様に混乱する可能性が高いです。

Prompt Areas

効果的なプロンプトを作成するための4つの考慮すべき要素

人工知能(AI)の力を最大限に引き出すためには、特に注目すべき4つの核心的な要素があります。これらの要素は、あなたの指示を明確で正確かつ目的に合ったものにするのに役立ちます。これらを理解し、うまく活用することで、質の高いプロンプトを簡単に作成し、AIの誤解を減らし、仕事の効率を向上させることができます。

1. ペルソナ(役割またはキャラクター)

役割を割り当てることは、プロンプト内でAIの役割を明確に定義することです。AIに特定の「キャラクター」や役割を設定することで、AIが適切な範囲、スタイル、目標を正しく理解するのを助けます。例:

• 「あなたは商業契約に特化した弁護士です。」

• 「あなたは銀行業界のデータ分析の専門家です。」

• 「あなたはクリエイティブなマーケターです。」

2. タスク(任務または仕事)

明確なタスクのプロンプトは、AIが迷うことなく、望ましい結果に集中しやすくします。一般的な説明ではなく、前のセクションで分析したように、明確かつ具体的に説明する必要があります。

3. コンテキスト(文脈)

コンテキストは、タスクに関連する具体的な情報、データ、状況を提供する部分です。これは、AIが内容、背景、関連データをより深く理解し、適切で正確な回答を生成するのに役立ちます。

4. フォーマット(形式)

フォーマットは、あなたが望む回答の表示形式やスタイルです。目的と最終的な結果に応じて、明確なフォーマットを定義することで、結果が明確で使いやすくなります。

ペルソナ - 役割

AIに役割(ペルソナ)を割り当てることは、効果的なプロンプト設計において重要な技術です。AIに特定の役割を割り当てると、その役割のスタイルと目標に従って行動し、回答します。

なぜAIに役割を割り当てる必要があるのか?

AIに役割を割り当てることには、多くの重要な利点があります:

1. 正確性の向上: AIは割り当てられた役割の専門分野に集中し、ミスを最小限に抑えます。

2. トーンの調整: 回答のスタイルが役割に適したもの(簡潔、正式、わかりやすい)になります。

3. タスクへの集中: AIは仕事の範囲を明確に理解し、関連のない情報に気を散らすことがありません。

AIに適切な役割を割り当てることは、その潜在能力を最大限に引き出す鍵です。適切な役割を設定するだけで、AIを特定の分野の専門家に変え、正確で要求に合った分析や回答を生成することができます。これは、時間を節約し、仕事の質を向上させ、AIとの作業プロセスをうまくコントロールするための効果的な方法です。

私の見解では、AIに性格やユーザーとの関係を追加することは、セッションをより生き生きとさせるだけでなく、会話に親しみやすさと自然さをもたらします。AIが特定のキャラクターを演じ、独自の性格とユーザーとの特定の関係を持っていることを理解すると、明確な視点や意見を表現しやすくなり、あなたが望むコミュニケーションスタイルに適応しやすくなります。日本語では、呼び方や態度の表現には多くのニュアンスとスタイルがあり、英語の「You」や「Me」のように単純ではありません。例えば、親密で親しみやすい会話を構築したい場合、「君」の代わりに「お前」と呼び、「私」の代わりに「俺」と自称することができます。

例:

お前は厳しい投資家だ。お前と俺は同い年だから、親しみを込めて「俺」と自称し、俺を「お前」と呼んでくれ。

コンテキスト - 文脈

文脈は、AIが状況、目標、および実行すべきタスクの範囲をより深く理解するのに役立ちます。良い文脈は、AIに「なぜ」と「どのように」を理解させ、それによって適切で効果的な解決策を提供します。

例: 当選の知らせの電話を受けたとき。 通常、このような嬉しい知らせには興奮するでしょう。 しかし、最近では当選詐欺の情報が増えているため、疑いを持ち、その電話を受ける気にならないかもしれません。

なぜ文脈が重要なのか?

十分な文脈を提供することには多くの利点があります:

1. 精度の向上: AIは問題の背景を理解することで、より適切な回答を提供できます

2. 誤解の減少: 明確な文脈は、AIが誤った推測を避けるのに役立ちます

3. 結果の最適化: AIは重要な情報に集中し、最も適切な情報を提供できます

最適化の方法

1. 明確な構造: 情報を論理的に整理し、適切な見出しとフォーマットを使用します

例: マークダウンを使用して項目をマークする

以下は最近の記事です: ## 記事1 **記事1のタイトル(太字)** 記事1の内容 ## 記事2 **記事2のタイトル(太字)** 記事2の内容 ## 記事3 **記事3のタイトル(太字)** 記事3の内容

2. 情報の選別: 必要な情報のみを提供し、文脈を混乱させないようにします

3. 適切なフォーマットの使用: マークダウン、XML、またはデリミタを使用して情報の部分を区別します

例: XMLを使用して長文をマークする

<document> {{長文の内容}} </document>

あなたが気づいていない文脈の大きさに関する競争があります。現在のLLMモデルは、文脈の大きさを大幅に増やす傾向があります。主な目的は、より大きな文脈を収容することです。 実際には、AIが特定の分野の専門家になるためには、ユーザーはできるだけ多くのドキュメントを提供する傾向があります。

大きな文脈とその効果的な使用方法

多くの複雑なタスクでは、十分に長く明確な文脈を提供することが、AIがあなたの要求を正しく理解するための鍵となります。LLMモデルは、長いデータシーケンスを処理する能力がますます強くなり、会話やタスク全体で関連情報を維持するのに役立ちます。

1. より多くの情報を保持: 多くのデータを分析する必要があるタスク、複雑な質問、または大きなドキュメントでは、長い文脈がモデルが重要な詳細を見逃さないようにします

2. より高い精度: 十分なデータがあると、AIはより簡単に総合し、正しく推論し、誤解や重要な部分を見逃すことを避けます

3. 多様なタスクでより興味深く: 長いコンテンツの作成、データ分析、問題解決、長期的な会話など、すべて大きな文脈を必要とします

AIは、大きな文脈で作業するときによく忘れます。私たちが記憶する方法と同様に、始めと終わりが最も重要な部分です。したがって、大きな文脈では、それを中間部分に置き、最後に要求を繰り返します。

フォーマット - 形式

LLMがあなたの目的に合った方法で回答するようにフォーマットします。良いフォーマットは、結果を明確にし、使いやすく、後で編集する時間を節約します。

一般的なフォーマット

以下は、AIに希望するフォーマットで結果を返すためのいくつかの簡単で一般的な方法です:

1. JSONフォーマット

プログラミングや分析のために、構造化されたデータが必要な場合に使用します。

例:

人口が1億人以上の国のリストを作成し、以下のフィールドでJSON形式で返します: - name: 国名, - population: 人口, - largest_city: 最大の都市. 結果: { "name": "中国", "population": 1398000000, "largest_city": "上海" }

2. 複数の選択肢

複数の結果を比較し、最良の結果を見つけたい場合に使用します。

例:

若い読者を引き付けるコーヒーに関する記事のタイトルを10個提案してください

3. テキストまたは主要なポイントのリスト

これは最も基本的な形式ですが、AIがあなたの要求を明確に理解できるように、表示方法を指定する必要があります。

例:

500語以下の段落で、3つの部分に分けて回答してください

適切なフォーマットを使用する利点

1. 一貫性の向上: 結果が統一された構造で返され、処理と分析が容易になります

2. 時間の節約: 結果の編集と再フォーマットの時間を最小限に抑えます

3. 容易な統合: 明確な構造を持つ結果は、他のシステムやツールとの統合が容易です

ここまでで、効果的なプロンプトの構造を確認しました。簡単にまとめると以下のようになります: [Persona] あなたは...の専門家です (具体的な役割を割り当てます。敬称や性格を追加することもできます) [Task] ...に関する記事を作成してください (明確な目標) [Context] 以下は関連情報です... (情報を追加し、テキストを構造化してマークします) [Format] ...で回答してください (結果のフォーマット)

Chain of Thought

Chain of Thought - 連鎖思考の技術

研究、分析、問題解決などの複雑なタスクでは、LLMに考える余地を与えることで、そのパフォーマンスを大幅に向上させることができます。この技術は、連鎖思考(CoT)と呼ばれ、LLMに問題を段階的に分解することを促します。

最も簡単な方法:プロンプトに「段階的に考えてください」と追加する

この方法は、具体的な思考のガイドが欠けています。多くの場合、理想的ではありません。

思考のステップをガイドする

LLMが思考プロセスで実行するステップを概説します。

例: メールに返信する前に段階的に考えてください: 1. まず、貢献者の貢献履歴と過去に支援したキャンペーンに基づいて、貢献者を惹きつける可能性のあるメッセージを考えます。 2. 次に、彼らの履歴に基づいて、Care for Kidsプログラムのどの側面が彼らを惹きつけるかを考えます。 3. 最後に、あなたの分析を使用して、貢献者に特化したメールを書きます。

思考と回答を分離する

これにより、デバッグや結果の改善が容易になります。ただし、推論ができるモデルでは不要です。

例: 以下のフィールドを含むJSON形式で回答してください: 1. thought: あなたの思考 2. answer: あなたの回答

連鎖思考の重要性

この技術は、プロンプトに関する公式文書で最も頻繁に言及される技術の一つです。現在のLLMモデルの精度と複雑な問題解決能力を向上させるための標準となっています。

研究によると、連鎖思考を使用することで、モデルが多段階の推論を必要とする問題を処理し、精度を大幅に向上させ、エラーを最小限に抑え、論理的で一貫性のあるフィードバックを提供することができます。これはもはや新しい技術ではなく、プロの開発者やプロンプトエンジニアの指針となっています。

Googleの研究によると、大規模言語モデル(LLM)は、「これをしないで」や「あれをしないで」などの否定的な指示に対して反応が悪いことがわかっています。そのため、否定的な指示を使用する代わりに、AIに具体的で明確な指示を与えることが重要です。例えば、「長々と書かないで」と言う代わりに、「3つの主要な文で簡潔に書いてください」と指示します。これにより、AIは方向性を明確に理解し、誤解を減らし、正確な応答を提供することができます。

Few-shot prompting

Few-shot promptingは、大規模言語モデル(LLM)と対話する技術で、主要なタスクを実行する前に、プロンプト内でいくつかの明確な例を提供します。単一の命令だけを出す(ゼロショットのように)のではなく、few-shot promptingは、モデルが望ましい結果の処理方法とフォーマットを理解するのを助けるために、具体的な例を事前に見せることで実現します。

この方法では、プロンプトにサンプル例を添付し、入力と期待される結果を明確に説明します。モデルがこれらの例を見ると、特に複雑な推論、フォーマット処理、または特定の要件を必要とするタスクにおいて、予測精度が大幅に向上します。

利点

1. 精度の向上: 例は、モデルが表現、フォーマット、または必要な内容をよりよく理解するのを助け、誤ったまたは無関係な応答を減らします。

2. 柔軟性とカスタマイズ性: 異なる目的に合わせて例を簡単に追加または編集できます。

3. 大規模なデータを必要としない: 少数の例だけでよく、ファインチューニングのようにモデルを再トレーニングする必要はありません。

制限

明確な例の設計が必要: 例は十分に明確で、適切で正確である必要があり、誤解を避けるために重要です。

Few-Shot Promptingの例

以下は、段落を政治、経済、スポーツ、エンターテイメントのカテゴリに分類する例です。 例1: "全国で国会選挙が行われています。" > 政治 例2: "今四半期の株式市場は大幅に成長しました。" > 経済 例3: "ワールドカップ決勝戦が行われました。" > スポーツ 次に、次の段落を分類してください: "[段落]"

このように、すべての最も強力な技術をまとめます。最終的な構造テンプレートは次のとおりです: [Persona] あなたは...の専門家です。 (具体的な役割を割り当てます。称号や性格を追加することもできます) [Task] ...についての記事を作成してください。 (明確な目標) [Context] 以下は関連情報です... (情報を追加し、テキストを構造化してマークします) [Examples] (例を示します) [Guidelines] (思考のステップをガイドします) [Task] (長いコンテキストの場合、タスクを再度提示します) [Format] ...で回答してください。 (結果のフォーマット)

システムプロンプト

システムプロンプトは、LLMモデルに対して最初に設定される命令や指示であり、会話やタスク全体での応答の仕方を形作ります。それは「背景フレーム」や「一般的なルール」として機能し、AIがそのセッションでのスタイル、範囲、目的を明確に理解するのに役立ちます。

システムプロンプトの役割

1. AIの行動を方向付ける: AIがあなたの目的に合った範囲、トーン、応答スタイルを理解するのを助けます。

2. 一貫性を保つ: 長い会話や複数のやり取りの中で、システムプロンプトはAIが適切な応答スタイルを維持し、方向性を失ったり目標を見失ったりするのを防ぎます。

3. 内容と制約を管理する: AIの回答に対するルール、制限、または最低基準を設定することができ、例えばセンシティブな内容や不適切な内容を避けることができます。

4. AIの使用効率を最適化する: 正しくシステムプロンプトを設定すると、AIはより正確で適切な応答を返すことができ、使用しない場合や誤って使用する場合と比べて効果的です。

現在の一般的な間違い

AIアプリケーションは、ユーザーエクスペリエンスを簡素化するためにこの部分を隠すことが多いです。そのため、ユーザーは通常のメッセージにすべてのプロンプトを入れなければならないことがよくあります。システムプロンプトと通常のプロンプトの役割と力は、会話の中で完全に異なります。 あなたが苦心して構築したプロンプトが通常のメッセージに置かれると、各応答ごとに弱まり、システムプロンプトほど重視されなくなります。 ChatGPTでは、Custom GPTやOpenAI Platformで見つけることができます。 Anthropicでは、Anthropic Consoleで見つけることができます。

FeelAI Bot Builderがあなたに遊び場を提供します

簡単に設定を変更

多様なモデル、多くの無料モデル

多くの事前構築ツールを体験

他のプラットフォームとの統合

友人や同僚とボットを共有

System prompt

理論モデル

思考するLLMは、論理的推論と構造化された思考を使用して複雑な問題を解決する特別な人工知能であり、単純なモデルをはるかに超えています。彼らは問題を分析し、異なるアプローチを探り、解決策を確認することができ、しばしば「思考の連鎖」プロセスに関与し、答えを出す前に問題の各ステップを「考える」ことができます。

主な特徴

1. 論理的推論: これらのモデルは、データパターンからの予測に頼るだけでなく、推論と推論を使用してより正確な答えに到達します。

2. 構造化された思考: しばしば「思考の連鎖」方法を適用し、問題を小さなステップに分割し、思考プロセスを説明します。

3. 問題分析: 複雑な問題をより管理しやすい小さな部分に分解する能力があります。

4. 解決策の検証: 最適な方法を見つけるために異なるアプローチを試し、解決策の正しさを確認します。

5. バックトラッキング: 行き詰まった場合、これらのモデルは戻って別の方法を試すことができます。

6. 問題解決能力の向上: 論理的推論、数学的計算、またはプログラミングを必要とするタスクに特に適しています。

論理的推論、数学的計算、またはプログラミングを必要とするタスクに特に適しています。

AIにおける理論モデルを理解し適用することで、特に論理的思考と深い分析を必要とする分野で、複雑な問題を体系的かつ効率的に解決することができます。

FeelAI Bot Builderでの体験

FeelAI Bot Builderは、試すことができる多くの理論モデルを提供します。会話を変えて違いを確認してください。

Reasoning models
Reasoning models

結論

このドキュメントの内容を読んでいただき、誠にありがとうございます。私の共有が、AIと効果的に働く方法をより深く理解するのに役立つことを願っています。

最後に、現在のLLMに対する私の感想を共有したいと思います。多くの実験を行いましたが、あくまで主観的な評価です。あなたのニーズに合ったモデルを迅速に見つけるのに役立つことを願っています。

Claude

Claudeは、コンテキスト理解力が最も優れた、創造性とコンテンツ作成に最強のモデルです。他のモデルに比べて価格は高いですが、その価値は十分にあります。同じタスクで他のモデルを試した結果、この結論に至りました。

Gemini

低価格、優れたインフラ、高速な速度を備えたGeminiは、高速処理が求められるタスクに最適なモデルです。コンテキストの一部を無視することがありますが、データ型の一貫性を保ち、システム構築に非常に適しています。

Grok

Grokは、現在のモデルの中で最も賢く、感情豊かなモデルです。コンテンツ作成や新しいアイデアの議論に非常に優れています。

Deepseek

自然言語処理に関しては、Claudeには及びませんが、Geminiよりも優れています。ただし、インフラが不安定で速度が遅いという大きな欠点があります。コスト削減のためにClaudeの代わりに使用することができます。

Qwen

Qwenは自然言語処理に強く、Claudeには及びませんが、Deepseekよりも安定しています。Qwenの速度は速く、価格も安いため、システムタスクでGeminiの代わりに使用することが多いです。

重要なのは、すべてのケースに適用できる万能の公式はないということです。プロンプトの設計は、AIモデルに対する深い理解を必要とせず、使用するコンテキストと各状況の具体的な目標が重要です。最良の結果を得るために、継続的に実験、評価、調整を行う必要があります。

プロンプトは技術的なスキルだけでなく、芸術でもあることを理解していただきたいと思います。創造性、忍耐力、批判的思考力が求められます。新しいアイデアを試し、コミュニティと経験を共有することを恐れないでください。

最後に、常に学びとアップデートの精神を保ってください。AIの分野は急速に発展しており、新しい技術が次々と登場します。基本原則をしっかりと理解することで、将来の進歩に適応しやすくなります。

直接私に連絡してください。あなたの具体的なタスクをサポートできることを嬉しく思います。