業務用スクリプトの依頼文に入力・出力・エラー処理のルールを入れる
「これを自動化して」を、実行可能な task description に変えます。sensitive data を含まない合成 sample と、手作業で確認した expected result を添えて、team ごとの work logs を集計する script request を完成させます。
繰り返すAI作業は、プロンプトの構成を統一すると確認と再利用がしやすくなります。このガイドでは、変数、例、タスク別チェックリストを含む小さなプロンプトテンプレート集の作り方を説明します。
この翻訳はAIで作成しました。コード、単位、数値は原文と併せて確認してください。各言語のネイティブ話者による校閲は、まだ完了していません。 English
対象読者似た作業をAIチャットアシスタントに繰り返し依頼し、一貫性があり確認しやすいプロンプトを再利用したい人向けです。
レポートの要約、アクション項目の抽出、コードレビュー、メッセージの書き直しなど、似た作業をAIに繰り返し依頼する場合、毎回記憶だけを頼りにプロンプトを書き直すと不要なばらつきが生まれます。重要な制約が抜けたり、出力形式が変わったり、例の内容が不統一になったりすることがあります。プロンプトテンプレート集を使えば、各定型作業を再利用・確認できる小さな仕様として管理できます。
実用的なテンプレートでは、変わらない指示と毎回変わる入力値を分離します。固定部分にはタスク、ルール、期待する出力形式、確認項目を記述します。変数にはプロジェクト名、対象読者、元テキスト、日付、指定言語など、実行ごとに変化する値を入れます。
この例は合成例です。AIチャットアシスタントを使って、週次作業ログの要約と、会議メモからアクション項目を抽出する2つの作業を繰り返すとします。それぞれのタスクを、変数、指示、例、チェックリストの4つの要素で保存できます。
| テンプレート | 変数 | 主な出力 |
|---|---|---|
| weekly_summary | project, audience, log_text | 簡潔な週次要約 |
| meeting_actions | meeting_name, notes | アクション項目一覧 |
変数は指示ではなくプレースホルダーです。たとえばprojectにはAtlas、audienceにはengineering team、log_textにはその週の記録を入れられます。値を分離しておくと、再利用するプロンプト自体が変わったのか、入力データだけが変わったのかを確認しやすくなります。
複雑な表現より構成の一貫性が重要です。実用的なテンプレートには、タスク説明、変数プレースホルダー、明示的なルール、入出力例、最後の自己確認を含められます。チェックリストでは、情報の捏造、必須項目の欠落、日付の変更、根拠のない結論の追加など、実際に確認できる失敗に重点を置きます。
テンプレートを汎用化しすぎると、そのタスクを実用的にするためのルールが弱くなることがあります。多数のオプション変数を持つ万能プロンプト1つより、タスクごとに小さく分けたテンプレートを複数管理する方が扱いやすい場合が多いです。
次の標準ライブラリのスクリプトでは、2つの合成テンプレートを定義し、必須変数がそろっているか確認してから、選択したテンプレートを生成してoutputsフォルダに保存します。保存先ファイルがすでに存在する場合は停止するため、以前に生成したプロンプトを誤って上書きしません。
from pathlib import Path
from string import Template
TEMPLATES = {
"weekly_summary": {
"required": ["project", "audience", "log_text"],
"template": Template(
"Task: Summarize the weekly work log.\n\n"
"Project: $project\n"
"Audience: $audience\n\n"
"Rules:\n"
"- Use only information present in the log.\n"
"- Separate completed work, open issues, and next steps.\n"
"- Keep dates and numbers unchanged.\n"
"- If something is unclear, label it as unclear instead of guessing.\n\n"
"Example format:\n"
"Completed:\n"
"- Finished data cleanup.\n"
"Open issues:\n"
"- Waiting for test results.\n"
"Next steps:\n"
"- Review results when available.\n\n"
"Checklist:\n"
"- Every statement comes from the log.\n"
"- Dates and numbers are preserved.\n"
"- No unsupported status claims are added.\n\n"
"Work log:\n$log_text\n"
),
},
"meeting_actions": {
"required": ["meeting_name", "notes"],
"template": Template(
"Task: Extract action items from the meeting notes.\n\n"
"Meeting: $meeting_name\n\n"
"Rules:\n"
"- Do not invent owners or deadlines.\n"
"- Preserve names and dates exactly as written.\n"
"- Mark missing owner or deadline as Not specified.\n\n"
"Example format:\n"
"Action | Owner | Deadline\n"
"Send draft | Mina | 2026-09-25\n"
"Check budget | Not specified | Not specified\n\n"
"Checklist:\n"
"- Each action is supported by the notes.\n"
"- Owners are not inferred.\n"
"- Deadlines are not invented.\n\n"
"Meeting notes:\n$notes\n"
),
},
}
selected = "weekly_summary"
values = {
"project": "Atlas",
"audience": "engineering team",
"log_text": (
"2026-09-14: Cleaned 120 test rows.\n"
"2026-09-16: Compared two validation reports.\n"
"Open issue: three records still have missing labels.\n"
"Next: review those records with the team."
),
}
spec = TEMPLATES[selected]
missing = [name for name in spec["required"] if not values.get(name)]
if missing:
raise SystemExit("Missing variables: " + ", ".join(missing))
rendered = spec["template"].substitute(values)
output_dir = Path("outputs")
output_dir.mkdir(exist_ok=True)
output_file = output_dir / f"{selected}_prompt.txt"
if output_file.exists():
raise SystemExit(f"Stop: {output_file} already exists.")
output_file.write_text(rendered, encoding="utf-8")
print(f"Wrote {output_file}")
合成weekly_summary例では、必須変数はproject、audience、log_textで、3つすべてが与えられています。そのため、生成後のプロンプトにはAtlas、engineering team、4行の作業ログが含まれるはずです。$projectのようなプレースホルダーが残っていてはいけません。
小規模なテンプレート集なら、1つのPythonファイルや通常のテキストフォルダで管理できます。数が増えたら、summarize-weekly-log、extract-meeting-actions、review-code、classify-feedbackのような安定したファイル名や識別子を使います。各テンプレートは1つの繰り返しタスクに集中させます。
プロンプトを変更した場合は、何をなぜ変えたのか記録します。たとえばAIが繰り返し期限を作り出してしまうなら、推測した期限を禁止するルールとチェック項目を追加できます。これにより、曖昧な指示を無計画に増やすのではなく、実際に発生した問題に対応してテンプレートを改善できます。
各テンプレートに小さな合成テストケースを1つ残しておくのも有効です。テンプレートを変更した後、同じテスト変数で再生成し、必須セクション、ラベル、制約が残っているか確認します。これだけでAIが必ず指示に従うことを保証できるわけではありませんが、意図しないプロンプトの劣化を見つける助けになります。
よくあるミスの1つは、プロンプトテンプレートが出力品質を保証すると考えることです。構造化されたプロンプトは曖昧さを減らせますが、生成された回答は引き続き確認する必要があります。もう1つのミスはルールを増やしすぎて、重要な要件が見つけにくくなることです。最重要の制約はタスク説明や出力形式の近くに配置します。
再利用テンプレートや例の中に、パスワード、秘密情報、秘密鍵、不要な個人情報を入れないでください。変数を使うとプロンプトは管理しやすくなりますが、変数自体がアクセス制御やデータ保護を提供するわけではありません。
最後に、プロンプトの検証と結果の検証を区別します。すべての変数が正しく挿入されたことを確認するのは、プロンプト生成処理の検証です。それだけではAIの回答が事実として正しいかは確認できません。結果に事実、計算、分類、判断が含まれる定型作業では、プロンプト用チェックリストと別に出力確認用チェックリストも管理します。
2026-09-21 · hand-checked example · Python 3.12
説明と例は独自に作成しました。関連する動作や概念は、以下の公式資料で確認できます。