業務用スクリプトの依頼文に入力・出力・エラー処理のルールを入れる
「これを自動化して」を、実行可能な task description に変えます。sensitive data を含まない合成 sample と、手作業で確認した expected result を添えて、team ごとの work logs を集計する script request を完成させます。
AIが作成した業務メールを元の情報と照合し、事実、数値、日付、宛先、文体、約束表現を確認します。小さな例を使って、人が送信前に確認すべきポイントを整理します。
この翻訳はAIで作成しました。コード、単位、数値は原文と併せて確認してください。各言語のネイティブ話者による校閲は、まだ完了していません。 English
対象読者AIチャットアシスタントで業務メールの下書きを作成し、送信前に一定の手順で確認したい実務担当者向けです。
AIチャットアシスタントはメモから自然な業務メールをすばやく作成できますが、文章が流暢でも内容が正しいとは限りません。数量が変わったり、2つの日付の意味が入れ替わったり、別の相手向けの内容になったり、単なる依頼が確定した約束のように書かれたりすることがあります。
以下は合成した例です。重要なのは、文章作成と確認を分けることです。AIには文章を整えさせ、送信前には元の情報と自分で照合します。
架空の仕入先にサンプル部品を依頼するメールを送るとします。AIに下書きを依頼する前に、変更してはいけない事実を整理します。
| 項目 | 確認済みの元情報 |
|---|---|
| 宛先 | Mina Park |
| 会社 | Example Parts |
| サンプル数量 | 24 units |
| 単価 | $18.50 |
| 計算した合計 | $444.00 |
| 希望納期 | October 7, 2026 |
| 社内確認日 | October 9, 2026 |
| 確定状況 | October 7 is requested, not confirmed |
計算は24 × $18.50 = $444.00です。October 7は仕入先への希望納期で、October 9は社内確認日です。元のメモには、支払時期、今後の注文、承認、納期保証を約束してよいという情報はありません。
使いやすいプロンプトには確認済みの事実を入れ、不明な情報を勝手に補わないよう明示します。
典型的なAI回答は次のようになります。'Hello Mina, We would like to request 24 sample units at $18.50 per unit, for a total of $444.00. If possible, please arrange delivery by October 7, 2026, as our internal review is scheduled for October 9. Please let us know whether this delivery date is feasible. Best regards.' 文面としては自然でも、送信前の確認は必要です。
この合成例では、24 units、$18.50、$444.00、October 7、October 9が元情報と一致しています。また、'if possible'と書き、納期が可能か確認しているため、October 7がすでに確定済みとは表現していません。
次の標準ライブラリだけを使うスクリプトはdraft_email.txtを読み込み、合成例で必要な情報が含まれているか確認し、合計金額を再計算し、注意が必要な約束表現を検索します。結果はoutputs/email_check_report.txtに保存します。元の下書きは変更せず、outputsフォルダがすでに存在する場合は既存結果を上書きせず停止します。
from pathlib import Path
from decimal import Decimal
import sys
DRAFT_PATH = Path("draft_email.txt")
OUTPUT_DIR = Path("outputs")
REPORT_PATH = OUTPUT_DIR / "email_check_report.txt"
if not DRAFT_PATH.is_file():
sys.exit("Missing input file: draft_email.txt")
if OUTPUT_DIR.exists():
sys.exit("Stop: outputs folder already exists. Remove or rename it manually first.")
recipient = "Mina Park"
company = "Example Parts"
quantity = 24
unit_price = Decimal("18.50")
expected_total = Decimal(quantity) * unit_price
requested_date = "October 7, 2026"
review_date = "October 9, 2026"
required_text = {
"recipient": recipient,
"company": company,
"quantity": "24",
"unit price": "$18.50",
"total": f"${expected_total:.2f}",
"requested delivery date": requested_date,
"internal review date": review_date,
}
risky_phrases = [
"guarantee",
"guaranteed",
"definitely",
"delivery is confirmed",
"we confirm payment",
"we will place future orders",
]
draft = DRAFT_PATH.read_text(encoding="utf-8")
draft_lower = draft.lower()
lines = []
lines.append("AI EMAIL DRAFT CHECK")
lines.append("====================")
lines.append(f"Calculated total: {quantity} x ${unit_price:.2f} = ${expected_total:.2f}")
lines.append("")
lines.append("Required details:")
for label, value in required_text.items():
status = "PASS" if value.lower() in draft_lower else "CHECK"
lines.append(f"{status}: {label} -> {value}")
lines.append("")
lines.append("Risky promise phrases:")
found_risk = False
for phrase in risky_phrases:
if phrase in draft_lower:
found_risk = True
lines.append(f"CHECK: found phrase -> {phrase}")
if not found_risk:
lines.append("PASS: none of the listed phrases were found")
lines.append("")
lines.append("Manual checks still required:")
lines.append("- Verify the actual To, CC, and BCC addresses in the mail client.")
lines.append("- Confirm that October 7 is presented as requested, not guaranteed.")
lines.append("- Confirm tone and context against the original conversation.")
lines.append("- Check for commitments not covered by this phrase list.")
lines.append("- Verify attachments before sending.")
OUTPUT_DIR.mkdir()
REPORT_PATH.write_text("\n".join(lines) + "\n", encoding="utf-8")
print(f"Created: {REPORT_PATH}")
下書きをdraft_email.txt、スクリプトをemail_check.pyとして保存し、python email_check.pyを実行します。PASSは必要な文字列が見つかった、または登録した注意表現が見つからなかったという意味にすぎません。メールが承認済み、またはそのまま送信して安全という意味ではありません。
キーワードによる確認には明確な限界があります。'$444.00'が含まれていても誤った文脈で使われている可能性があります。また、注意表現の一覧にない別の言い回しで約束を作ってしまうこともあります。自動チェックは単純な不一致を見つける補助であり、最終的に人が読む作業の代わりにはなりません。
実務では、AIには文章作成を補助させ、事実確認と組織として何を約束できるかの判断は人が行うよう役割を分けるのが適切です。契約、法的義務、機密情報、規制対象の判断、安全上の問題、大きな金額が関わるメールでは、この簡易チェックだけに頼らず、組織の正式な確認・承認手順に従ってください。
2026-09-21 · hand-checked example · Python 3.12
説明と例は独自に作成しました。関連する動作や概念は、以下の公式資料で確認できます。