LumiのようなAIシステムと対話する際、効果的なプロンプト作成は、より良く、より正確な結果を得るために不可欠です。これは単にリクエストを入力するのではなく、明確なコミュニケーションを行うことです。大規模言語モデル(LLMs)に依存するLumiは、トレーニングデータのパターンに基づいて出力を予測します。つまり、人間のように「理解」しているわけではありません。そのため、プロンプトの構造化、明確な指示、コンテキストの提供が不可欠です 以下に、Lumiで効果的なプロンプトを作成するための主要な原則とテクニックを示します。

優れたプロンプトのための主要原則

  • 明確かつ具体的にする: 常に_何を_、_どのように_してほしいのかを明確にしてください。曖昧な言葉は避け、「このアプリを良くして」と言う代わりに、「UIや機能を変えずに、未使用のコンポーネントを整理してパフォーマンスを向上させるためにアプリをリファクタリングして」と具体的に指示します。アプリが誰のためのものか、何をすべきか、必須の機能は何かといったコンテキストを提供してください。
  • ユーザーのジャーニーに焦点を当てる: ユーザーがアプリで行う一連のアクションを考慮してください。例えば ——
ユーザーはサインアップし、新しいプロジェクトを作成し、マイルストーンを設定し、日々の進捗を追跡します。
  • 「何を」を記述し、「どのように」は記述しない: Lumiがバックエンドの複雑さを処理するため、望ましい結果や外観に焦点を当ててください。例えば ——
アプリはユーザーデータを保存し、素早く読み込まれ、クリーンでモダンな印象を与えるべきです。
  • 反復と改良: 最初の出力で満足しないでください。プロンプトはAIとの対話を通じて反復的に改良できます。Lumiは最初から完全に機能する出力を提供しますが、それはさらなる改良のための土台です。

C.L.E.A.R. フレームワーク

  • Concise(簡潔): 要点を率直に伝え、無駄な言葉や曖昧な表現を避けます。正確さと簡潔さを目指してください。
  • Logical(論理的): プロンプトを段階的または構造的に整理し、複雑なリクエストを順序立てたステップに分解します。
  • Explicit(明確): 何を望み、何を望まないかを正確に述べ、可能であればフォーマットや内容の例を提供します。
  • Adaptive(適応的): AIの出力に基づいてプロンプトを改良し、フォローアップのプロンプトで指示を明確にしたり、エラーを指摘したりします。
  • Reflective(内省的): 各インタラクションの後に何がうまくいき、何がうまくいかなかったかを見直し、将来のプロンプトを改善します。

プロンプト作成の4つのレベル

  1. 構造化された「補助輪付き」プロンプト(明示的なフォーマット): 初心者や複雑なタスクに役立ちます。ラベル付きのセクションを使用します。
  • コンテキスト: AIの背景や役割設定。
  • タスク: 具体的な目標。
  • ガイドライン: 好ましいアプローチやスタイル。
  • 制約: 厳格な制限や禁止事項。
  • 例えば ——
あなたはLumiを使用するエキスパートのフルスタック開発者です。タスク: Supabase(メール/パスワード認証)を使用して、Reactで安全なログインページを作成してください。ガイドライン: UIはミニマリスティックにし、Tailwind CSSの規約に従ってください。各ステップに明確なコードコメントを提供してください。制約: LoginPageコンポーネントのみを変更し、他のページは変更しないでください。最終的な出力がLumiエディタで動作するページであることを確認してください。
  1. 会話形式のプロンプト(補助輪なし): 慣れてきたら、同僚にタスクを説明するように、より自然に書くことができます。ただし、正式なラベルなしでも明確さと完全性を維持します。
  2. メタプロンプト(AIによるプロンプト改善支援): LumiのAIにプロンプトや計画の改善を手伝ってもらいます。例えば ——
私の最後のプロンプトを確認し、曖昧さや不足している情報があれば指摘してください。より簡潔で正確にするには、どのように書き直せばよいですか?
  1. リバースメタプロンプト(ドキュメンテーションツールとしてのAI): タスクの後に何が起こったかをAIに要約または文書化させます。これはデバッグや知識の記録に非常に優れています。例えば ——
JWT認証の設定中に遭遇したエラーを要約し、それらをどのように解決したか説明してください。その後、将来認証を設定する際にそれらの間違いを避けるために使用できるプロンプトを作成してください。

プロンプトフレームワーク

  • 「誰が / 何を / なぜ」プロンプト:
  • 誰がこのアプリを使いますか?
  • 何をするのに役立ちますか?
  • なぜ誰かがこれを使うのですか?
  • 「ユーザーストーリー」プロンプト: エンドユーザーの視点からリクエストを組み立てます。例:
フリーランスのデザイナーとして、クライアントにブランド化された請求書を送り、支払われた時期を追跡したいです。そうすることで、キャッシュフローを把握できます。
  • 「機能分解」プロンプト: 追加したい機能をリストアップします。例:
以下の機能を追加したいです: リードの追加と整理、アウトリーチ状況(新規、連絡済み、興味あり、クローズ)の追跡、メモとフォローアップリマインダーの追加。

より良い結果を得るための高度なテクニックとヒント

  • ゼロショット vs. フューショットプロンプト:
  • ゼロショット: モデルに_例なしで_タスクを実行させることで、その一般的なトレーニングに依存します。一般的または明確に記述されたタスクに適しています。
  • フューショット: プロンプトにいくつかの_例やデモンストレーション_を提供し、AIに望む正確なフォーマットやスタイルを示します。特定のタスクや珍しいタスクの出力品質を向上させます。
  • ハルシネーションの管理と正確性の確保:
  • 根拠となるデータを提供する: プロジェクトのナレッジベース(PRD、ユーザーフロー、技術スタック)を活用して、永続的なコンテキストを提供します。
  • プロンプト内での参照: 事実に基づいたクエリや外部とのやり取りのために、関連するドキュメントのスニペットやデータを含めます。
  • 段階的な推論を求める: AIにその推論過程を示すように促し、エラーを発見したり、不確実性を明らかにしたりします。
  • 正直さを指示する: 「もし確信が持てない場合は…捏造せず、代わりに何が必要かを説明するか、明確化を求めてください」といったガイドラインを含めます。
  • 反復的な検証: 重要なタスクの後、AIに出力を再確認するように依頼します。
  • モデルの洞察を活用する(AIツールを知る):
  • ディスカッションモード vs. デフォルトモード(エージェントモード): ブレインストーミング、デザインの議論、または即時のコード変更なしでのデバッグにはディスカッションモードを使用します。変更を実行する(コードの記述、コンポーネントの作成)には**デフォルトモード(エージェントモード)**を使用します。
  • トークン長: 出力がトークン制限を超える可能性がある場合、大きなタスクを小さなプロンプトに分割します。
  • フォーマットとコードの好み: 好み(例:「コードをマークダウン形式で出力する」)を述べて、AIをガイドします。
  • アプリを改良するためのテクニック
  • 「もっと…にする」/「…を減らす」: トーン、レイアウト、または強調を調整します。
  • 「…を追加する」/「…を削除する」: 特定の機能やUIブロックを追加または削除します。
  • 「[これ]を[あれ]に変更する」: テキスト、ビジュアル、レイアウト、またはコンポーネントのロジックを調整します。
  • 「…のように感じさせる」: 馴染みのあるアプリのスタイルを借用して、レイアウトや動作をガイドします。
  • 「…のためのロジックを追加する」: コードを必要とせずに、機能的なルールやフローを追加します。
  • 「…をグループ化または整理する」: 明確さやワークフローのためにコンテンツを構造化します。
  • 「条件付きの動作を追加する」: スマートな分岐や状態ベースの機能性を導入します。
  • 「ユーザーに…させる」というステートメント: エンドユーザーの視点から機能性を組み立てます。
  • 複雑なものを構築する際はレイヤーで構築する: シンプルに始め、次に機能を追加し、最後にビジュアルを磨きます。この段階的なアプローチは、システムや自分自身を圧倒するのを防ぎます。
  • 制約と要件を含める: 「最大3つのタスクを一度に表示できるシンプルなTo-Doアプリを作成する」など、何を_すべきか_、何を_すべきでないか_を明示的に述べます。
  • 曖昧さを避ける: さまざまな解釈が可能な用語を明確にします。
  • トーンと礼儀正しさに注意する: 丁寧な表現はコンテキストと詳細を追加し、AIが指示をより明確に理解するのに役立ちます。
  • フォーマットを有利に活用する: 特にAIにリストを出力させたり、シーケンスに従わせたい場合に、リストやステップを構造化します。
  • 例や参照を活用する: ターゲットとなるデザイン、コードスタイル、または画像を提供して、AIに具体的な参照を与えます。
  • フィードバックの統合: AIの出力をレビューし、改良のために具体的なフィードバックを提供します。
  • アクセシビリティの強調: ARIAラベルやキーボードナビゲーションを含む、アクセシビリティ基準に準拠したコードをプロンプトで要求します。
  • 定義済みのコンポーネントとライブラリ: 一貫性を保つために、UIライブラリ(例:Tailwind CSSを使用したshadcn/ui)を指定します。
  • 多言語プロンプト: コードコメントやドキュメントの希望言語を指定します。
  • プロジェクト構造とファイル管理の定義: ファイル名とパスを概説して、整理されたコード生成を保証します。
  • 正確な編集指示を提供する(AIに焦点を合わせる): どこを、_何を_変更するかを具体的に指示するか、Lumiの「選択」機能を使用してコンポーネントをハイライトします。AIに触れてほしくないものを伝えます。
  • ファイルのロック(回避策): すべてのプロンプトで、重要なファイルを変更しないようにAIに一貫して指示します。
  • デザインとUIの調整: ビジュアルの変更については、「純粋にビジュアルの変更」と明示的に述べ、レスポンシブ対応の計画をAIにガイドさせます。
  • コードのリファクタリングと最適化: リファクタリングを依頼する際は、「動作の変更なし」を強調します。最初にリファクタリング計画を依頼し、その後段階的に実装することもできます。
  • AI支援によるデバッグ: エラーログをプロンプト(理想的にはディスカッションモード)にコピーし、原因と解決策を尋ねます。修正がうまくいかない場合は、適応して新しい情報を提供します。
  • AIを関与させるべき時(とそうでない時): 複雑なロジック、ボイラープレートの生成、または複数ステップの操作にはAIを使用します。些細なタスク(例:テキストラベルの変更)には、手動で編集する方が速い場合があります。
これらの原則とテクニックを適用することで、LumiのAIを効果的にガイドして開発目標を達成し、強力で信頼できるチームメイトに変えることができます。