AI Prompt Engineering · レッスン

具体性が重要な理由

曖昧なプロンプトが一般的な出力につながる仕組みと、正確な指示で改善する方法を学びます。

レッスン 1/413 ステップ

「具体性が重要な理由」はCoddyKit上の無料AI Prompt Engineeringレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Prompt Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Prompt Engineeringコースには全4レッスンが含まれています。

曖昧さの問題

曖昧なプロンプトを送ると、AIは不足している詳細をすべて最善の推測で補います。その推測は、あなたの実際の意図ではなく、統計的に最も平均的な解釈に基づいています。

その結果、一般的で印象に残らない出力になり、大幅な書き直しが必要になります。具体性は、AIの出力品質を向上させるうえで、最も強力な手段です。

曖昧なプロンプト:犬について書く

次のプロンプトを考えてみましょう。「犬について何か書いてください。」

モデルは、形式、長さ、対象読者、切り口を推測しなければなりません。そのため、子ども向け百科事典にも載せられそうな、無難で特徴のない段落をデフォルトで生成します。

次のプロンプトと比較してみましょう。「ゴールデンレトリバーの子犬が初めてビーチに行った日のために、200語のInstagramキャプションを書いてください。トーンは、遊び心があり感情に訴えるものにしてください。関連するハッシュタグを5つ含めてください。」

2つ目のプロンプトでは、推測の余地がありません。

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

vague = 'Write something about dogs.'
specific = (
    'Write a 200-word Instagram caption for a golden retriever puppy\'s '
    'first day at the beach. Tone: playful and emotional. '
    'End with 5 relevant hashtags.'
)

for label, prompt in [('VAGUE', vague), ('SPECIFIC', specific)]:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=300,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'--- {label} ---')
    print(response.content[0].text)
    print()

一般的な出力が生まれる理由

モデルは何十億ものテキスト例で学習されています。「Xについて書いて」と言うと、学習中に見たXについての最も一般的な種類のテキストを生成します。

その特徴は次のとおりです。

  • 百科事典のようなトーン
  • 中程度の長さ
  • 主要な観点を浅く一通り扱う
  • 独自の声や目的がない

具体的な制約を指定すると、こうしたデフォルトが上書きされ、モデルを本当に必要としている方向へ導けます。

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Default (vague) output
default_response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Write about coffee.'}]
)
print('DEFAULT OUTPUT (first 200 chars):')
print(default_response.choices[0].message.content[:200])
print()

# Constrained output
constrained_response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Write a 100-word product description for a single-origin Ethiopian pour-over coffee. '
            'Target audience: specialty coffee enthusiasts. '
            'Tone: sophisticated, sensory. Mention flavor notes: jasmine, blueberry, dark chocolate.'
        )
    }]
)
print('CONSTRAINED OUTPUT:')
print(constrained_response.choices[0].message.content)

具体性を決める5つの要素

プロンプトを書くときは、次の5つの要素を具体的に指定してください。

  1. 形式 — 段落、箇条書き、表、JSON、メール
  2. 長さ — 単語数、文の数、項目数
  3. 対象読者 — この出力を読む、または利用する人
  4. トーン — フォーマル、カジュアル、技術的、説得力のある、共感的
  5. 目的 — 出力によって何を達成するのか

常に5つすべてが必要なわけではありません。ただし、どれか1つでも欠けると、モデルが誤って推測する余地が生まれます。

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# All 5 dimensions specified
response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=256,
    messages=[{
        'role': 'user',
        'content': (
            'Format: 3-bullet summary.\n'
            'Length: each bullet max 20 words.\n'
            'Audience: busy startup founders with no ML background.\n'
            'Tone: direct, no jargon.\n'
            'Goal: explain why fine-tuning an LLM is expensive.'
        )
    }]
)
print(response.content[0].text)

曖昧な依頼と具体的な依頼:メール

AIで最もよく行うタスクの1つである、メールの作成を見てみましょう。

曖昧な依頼:「クライアントにメールを書いてください。」
モデルは、クライアント、話題、関係性、目的、トーンを知りません。

具体的な依頼:「支払いが14日遅れているB2B SaaSクライアント(TechFlow Inc)に、3段落のメールを書いてください。トーンは、厳格でありながら、ビジネス上の礼儀を保ったものにしてください。目的は、関係を損なわずに支払いを促すことです。5日以内という期限を設けた、具体的な行動喚起を含めてください。」

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

specific_prompt = (
    'Write a 3-paragraph professional email to a B2B SaaS client (TechFlow Inc) '
    'who has a payment 14 days overdue. '
    'Tone: firm but courteous — preserve the business relationship. '
    'Include: acknowledgment of potential oversight, the overdue amount placeholder [AMOUNT], '
    'a payment link placeholder [LINK], and a 5-day deadline. '
    'Subject line included.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': specific_prompt}]
)
print(response.choices[0].message.content)

曖昧な指示と具体的な指示:要約

一見簡単そうな要約でさえ、具体性によって大きな効果が得られます。

曖昧:「この記事を要約してください。」

具体的:「この記事を、ちょうど3文で要約してください。1文目:主な知見。2文目:使用した方法論。3文目:実務担当者にとって最も重要な示唆。」

構成を指定したバージョンはすぐに使えますが、曖昧なバージョンは形式を整え直す必要があります。

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

article = (
    'Researchers at MIT have developed a new neural network architecture that achieves '
    '94% accuracy on medical image diagnosis, outperforming human radiologists by 7%. '
    'The model was trained on 2.4 million anonymized X-ray images and uses a novel '
    'attention mechanism that highlights regions of interest for clinician review. '
    'The team expects FDA clearance by Q3 2025 for use as a diagnostic aid, not replacement.'
)

specific_prompt = (
    f'Summarize the following article in exactly 3 sentences:\n'
    f'Sentence 1: main finding.\n'
    f'Sentence 2: methodology.\n'
    f'Sentence 3: key implication for clinicians.\n\n'
    f'Article:\n{article}'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=200,
    messages=[{'role': 'user', 'content': specific_prompt}]
)
print(response.content[0].text)

曖昧な指示と具体的な指示:ブレインストーミング

ブレインストーミング用のプロンプトでは、曖昧さのコストが最も大きくなります。誰でも思いつく、重複したアイデアのリストになるからです。

曖昧:「自分のアプリ向けにアイデアを出してください。」

具体的:「25~35歳の都市部の会社員を対象とするB2Cの瞑想アプリ向けに、独自性のある収益化戦略を10個挙げてください。サブスクリプションモデルは除外してください(すでに1つ導入しています)。各アイデアは1文で記述し、リスクの高い順から低い順に並べてください。」

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

specific_brainstorm = (
    'Generate 10 unique monetization strategies for a B2C meditation app '
    'targeting 25-35 year-old urban professionals. '
    'Exclude: subscription models (already implemented). '
    'Each strategy in one sentence. '
    'Order from most to least conventional. '
    'Label each with: CONVENTIONAL / EXPERIMENTAL / BOLD.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': specific_brainstorm}]
)
print(response.choices[0].message.content)

プロンプトで例を使う

具体性を高める最も強力な方法の1つは、求める出力の例をプロンプトに直接含めることです(few-shot promptingと呼ばれる手法です)。

形式を説明する代わりに、実際に示してください。モデルは実例から、構成、長さ、トーンを瞬時に理解します。多くの場合、文章による説明よりも明確に伝わります。

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

example_prompt = '''
Generate 3 product taglines in this style:

Example 1: Notion — 'The all-in-one workspace where better thinking happens.'
Example 2: Figma — 'Design together. Ship faster.'
Example 3: Linear — 'The issue tracker you'll actually enjoy using.'

Product: A CLI tool that automatically writes Git commit messages by analyzing your diff.
Taglines:
'''

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=200,
    messages=[{'role': 'user', 'content': example_prompt}]
)
print(response.content[0].text)

してはいけないことを指定する

否定的な制約は、肯定的な指示と同じくらい強力です。モデルに避けるべきことを伝えると、よくある望ましくないパターンを防げます。

  • 「箇条書きを使わないでください」
  • 「Iという単語で始めないでください」
  • 「クレジットカードが必要な解決策を提案しないでください」
  • 「受動態を使わないでください」

最大限に制御するには、肯定的な指示と否定的な制約を組み合わせてください。

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {
            'role': 'system',
            'content': (
                'You are a copywriter. Rules:\n'
                '- NEVER start a sentence with "Additionally" or "Furthermore"\n'
                '- NEVER use the phrase "In conclusion"\n'
                '- NEVER use passive voice\n'
                '- NEVER use bullet points or lists'
            )
        },
        {
            'role': 'user',
            'content': 'Write a 100-word about us section for a craft bakery called Morning Light.'
        }
    ]
)
print(response.choices[0].message.content)

具体性を反復的に高める

最初から完璧なプロンプトを書く必要はありません。反復的な改善は有効な方法です。

  1. 適度に具体的なプロンプトから始めます
  2. 出力の問題点や不足している点を特定します
  3. その不足を補う制約を追加します
  4. 出力が基準を満たすまで繰り返します

反復するたびに、モデルに必要な制約が分かってきます。最も良かったプロンプトはテンプレートとして保存し、今後も使えるようにしましょう。

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Iteration 1: first attempt
v1 = 'Write a LinkedIn post about my new job.'

# Iteration 2: add specifics based on what was missing
v2 = (
    'Write a LinkedIn post (max 150 words) announcing I just joined Stripe as a Senior Engineer. '
    'Tone: genuine excitement, not bragging. '
    'Include: what drew me to the role, one thing I plan to focus on. '
    'No cliches like "excited to announce" or "humbled to share". '
    'End with a genuine question for my network.'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{'role': 'user', 'content': v2}]
)
print(response.content[0].text)

具体性チェックリストを作る

プロンプトを送信する前に、次のチェックリストを頭の中で確認してください。

  • 出力形式を指定しましたか?(段落/リスト/JSON/表)
  • 長さを指定しましたか?(語数/項目数)
  • 対象読者を指定しましたか?(誰が読むのか)
  • トーンを指定しましたか?(フォーマル/カジュアル/技術的)
  • 目的を指定しましたか?(この出力を何に使うのか)
  • 制約を含めましたか?(避けるべきこと)
  • 意図を示すために例を追加できますか?
# Prompt template with all specificity dimensions filled
prompt_template = '''
Task: {task_description}
Format: {format}
Length: {length}
Audience: {audience}
Tone: {tone}
Goal: {goal}
Do NOT: {constraints}
Example of good output: {example}
'''

filled = prompt_template.format(
    task_description='Explain what an API is',
    format='3 short paragraphs, plain prose — no bullet points',
    length='150 words maximum',
    audience='Non-technical business stakeholders',
    tone='Friendly, analogy-based, jargon-free',
    goal='Prepare them for a meeting with the engineering team',
    constraints='Do not use the words "endpoint", "REST", or "HTTP"',
    example='An API is like a waiter in a restaurant — it takes your order...'
)
print(filled)

理解度チェック

マーケティングマネージャーがAIに「ソーシャルメディアへの投稿を書いてください」と依頼しました。AIは会社についての一般的な2文の投稿を返しました。有用な結果を得るための書き換えとして、最も適切なのはどれですか?

なぜ具体性が重要なのか — まとめ

具体性は、効果的なプロンプトの土台です。重要なポイントは次のとおりです。

  • 曖昧なプロンプトは、統計的に平均的で一般的な出力を生みます
  • すべてのプロンプトで形式、長さ、対象読者、トーン、目的を指定します
  • 望ましくないパターンを防ぐために否定的な制約を使います
  • 求める出力スタイルの例を含めます
  • 反復的な改善を行います。最初から完璧なプロンプトである必要はありません
  • うまくいったプロンプトはテンプレートとして保存し、再利用します

具体的に指定するほど、出力を書き直す時間を減らせます。

無料で開始

AI チューターと学ぶ AI Prompt Engineering — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
53
レッスン
199

よくある質問

「具体性が重要な理由」レッスンは無料ですか?

はい。「具体性が重要な理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Prompt Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Prompt Engineeringコースには全4レッスンが含まれています。

「具体性が重要な理由」で何を学びますか?

曖昧なプロンプトが一般的な出力につながる仕組みと、正確な指示で改善する方法を学びます。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Prompt Engineeringを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Prompt Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「具体性が重要な理由」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Prompt Engineeringレッスンでコードを書いて実行できますか?

はい。すべてのAI Prompt Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 具体性が重要な理由
  2. プロンプトから曖昧さを取り除く
  3. 具体的な詳細を加える
  4. 曖昧なプロンプトと具体的なプロンプトの比較
← AI Prompt Engineeringに戻る