プロンプトエンジニアリングとは何ですか?
プロンプトエンジニアリングとは、生成人工知能 (生成 AI) ソリューションをガイドして、目的の出力を生成させるプロセスをいいます。生成 AI は人間を模倣しようとしますが、質および関連性の高い出力を生成するには詳細な指示が必要です。プロンプトエンジニアリングでは、AI がユーザーとより有意義にやり取りできるようガイドする、最も適切な形式、語句、記号を選択します。プロンプトエンジニアは、アプリケーションの生成 AI が想定どおりに機能するよう、創造性と試行錯誤を駆使して多数の入力テキストを作成します。
プロンプトとは何ですか?
プロンプトとは、生成 AI に特定のタスクを実行するように要求する自然言語のテキストです。生成 AI は、ストーリー、会話、ビデオ、画像、音楽などの新しいコンテンツを作成する人工知能ソリューションです。これは、膨大な量のデータで事前にトレーニングされた深層ニューラルネットワークを使用する非常に大規模な機械学習 (ML) モデルによって支えられています。
大規模言語モデル (LLM) は非常に柔軟性があり、さまざまなタスクを実行できます。例えば、文書を要約したり、文章を完成させたり、質問に答えたり、言語を翻訳したりできます。特定のユーザー入力を受けると、モデルは過去のトレーニングから判断した最適な出力を予測することで機能します。
ただし、入力は自由形式であるため、ユーザーは無数の入力データの組み合わせを使用して生成 AI ソリューションを操作できます。AI 言語モデルは非常に強力なので、コンテンツの作成を開始するのに多くの情報を必要としません。システムが詳細な応答を作成するには、単語が 1 つでも十分です。
とはいえ、すべてのタイプの入力が有用な出力を生成するわけではありません。生成 AI システムが正確で関連性の高い応答を生成するには、コンテキストと詳細な情報が必要です。プロンプトを体系的にデザインすると、より意味のある、使いやすいプロンプトを作成できます。プロンプトエンジニアリングでは、AI システムから望ましい結果が得られるまで、プロンプトを継続的に調整します。
プロンプトエンジニアリングが重要なのはなぜですか?
生成 AI の登場以来、プロンプトエンジニアリング業務は大幅に増加しています。プロンプトエンジニアは、エンドユーザーと大規模言語モデルの間のギャップを埋めます。言語モデルから最良の結果を引き出すために、ユーザーがカスタマイズして完成させることができるスクリプトとテンプレートを特定します。これらのエンジニアは、さまざまなタイプの入力を試して、アプリケーション開発者がさまざまなシナリオで再利用できるプロンプトライブラリを構築します。
プロンプトエンジニアリングにより、AI アプリケーションの効率と効果が高まります。アプリケーション開発者は通常、自由形式のユーザー入力をプロンプト内にカプセル化してから AI モデルに渡します。
例えば、AI チャットボットを考えてみましょう。ユーザーは、「シャツを購入できる場所」のような不完全な問題文を入力するかもしれません。 内部的には、アプリケーションのコードで次のようなエンジニアリングされたプロンプトが使用されます。「あなたは衣料品会社の営業アシスタントです米国アラバマ州に住むユーザーから、シャツを購入できる場所を聞かれています。現在シャツを在庫している最寄りの 3 店舗を回答してください。」 こうすると、チャットボットはより関連性の高い正確な情報を生成します。
次に、プロンプトエンジニアリングの利点について説明します。
開発者による強力なコントロール
プロンプトエンジニアリングにより、開発者はユーザーと AI のインタラクションをより細かく制御できます。効果的なプロンプトは、大規模言語モデルに意図を伝え、コンテキストを確立します。これらは AI が出力を調整し、必要な形式で簡潔に表現するのに役立ちます。
また、ユーザーが AIを悪用したり、AI が知らないことや正確に処理できないことを要求したりするのを防ぎます。例えば、ユーザーがビジネス AI アプリケーションで不適切なコンテンツを生成することを制限したい場合があります。
ユーザーエクスペリエンスの向上
ユーザーは試行錯誤を避けつつも、文脈に沿った、正確で関連性の高い応答を AI ツールから受け取ります。プロンプトエンジニアリングにより、ユーザーは最初のプロンプトで関連性がある結果を簡単に得ることができます。これは、大規模言語モデルのトレーニングデータにおける人間の既存の偏見から生じる可能性のあるバイアスを軽減するのに役立ちます。
さらに、ユーザーと AI のインタラクションを強化し、最小限の入力でも AI がユーザーの意図を理解できるようにします。例えば、法的文書とニュース記事を要約するリクエストでは、スタイルやトーンが調整されて異なる結果が出力されます。両方のユーザーがアプリケーションに「このドキュメントを要約してください」とだけ指示してもそれが実現します。
柔軟性の向上
抽象化レベルが高いほど AI モデルが向上し、組織はより柔軟なツールを大規模に作成できるようになります。プロンプトエンジニアは、事業ドメインに依存せず、論理的なリンクや幅広いパターンに注目した命令でプロンプトを作成できます。このプロンプトを企業全体で迅速に再利用して、AI への投資を拡大できます。
例えば、プロセス最適化の機会を見つけるために、プロンプトエンジニアは、コンテキスト固有のデータではなく幅広い信号を使用して非効率性を検出するように AI モデルをトレーニングするさまざまなプロンプトを作成できます。そうすると、プロンプトをさまざまなプロセスやビジネスユニットに使用できます。
プロンプトエンジニアリングのユースケースにはどのようなものがありますか?
高度な AI システムでは、学習言語モデルのユーザーエクスペリエンスを向上させるために、プロンプトエンジニアリング手法が使用されています。次に例を示します。
内容領域専門家
AI が対象分野の専門知識で対応する必要があるアプリケーションでは、プロンプトエンジニアリングが重要な役割を果たします。現場での経験が豊富なプロンプトエンジニアは、AI が正しい情報源を参照し、尋ねられた質問に基づいて適切な回答を組み立てるように導くことができます。
例えば、医療分野では、医師はプロンプトエンジニアリングされた言語モデルを使用して、複雑な症例の鑑別診断を行うことができます。医療専門家は症状と患者の詳細を入力するだけで済みます。このアプリケーションでは、エンジニアリングされたプロンプトを使用して、入力された症状に関連する可能性のある疾患を最初に一覧表示するように AI に指示します。次に、追加の患者情報に基づいてリストを絞り込みます。
クリティカルシンキング
クリティカルシンキングアプリケーションには、複雑な問題を解決するための言語モデルが必要です。そのために、モデルはさまざまな角度から情報を分析し、その信頼性を評価し、合理的な判断を下します。プロンプトエンジニアリングは、モデルのデータ分析機能を強化します。
例えば、意思決定のシナリオでは、考えられるすべてのオプションをリストアップし、各オプションを評価して、最適なソリューションを推奨するよう指示できます。
創造性
創造性には、新しいアイデア、概念、またはソリューションを生み出すことが含まれます。プロンプトエンジニアリングは、さまざまなシナリオでモデルの創造力を高めるために使用できます。
例えば、シナリオを書く場合、ライターはプロンプトエンジニアリングされたモデルを使用してストーリーのアイデアを生み出すことができます。ライターは、考えられるキャラクター、設定、プロットポイントをリストアップするようモデルに指示し、それらの要素を使用してストーリーを展開することができます。また、グラフィックデザイナーは特定の感情を呼び起こすカラーパレットのリストを生成するようモデルに指示し、そのパレットを使用してデザインを作成できます。
プロンプトエンジニアリング技術とは何ですか?
プロンプトエンジニアリングはダイナミックに進化する分野です。プロンプトをファインチューニングし、生成 AI ツールから望ましい応答を得るには、言語スキルと創造的な表現の両方が必要です。
プロンプトエンジニアが AI モデルの自然言語処理 (NLP) タスクを改善するために使用する手法の例をいくつか紹介します。
思考の連鎖プロンプティング
思考の連鎖プロンプティングは、複雑な質問を、思考の流れを模倣したより小さな論理的な部分に分解する手法です。これにより、モデルは問題に直接答えるのではなく、途中のステップを経ながら問題を解決できます。これにより、推論能力が向上します。
複雑なタスクについては、いくつかの思考の連鎖のロールアウトを展開し、最も一般的に導き出される結論を選択できます。ロールアウトが大きく異なる場合は、人間に思考の連鎖の修正を求めることができます。
例えば、「フランスの首都はどこですか?」という質問の場合、モデルが複数のロールアウトを実行して、「パリ」「フランスの首都はパリ」「パリはフランスの首都」などの回答を得る場合があります。 すべてのロールアウトが同じ結論につながるため、最終的な回答として 「パリ」 が選択されます。
思考ツリープロンプティング
思考ツリー手法は、思考の連鎖プロンプティングを一般化したものです。これは、考えうる次のステップを 1 つ以上生成するようモデルに指示します。次に、ツリー探索手法を使用して、考えうる次のステップごとにモデルを実行します。
例えば、「気候変動の影響はどのようなものか?」という質問の場合、モデルはまず「環境への影響を列挙する」や「社会的影響を列挙する」」など、考えられる次のステップを生成します。 次に、これらのそれぞれについて、以降のステップで詳しく説明します。
ソクラテス式プロンプティング
ソクラテス式プロンプティングは、思考ツリープロンプティングに似ています。質問に対し、説明込みで答えるようモデルに指示します。次に、その説明を細かく分解して説明するよう指示します。一貫性のない説明ツリーは削除または廃棄されます。これにより、複雑な常識推論のパフォーマンスが向上します。
例えば、「空はなぜ青いのか?」という質問に対し、モデルはまず「人間の目に空が青く見えるのは、波長の短い青い光が地球の大気中のガスや粒子によって四方八方に散乱するから」と答えるかもしれません。 次に、なぜ青い光が他の色に比べ散乱するのか、地球の大気は何で構成されているのかなど、この説明を部分ごとに展開します。
Complexity-based プロンプティング
このプロンプトエンジニアリング手法では、思考の連鎖ロールアウトを複数実行します。思考の連鎖が最も長いロールアウトを選択し、最も一般的に導き出される結論を選択します。
例えば、問題が複雑な数学の問題の場合、モデルは複数のロールアウトを実行する場合があり、それぞれに複数の計算ステップが含まれます。この例では思考の連鎖が最も長いロールアウトとして最も計算のステップ数が多いロールアウトを考慮します。他のロールアウトと共通の結論に達したロールアウトが最終的な回答として選択されます。
知識生成プロンプティング
この手法では、プロンプトを完了するために必要な関連情報を最初に生成するようにモデルに指示します。その後、プロンプトを完了させます。これにより、モデルは関連性のある事実に条件付けられているため、完成度の向上につながることがよくあります。
例えば、森林破壊の影響に関する評論を書くようモデルに指示したとします。このモデルは、まず「森林破壊は気候変動の一因となる」「森林破壊は生物多様性の喪失につながる」などの事実を生成します。 次に、評論の要点を詳しく説明します。
Least-to-most プロンプティング
このプロンプトエンジニアリング手法では、問題のサブ問題を最初に列挙し、次にそれらを順番に解決するようにモデルに指示します。このアプローチにより、前のサブ問題の回答をヒントに後のサブ問題を解決できます。
例えば、ユーザーが 「方程式 2x + 3 = 11 の x の解を求めよ」という数学の問題をモデルに指示したとします。 モデルはまず「両辺から 3 を引く」「2 で割る」 というサブ問題を列挙します。次に、それらを順番に解き、最終的な答えを得ます。
自己改良プロンプティング
この手法では、モデルに問題を解かせてから、その解を批評し、問題、解法、批判を考慮して問題を解決するよう指示します。問題解決プロセスは、あらかじめ決められた停止理由に達するまで繰り返されます。例えば、トークンや時間がなくなったり、モデルがストップトークンを出力したりする可能性があります。
例えば、ユーザーがモデルに 「文学に関する短い評論を書いてください」と指示したとします。 モデルは評論を起草し、具体的な例がないことを批評し、具体的な例を含んだ評論に書き直します。このプロセスは、評論が満足のいくものと見なされるか、中止基準が満たされるまで繰り返されます。
方向性刺激プロンプティング
このプロンプトエンジニアリング手法には、言語モデルを目的の出力に導くためのヒントや手がかり (必要なキーワードなど) が含まれます。
例えば、プロンプトが愛についての詩を書く場合に、プロンプトエンジニアは 「心」「情熱」「永遠」 を含むプロンプトを作成できます。 モデルには「心、情熱、永遠という言葉を使って愛についての詩を書いてください」と指示します。 これにより、モデルはこれらのキーワードを使って詩を作ります。
プロンプトエンジニアリングのベストプラクティスにはどのようなものがありますか?
優れたプロンプトエンジニアリングを実現するには、コンテキスト、スコープ、期待される対応を含む指示を伝える必要があります。次に、いくつかのベストプラクティスを紹介します。
明確なプロンプト
AI による誤解を避けるため、希望する応答をプロンプトで明確に定義してください。例えば、小説を要約したい場合は、詳細な分析ではなく、要約を求めていることを明確に伝えます。これにより、AI はリクエストのみに集中し、目的に合った応答を提供できます。
プロンプトに適切なコンテキストを設定
プロンプト内で適切なコンテキストを設定し、形式の制約も含めた出力の要件を入力プロンプトに含めます。例えば、1990 年代の最も人気のある映画のリストを表にまとめたいとします。正確な結果を得るには、明示的に、列挙する映画の数を記述し、表形式をリクエストする必要があります。
ターゲットとなる情報と望ましいアウトプットのバランス
プロンプトの簡潔さと複雑さのバランスを取り、曖昧な回答や無関係な回答、予期しない回答を避けるようにします。単純すぎるプロンプトはコンテキストが不足している可能性があり、複雑すぎるプロンプトは AI を混乱させる可能性があります。これは、AI にはあまり馴染みのない複雑なトピックやドメイン固有の言葉を扱う場合に特に重要です。代わりに、簡単な言葉を使い、プロンプトのサイズを小さくして、質問をより理解しやすくしてください。
プロンプトを試して改良する
プロンプトエンジニアリングは反復的なプロセスです。さまざまなアイデアを試し、AI プロンプトをテストして結果を確認することが不可欠です。正確性と関連性を最適化するには、複数回の試行が必要な場合があります。継続的なテストと反復により、プロンプトのサイズが小さくなり、モデルがより良い出力を生成できるようになります。AI が情報を出力する方法には決まったルールはないため、柔軟性と適応性が不可欠です。
AWS サポートは生成 AI の要件をどのようにサポートできますか?
Amazon Web Services (AWS) は、生成 AI を構築して使用するための幅広く、奥深いツールを提供しています。例えば、次のサービスを利用できます。
- Amazon CodeWhisperer は、コメントと既存のコードに基づいて、スニペットから完全な関数まで、さまざまなコードの提案をリアルタイムで生成します。
- Amazon Bedrock は、インフラストラクチャを管理することなく、API を通じて言語モデルを使用する生成 AI アプリケーションの開発を加速します。
- Amazon SageMaker JumpStart では、オープンソースの言語モデルを発見、調査、デプロイできます。例えば、OpenLLaMA、RedPajama、MosaicMLの MPT-7B、FLAN-T5、GPT-NeoX-20B、BLOOM などのモデルで作業できます。
独自のモデルを作成したい場合は、 Amazon SageMaker を使用してください。スケーラブルで信頼性が高く安全なモデル構築、トレーニング、デプロイを加速するためのマネージドインフラストラクチャとツールが用意されています。
今すぐアカウントを作成して、AWS でのプロンプトエンジニアリングを始めましょう。