Prompt Engineering
AIとコンピュータービジョンのプロンプトエンジニアリングを習得しましょう。LLMやUltralytics YOLO26のようなマルチモーダルモデルへの入力を最適化し、より優れた結果を得る方法を説明します。
プロンプトエンジニアリングとは、入力テキストを設計、改良、最適化して、人工知能 (AI)モデルが正確で関連性が高く、高品質な出力を生成できるよう導く戦略的なプロセスです。大規模言語モデル (LLMs)(GPT-4など)の台頭によって当初注目を集めましたが、現在ではテキスト、画像、動画など、さまざまなモダリティにわたる生成AIシステムとやり取りするための重要なスキルへと発展しています。再トレーニングによって基盤となるモデルの重みを変更するのではなく、プロンプトエンジニアリングでは、システムが最も理解しやすい方法でタスクを提示することでモデルが持つ既存の知識を活用し、人間の意図と機械による実行の間の隔たりを埋めます。
効果的なプロンプトの仕組み#
プロンプトエンジニアリングの中核となるのは、基盤モデルがコンテキストや指示を処理する仕組みを理解することです。適切に構成されたプロンプトは、明示的な制約、望ましい出力形式(JSONやMarkdownなど)、関連する背景情報を提供することで曖昧さを減らします。高度な実践者は、少数ショット学習などの手法を活用します。これは、望ましいパターンを示すために、ユーザーがプロンプト内に入力と出力のペアの例をいくつか提示する方法です。
もう1つの強力な戦略は思考の連鎖プロンプティングです。これは、複雑な推論タスクを中間ステップに分解するようモデルに促します。これにより、論理的な処理を多く必要とするクエリのパフォーマンスが大幅に向上します。さらに、コンテキストウィンドウ(モデルが一度に処理できるテキスト量の上限)の使用を最適化することは、長時間のやり取りで一貫性を維持するために重要です。プロンプト設計に関するOpenAIのガイドなどの外部リソースでは、エッジケースに効果的に対応するための反復的な改良の重要性が強調されています。
コンピュータビジョンにおける関連性#
プロンプトエンジニアリングはテキストと関連付けられることが多い一方で、コンピュータビジョン (CV)においてもその重要性が高まっています。最新のマルチモーダルモデルや、YOLO-Worldなどのオープンボキャブラリ検出器では、あらかじめ定義された数値のクラスIDではなく、自然言語処理 (NLP)を使用して検出対象を定義できます。
この文脈における「プロンプト」とは、物体のテキストによる説明です(例:「赤いヘルメットを着用した人物」)。ゼロショット学習として知られるこの機能により、視覚的特徴と意味埋め込みの間で学習された関連付けを活用し、システムは明示的にトレーニングされていない物体も検出できます。クラスが固定された高速処理の本番環境では、開発者は最終的にプロンプト対応モデルからYOLO26のような効率的な再トレーニング済みモデルへ移行する場合がありますが、迅速なプロトタイピングと柔軟性において、プロンプトエンジニアリングは依然として重要です。
実世界での利用例#
プロンプトエンジニアリングは、柔軟でインテリジェントな自動化を可能にすることで、さまざまな業界に価値をもたらします。
- 動的なビジュアル分析: 小売業におけるAIでは、店舗マネージャーがプロンプトベースのビジョンモデルを使用して、技術的な介入なしに特定の商品を検索できます。ある日は「空の棚」、翌日は「誤った場所に置かれた商品」を追跡するようシステムに指示できます。この柔軟性により、企業は季節のトレンドに合わせて物体検出システムを即座に適応させられます。
- コンテンツ作成の自動化: マーケティングチームは、Stable DiffusionやMidjourneyなどのテキストから画像への変換ジェネレーターを導くため、詳細なプロンプトを活用します。照明、芸術的なスタイル、構図を指定するプロンプトを設計することで、デザイナーはビジュアルアセットを迅速に生成できます。
- インテリジェントな知識検索: カスタマーサポートでは、エンジニアがチャットボットに対して、検証済みの社内データのみを使用して質問に回答するよう指示する「システムプロンプト」を設計します。これは検索拡張生成 (RAG)の主要な構成要素であり、AIが有用なペルソナを維持しながら、LLMsにおけるハルシネーションを回避できるようにします。
Ultralyticsを使用した実装#
次の例では、ultralyticsパッケージを使用して、プロンプトエンジニアリングをプログラムで適用する方法を示します。ここでは、テキストプロンプトを受け入れて検索対象の物体を動的に定義するYOLO-Worldモデルを使用します。これは、固定されたクラスリストを使用するYOLO26などの標準モデルとは対照的です。
from ultralytics import YOLO
# Load a YOLO-World model capable of interpreting text prompts
model = YOLO("yolov8s-world.pt")
# Apply prompt engineering to define custom classes dynamically
# The model maps these text descriptions to visual features
model.set_classes(["person in safety vest", "forklift", "blue hardhat"])
# Run inference on an image
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Show results - the model only detects objects matching the prompts
results[0].show()関連する概念との違い#
Ultralytics Platformを介してAIソリューションを効果的にデプロイするには、プロンプトエンジニアリングと類似した最適化手法を区別することが重要です。
- プロンプトエンジニアリングとプロンプトチューニングの比較: プロンプトエンジニアリングでは、自然言語の入力を手動で作成します。一方、プロンプトチューニングは、トレーニング段階で「ソフトプロンプト」(連続ベクトル埋め込み)を学習するパラメータ効率の高いファインチューニング (PEFT)手法です。これらのソフトプロンプトは、人間のユーザーには見えない数学的な最適化です。
- プロンプトエンジニアリングとファインチューニングの比較: ファインチューニングでは、特定のトレーニングデータセットを使用してモデルの重みを恒久的に更新し、特定のタスクに特化させます。プロンプトエンジニアリングはモデル自体を変更せず、リアルタイム推論中の入力のみを最適化します。
- プロンプトエンジニアリングとプロンプトインジェクションの比較: エンジニアリングが建設的な手法であるのに対し、プロンプトインジェクションは、悪意のある入力によってモデルを操作し、安全性の制約を無視させるセキュリティ脆弱性です。AIの安全性を確保するには、このような敵対的プロンプトに対する堅牢な防御が必要です。









