AI文章作成 2026.04.19

Claude初心者向けプロンプト設計5つのコツ|ビフォーアフター比較と実例コード

タグ:Claude / プロンプト設計 / AI基礎 / 実践ガイド / 初心者向け

なぜプロンプト設計が重要なのか

同じClaude(Sonnet)を使っても、指示の書き方で結果は大きく変わります:

# 同じ質問のビフォーアフター

❌ 「マーケティング戦略を考えて」
→ 一般的な教科書的な回答(10個のフレームワーク一覧など)

✅ 「年商1億円のECサイト(アパレル、30代女性ターゲット)の
   来月のInstagram広告戦略を考えて。
   予算は30万円、新規顧客獲得が目的。
   競合は[社名A][社名B]。
   箇条書きで5施策、各施策に予算配分と期待効果を含めて」
→ 自社の状況に直結した具体的な提案

コツ1:役割(ロール)を最初に設定する

# 役割設定なし
「メールを書いて」

# 役割設定あり
「あなたはB2Bソフトウェアの営業ベテラン(10年以上)です。
 IT部門の部長へ初回アポを取るメールを書いてください。」

APIでの設定方法:

import anthropic
import os

client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])

# システムプロンプトに役割を設定
response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    system="""あなたはB2BソフトウェアのSales Development Representative(SDR)です。
    10年以上の経験があり、IT部門への提案を得意とします。
    簡潔でプロフェッショナルな文体を使います。""",
    messages=[{
        "role": "user",
        "content": "クラウドセキュリティツールの初回アポイントメールを書いてください。宛先: 大手メーカーのIT部長"
    }]
)

print(response.content[0].text)

コツ2:出力形式を明示する

# 形式指定なし
「Pythonの型ヒントについて説明して」
→ 長文の説明文(使いにくい)

# 形式指定あり
「Pythonの型ヒントを以下の形式で説明して:

1. 一行の定義
2. 使う理由(メリット2つ)
3. コード例(関数定義1つ)
4. よくある間違い1つ

各項目の見出しをつけて、全体は500文字以内で」

形式指定の実例:

FORMAT_INSTRUCTIONS = """
以下の形式で回答してください:

## 概要
(1〜2文)

## 主な特徴
- 特徴1
- 特徴2
- 特徴3

## コード例
```python
# コード

注意点

(1〜2文) """

response = client.messages.create( model=“claude-sonnet-4-5”, max_tokens=1024, messages=[{ “role”: “user”, “content”: f”PythonのdataclassについてJSON形式ではなく以下の形式で説明してください:\n{FORMAT_INSTRUCTIONS}” }] )


## コツ3:制約条件を「使ってはいけないもの」まで明示

制約なし

「ログイン機能を実装して」 → JWT・セッション・OAuth等、どれでも実装する可能性

制約明示

「Pythonのログイン機能を実装してください。

使う: FastAPI, SQLAlchemy (PostgreSQL), bcrypt 使わない: JWT(既存システムとの互換性のため) Redis(インフラが増えるため)

要件:

  • セッションベース認証
  • パスワードはbcryptでハッシュ化
  • ログイン失敗は5回まで(その後30分ロック)」

## コツ4:例(Few-shot)を1〜2個示す

```python
# few_shot_example.py

FEW_SHOT_PROMPT = """以下の形式で商品レビューの感情を分析してください。

例1:
レビュー: 「思ったより小さかったけど、品質は良かったです」
分析: {"sentiment": "positive", "aspects": {"size": "negative", "quality": "positive"}}

例2:
レビュー: 「配送が遅い。商品は普通」
分析: {"sentiment": "neutral", "aspects": {"delivery": "negative", "product": "neutral"}}

では以下のレビューを分析してください:
レビュー: 「デザインは最高!でも値段が高すぎる。また買うかは微妙」
分析:"""

response = client.messages.create(
    model="claude-haiku-4-5-20251001",  # 分類タスクはHaikuで十分
    max_tokens=200,
    messages=[{"role": "user", "content": FEW_SHOT_PROMPT}]
)

print(response.content[0].text)
# {"sentiment": "mixed", "aspects": {"design": "positive", "price": "negative", "repurchase": "uncertain"}}

コツ5:段階的に指示を出す(チェーン)

一度のプロンプトで完璧を求めず、段階的に改善します:

# chain_of_prompts.py

def iterative_refinement(task: str, iterations: int = 3) -> str:
    messages = []
    
    # 第1段階: ドラフト作成
    messages.append({"role": "user", "content": f"以下のタスクをドラフトとして書いてください:\n{task}"})
    
    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        messages=messages
    )
    
    draft = response.content[0].text
    messages.append({"role": "assistant", "content": draft})
    
    # 第2段階: 批評を求める
    messages.append({
        "role": "user",
        "content": "このドラフトの弱点を3つ挙げてください"
    })
    
    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=512,
        messages=messages
    )
    
    critique = response.content[0].text
    messages.append({"role": "assistant", "content": critique})
    
    # 第3段階: 改善版を作成
    messages.append({
        "role": "user",
        "content": "挙げた弱点を全て修正した改善版を書いてください"
    })
    
    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=2048,
        messages=messages
    )
    
    return response.content[0].text

# 使用例
result = iterative_refinement("SaaSスタートアップの採用ページの見出しコピー(20文字以内)")
print(result)

5つのコツまとめ

コツ一言BeforeAfter
役割設定「あなたは〇〇」汎用的な回答専門的な視点
出力形式箇条書き・テーブル・JSON等を指定長文使いやすい形式
制約明示「使わないもの」まで書くAIが自由に選択意図通りの実装
Few-shot例を1〜2個見せる形式がバラつく一貫したスタイル
段階的修正批評→改善をループ一発勝負品質が上がる

あわせて読みたい

参考ソース