生成AI研修
Part 3: 生成AI の基礎

Chapter 16: プロンプトエンジニアリング基礎

効果的なプロンプトの書き方

16.1 プロンプトとは

**プロンプト(Prompt)**とは、AI に渡す「入力テキスト」のことです。検索エンジンへのキーワード入力とは異なり、プロンプトは AI への「指示書」です。どのように書くかで、出力の質が大きく変わります。

プロンプトエンジニアリングとは、このプロンプトを意図した出力が得られるように設計・改善する技術です。


16.2 良いプロンプトの5原則

原則1: 役割を与える

AI に「あなたは〇〇です」と役割を伝えると、それに適した視点で回答してくれます。

悪い例: バグを直して
良い例: あなたは Python の経験豊富なバックエンドエンジニアです。
        以下のコードにあるバグを特定し、修正案を提示してください。

原則2: 文脈(背景)を提供する

「なぜ」「どんな状況で」必要なのかを伝えると、的外れな回答を防げます。

悪い例: ユーザー登録のコードを書いて
良い例: FastAPI を使った Web API を開発しています。
        PostgreSQL に接続しており、ユーザー登録エンドポイントを
        POST /users で実装したいです。バリデーションは Pydantic で行います。

原則3: 具体的なタスクを指定する

何を、どこまでやってほしいかを明確に書きます。

悪い例: このコードについて教えて
良い例: このコードの(1)処理の流れ、(2)潜在的なバグ、
        (3)パフォーマンス上の問題点 の3点を説明してください。

原則4: 出力形式を指定する

表・箇条書き・コード・JSON など、欲しい形式を指定します。

悪い例: 比較して
良い例: 以下の2つのアプローチを比較し、
        メリット・デメリットを Markdown の表形式で出力してください。

原則5: 制約・条件を明示する

文字数、言語、禁止事項などを明示します。

悪い例: まとめて
良い例: 300文字以内で、専門用語を使わずに日本語でまとめてください。
        箇条書きは使わず、段落形式で書いてください。

16.3 Zero-shot / Few-shot プロンプティング

Zero-shot(例なし)

例を示さずに直接タスクを依頼します。シンプルなタスクに適しています。

以下の文章を英語に翻訳してください。
「本日はお忙しい中お集まりいただきありがとうございます。」

Few-shot(例あり)

期待する入出力の例をいくつか示してから、同じパターンでの処理を依頼します。精度が上がります。

以下のルールで変換してください。

入力: 2024-01-15
出力: 2024年1月15日(月)

入力: 2024-03-20
出力: 2024年3月20日(水)

入力: 2025-08-01
出力:

Few-shot は特に「一貫したフォーマット変換」「分類タスク」「特定のスタイルでの文章生成」に効果的です。


16.4 Chain of Thought(思考の連鎖)

複雑な問題を解かせるとき、**「段階的に考えてください」**と指示するだけで精度が向上します。これを Chain of Thought(CoT)プロンプティングと呼びます。

以下の問題を、ステップバイステップで考えながら解いてください。

問題: あるシステムで、1日あたり 10,000 件のリクエストがあります。
      そのうち 2% がエラーになります。
      エラーの 30% はリトライで解決します。
      最終的に1日何件のエラーが残りますか?

まず計算の過程を示し、最後に答えを出してください。

「ステップバイステップで」「まず〇〇を考えてから」「理由を説明しながら」といった言葉が CoT のトリガーになります。


16.5 システムプロンプトとユーザープロンプト

LLM への入力には2種類あります。

種類役割設定者
システムプロンプトAIの振る舞いや制約を定義開発者・管理者
ユーザープロンプト実際のタスクや質問エンドユーザー

ChatGPT や Claude.ai の「Custom Instructions」や「Projects」機能を使うと、システムプロンプト相当の設定をノーコードで行えます。

TODO: あとで実際のスクリーンショットに置き換え - ChatGPT の Custom Instructions 設定画面


16.6 プロンプトのデバッグと改善

思った出力が得られないときは、以下のサイクルで改善します。

よくある問題と対策:

問題対策
回答が長すぎる・短すぎる「〇文字以内で」「箇条書き5項目で」と明示
的外れな回答が来る文脈・背景情報を追加する
コードが動かない言語バージョン・依存ライブラリを明示する
フォーマットが崩れる「Markdown で」「JSON で」と出力形式を指定
同じことを繰り返す「一度だけ」「重複なく」と明示する

プロンプトは1回で完璧にしようとせず、試行錯誤しながら育てていく感覚が大切です。

On this page