プロンプトエンジニアリングは、さまざまなユースケースに合わせて大規模言語モデル (LLM) を効果的に構築、開発、最適化する比較的新しい分野です。 これは、合成 AI ソフトウェア プログラムに指示して、目的の結果を正確かつ効率的に生成する技術とプロセスです。
一般的な AI プログラムに見られる高度なアルゴリズムによって生成される出力の範囲は膨大であるため、このタスクは簡単ではありません。 さらに、大規模な言語モデルの膨大なデータ プール (日々増加するコーパス) により、AI 生成プログラムが幅広い出力を提供できるようになります。
したがって、効果的なプロンプト手法を実現するには、プロンプト手法を全体的に理解し、うまく作成されたプロンプトの重要なヒントを理解し、効果的な AI プロンプトの主要な使用例を認識している必要があります。本記事では、プロンプトエンジニアリングを実現するために必要なPrompt Engineering Guideについて解説します。
1. プロンプトエンジニアリングテクニックを早く理解する
創造的な人工知能が人気を博しており、専門職にもレジャー用にも幅広い革新的なアプリケーションやツールが登場しています。 これFは主に、ChatGPT、Google Bard、または言語モデリングを大いに活用する AI チャットボットの成功と人気によるものです。
今日の一般的な AI プログラムの出力はあらゆる種類のマルチメディアに及び、数秒で回答が得られる速度と組み合わせることで、私たちの日常業務を完了する上で大いに役立つことが約束されています。
- 画像ジェネレーター: Open AI Dall-E や Midjourney などの画像ジェネレーターは、3D コンテンツや AI アートワークの作成に最適です。
- コード ジェネレーター: Copilot などのコード ジェネレーターは、コード スニペットを生成し、開発者のコーディング タスクを支援するために使用されます。
- サウンドジェネレーター: DeepMind の WaveNet などの音声合成モデルは、人間のようなリアルな音声を作成するために使用されます。
このような大規模な言語モデルの膨大な量のデータに基づいて回答を合成および生成できるため、ユーザーは、一般的な AI アプリケーションから最良の回答を得るのが難しい場合があることに気づきました。「ユーザーは、一般的な AI プログラムが Google の簡単な検索であるかのように、ランダムな言葉のプロンプトを入力します」と言うことは、よく誤解されてしまいました。 これでは最適な結果は得られません。
つまり、合成 AI ツールの使用に対する意識が高まっています。出力はプロンプトと同じくらい優れています。 また、プロンプトは、中心となるコンセプトだけでなく、コンテンツの構築に使用しているメディアの種類 (写真、ビデオ) にも基づいた要素を含めるように構築する必要があります。
AI プログラムは非常に創造的ですが、ユーザーの意図を予測することはできません。ユーザーは、ユーザーが望むものを正確に AI プログラムに伝える必要があります。 そのため、具体的で効果的なプロンプトを作成するプロンプト エンジニアリング スキルがますます重要になっています。
2. プロンプトエンジニアリングを実装する方法 | Prompt Engineering Guide
2.1. プロンプトエンジニアリングの基本
2.1.1. プロンプトエンジニアリングの標準的な定義
プロンプト エンジニアリングについて詳しく説明する前に、いくつかの標準的な定義を確立しましょう。
- ラベル: 感情分析、要約、質問応答など、言語モデルが焦点を当てたい特定のカテゴリまたはタスク。
- ロジック: 指定されたプロンプト内での言語モデルの動作をガイドする、基礎となるルール、制約、または指示。
- モデル パラメーター (LLM パラメーター): 生成プロセスに影響を与える、温度、top-k、top-p サンプリングなどの言語モデルの特定の設定または構成を指します。
2.1.2. プロンプトについての基本とプロンプトの書式設定
プロンプトをデザインするときは、基本的な構造と書式設定テクニックを理解することが不可欠です。 プロンプトは多くの場合、モデルの応答をガイドする指示とプレースホルダーで構成されます。 たとえば、センチメント分析では、プロンプトに、「次のテキストのセンチメントを分析します。」などの指示とともに、分析するテキストのプレースホルダーが含まれる場合があります。 明確で具体的な指示を提供することで、モデルの焦点を導き、より正確な結果を生成できます。
プロンプトの要素:
適切に設計されたプロンプトには、いくつかの重要な要素が含まれている必要があります。
- コンテキスト: モデルがタスクやクエリを確実に理解できるように、関連する背景やコンテキストを提供します。
- タスクの仕様: 概要の生成や特定の質問への回答など、モデルが焦点を当てるタスクや目的を明確に定義します。
- 制約: 語数制限や特定のコンテンツ要件など、モデルの動作をガイドするための制限や制約が含まれます。
2.1.3. プロンプトエンジニアリングのユースケース
プロンプトエンジニアリングの考えられるユース ケースについて疑問に思っている場合は、この数が固定されたものではなく、潜在的なユース ケースの数は常に増加していることを認識してください。
以下に示すように、現在のところ、ブログ投稿の作成から完全なコンテンツの概要まで多岐にわたります。 一般的な AI ツールが開発され、技術分野が急速に進歩するにつれて、ユースケースの数は金融、製造、ヘルスケアなどにわたって拡大します。
以下の表では、Miichisoft が プロンプトエンジニアリングの現在の使用例をいくつか示しています。
2.2. プロンプトをデザインする一般的なヒント
- 多くの実験を行う:効果的なプロンプトを作成するには、最適な結果を得るために多くの実験が必要なプロセスであることを理解することが重要です。シンプルなプロンプトから始めて、要素や文脈を段階的に追加することで、出力結果を向上させることができます。
- タスクを分割する:複数のサブタスクを含む大きなタスクの場合、一度にすべての出力を生成しようとするよりも、徐々にタスクを構築することが重要です。タスクを分割することで、より正確な結果が得られます。
- 直接なコマンドを使用する:言語モデルに与える指示では、「書く」「分類する」「要約する」「翻訳する」「並べ替える」といったコマンドを使用することで、特定の出力を得るようモデルを導くことができます。
- コンテクストを提供する:より最適な結果に近づくためには、異なるキーワードや文脈、データを提供することが必要です。通常、タスクに関連した具体的で適切な文脈を提供すれば、結果はより良くなる傾向にあります。
- 区切りを利用する:プロンプトの最初に指示を配置し、「###」などの区切り記号を使用して指示と文脈を区切ることが推奨されます。
2.3. プロンプトエンジニアリングを実装する方法 | Prompt Engineering Guide
適切に設計されたプロンプトには、モデルの機能と制限を理解し、生成される出力の品質と関連性を最適化するようにプロンプトを調整するスキルが必要です。
慎重に作成されたプロンプトには、次のようないくつかの核となる要素が含まれている必要があります。
2.3.1. コンテキストを提供する
これが最も重要です。 プロンプトに適切なコンテキストを使用することは、重要な詳細から必要な指示に至るまで、関連するすべての背景情報を含めることを意味します。 医療、金融、またはソフトウェア コーディングのコンテキストでプロンプトを作成していますか? そのコンテキストを含めます。 同様に、プロンプトは過去の文書や将来を見据えたフィードバックを提供するように設計されていますか? 時間に敏感な重要なコンテキストをすべてプロンプトに含めます。
たとえば、光合成の科学的プロセスに関する情報を作成するとします。 Google に詳しい場合は、プロンプトに「光合成」と入力するだけです。
曖昧な 1 語のプロンプトでも、いくつかの結果が得られます。
ただし、光合成の生物学的基盤をより完全かつ詳細に理解するために、より完全で深い文脈を含む提案の結果を見てみましょう。
AI モデルに解決してもらいたいタスクや質問を明確に定義します。 期待する情報や結果については、非常に具体的にしてください。必要と思われるよりも詳細を追加してください。
たとえば、出力でデータを探しているのか計算を探しているのかを指定し、プロジェクトに関連するデータの配列全体を含めることで、LLM は探している干し草の山から針を見つけることができます。
2.3.2. すべての制約を追加します
単語数、時間枠、特定の基準など、AI モデルが考慮する必要がある制限や制約がある場合は、プロンプトに明確に記載します。 すべての一般的な AI ソフトウェアがデータの海にアクセスできることを認識してください。 プロンプトに非常に厳しい制約が組み込まれていないと、実際に望む以上の結果を求めることになります。
2.3.3. Temperatureと Top-K および Top-P の実験
Temperature、top-k、top-p などのパラメータを調整すると、モデルの出力のランダム性や創造性を制御できます。 プロンプトを作成するときは、これらのパラメーターを試して、好みに基づいて生成される出力を微調整してください。
Temperature値
Temperature値は、生成される応答のランダム性または創造性を指します。 0.8 や 1.0 などの高いTemperature値では、出力がよりランダムで予測不能になりますが、0.2 や 0.5 などの低いTemperature値では、出力がより集中的で決定的になります。 おそらく、ビジネス プロジェクトの場合はより正式な応答を作成し、レクリエーション プロジェクトの場合はよりランダムなアプローチを作成する必要があるでしょう。
Temperature値とその意味:
Top-K 値
Top-K 値は、テキスト生成中に考慮される可能性が最も高い次のトークンの数を決定するパラメーターです。 簡単に言うと、Top-K 値が高くなると、より多くの代替トークンが考慮されるため、より多様で創造的な出力が可能になります。 逆に、Top-K 値が低いほど、より保守的で予測可能な応答が得られます。
Top-K 値とその意味:
Top-P 値
Top-P 値は、テキスト生成中に生成される応答の多様性を制御するための代替方法です。
Top-K のような固定数の最も可能性の高いトークンを考慮する代わりに、Top-Pのサンプリングでは、累積確率が特定のしきい値またはパーセンテージに達するまでトークンを考慮します。 このしきい値は動的であり、トークン生成ステップごとに変化する可能性があります。
たとえば、Top-P 値が 0.8 に設定されている場合、モデルはそれらのトークンの累積確率が 80% に達するまでトークンを考慮します。
Top-P 値とその意味:
2.3.4. プロンプトをテストして繰り返す
望ましい結果をより効果的に得るために、さまざまなプロンプトを試してみることもできます。 これは効果的なアプローチであるだけでなく、テクニックを迅速に向上させるために可能な最も効果的な戦略の 1 つでもあります。
したがって、ためらわずに、さまざまなプロンプトを何度も試してみて、生成された結果を評価して、プロンプトのテクニックを改良し、改善してください。 アジャイルの専門家が学んだように、この広範な反復なしにトップレベルのアジャイル エンジニアになることはできません。
重要なポイント: 望む結果が得られたと思われる場合でも、ためらわずにさらに深く掘り下げて再試行してください。 継続的な努力にマイナス面はありません。
2.3.5. モデルの限界を理解する
これは、多くのエンジニアがすぐに受け入れてしまう難しい現実です。特定の一般的な AI モデルには、優れた大規模な言語モデルが含まれている可能性がありますが、そのモデルはすべての質問に答えることはできません。 たとえば、ヘルスケア市場にサービスを提供するために構築された大規模な言語モデルは、MBA が入力する可能性のあるトップレベルの財務関連のクエリのほとんどを処理できない可能性があります。
したがって、使用している特定の AI モデルの制限と機能の範囲内で最適なプロンプトを設計することが重要です。 これは、モデルの強みに合わせたプロンプトを設計し、出力の制限による潜在的な落とし穴を最小限に抑えるのに役立ちます。
2.4. プロンプトエンジニアリングの技術
プロンプト エンジニアリングの機能をさらに強化するには、いくつかの高度なテクニックを使用できます。
N ショット プロンプト:
N ショット プロンプトには、特定のタスクに対して限定されたラベル付きデータまたはラベル付きデータを使用しないモデルの微調整が含まれます。 ラベル付きの少数の例を提供することで、言語モデルはタスクを一般化して正確に実行することを学習できます。 N ショット プロンプト ゼロ ショットおよび少数ショット プロンプト アプローチ。
ゼロショットプロンプト:
ゼロショット プロンプトでは、モデルは明示的にトレーニングされていないタスクを実行するようにトレーニングされます。 代わりに、プロンプトはラベル付きの例なしで明確なタスク仕様を提供します。 例えば:
数ショットのプロンプト:
少数のショットのプロンプトでは、特定のタスクを実行するために、少数のラベル付きサンプルを使用してモデルがトレーニングされます。 このアプローチにより、モデルは限られた量のラベル付きデータを活用して学習し、一般化することができます。 例えば:
思考連鎖 (CoT) プロンプト
CoT プロンプトには、複雑なタスクを一連の単純な質問またはステップに分解することが含まれます。 一貫したプロンプトのチェーンを通じてモデルをガイドすることで、コンテキストを認識した応答を保証し、生成されるテキストの全体的な品質を向上させることができます。
生成された知識のプロンプト
生成された知識プロンプトには、外部の知識ベースまたは生成されたコンテンツを活用してモデルの応答を強化することが含まれます。 関連情報をプロンプトに組み込むことで、モデルは詳細かつ正確な回答を提供したり、取得した知識に基づいてコンテンツを生成したりできます。
自己一貫性
自己一貫性テクニックは、言語モデルの応答における一貫性と一貫性を維持することに重点を置いています。 生成された出力を比較し、以前に生成されたコンテンツまたは命令と一致していることを確認することで、モデル応答の全体的な品質と一貫性を向上させることができます。
これらの例は、N ショット プロンプト、CoT プロンプト、生成された知識プロンプト、自己一貫性などのプロンプト エンジニアリング手法を適用して、言語モデルをガイドし、より正確で文脈的に適切で一貫性のある応答を生成する方法を示しています。 これらの手法を活用することで、さまざまな NLP タスクにおける言語モデルのパフォーマンスと制御を強化できます。
プロンプトエンジニアリングのベストプラクティスを活用することで、プロンプトエンジニアリングのユーザーにAIが顧客サービス (CX)、医療分野などの多くの問題を解決できることを思い出させることができます。興味がある場合、Miichisoftはこのトピックに関する2つの記事を提供していますので、ごこちらをご参照ください:
https://miichisoft.com/application-of-prompt-engineering-medical-field/
3. まとめ|実際にやってみながらプロンプトを最適化しよう
本Prompt Engineering Guideでは、LLMに送信するプロンプトについて、基礎的な知識から実際にプロンプトを作成する方法などが詳しく紹介されています。解決したいタスクによって適したプロンプティングは異なるため、実際に言語モデルに指示を出しながら最適なプロンプティングを見つけてみましょう。
本記事で紹介したテクニックを基に、繰り返し生成AIに回答を出力させるプロセスを経ることが大切です。また、プロンプトエンジニアリングの役割・将来についての記事も提供しているので、把握するために参考にしてみてください。
Miichisoftは、ベトナムのテクノロジー企業で、日本のクロスプラットフォーム開発に数多くの成功事例を持っています。150以上の成功したプロジェクトを通じて、私たちは実績を積み重ねてきました。当社は、ITプロジェクトをリードする能力に自信を持っており、お客様のビジネスにおける成功に貢献できると自負しています。
さらに、Miichisoft自体も最近、ChatGPTを使用した包括的な将来のAIソリューションである dxGAI Business | Enterpriseを完成し、リリースしました。 当社も企業であり、AIソリューションを使用する際の難しさを理解しており、お客様がビジネス活動で Prompt Engineering テクノロジーを使い始めたいか、または安全性を心配せずに効果的に使用したいと考えている場合は、サポートすることができます。
プロンプトエンジニアリング などのAI技術に関心をお持ちの皆様、ぜひご連絡いただき、ビジネスコラボレーションの機会をご一緒に考えましょう。