AI文章作成 2026.04.19
Claude初心者向けプロンプト設計5つのコツ|ビフォーアフター比較と実例コード
なぜプロンプト設計が重要なのか
同じ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つのコツまとめ
| コツ | 一言 | Before | After |
|---|---|---|---|
| 役割設定 | 「あなたは〇〇」 | 汎用的な回答 | 専門的な視点 |
| 出力形式 | 箇条書き・テーブル・JSON等を指定 | 長文 | 使いやすい形式 |
| 制約明示 | 「使わないもの」まで書く | AIが自由に選択 | 意図通りの実装 |
| Few-shot | 例を1〜2個見せる | 形式がバラつく | 一貫したスタイル |
| 段階的修正 | 批評→改善をループ | 一発勝負 | 品質が上がる |
あわせて読みたい
- AIから正確な回答をもらう7つのプロンプト術【Claude・ChatGPT実例付き】
- Anthropicの公式プロンプトエンジニアリングガイドを解説|プロが使うテクニック5選
- Claude APIコストを95%削減する仕様書ファースト開発【実装テンプレート付き】