업무용 스크립트 요청문에 입력·출력·오류 원칙 담기
“자동화해 줘”를 실행 가능한 작업 설명으로 바꿉니다. 민감정보 없는 합성 샘플과 손으로 확인한 기대 결과를 붙여, 팀별 작업 기록 집계 스크립트를 요청하는 문장을 완성합니다.
AI가 작성한 업무 이메일을 원래 자료와 대조해 사실, 숫자, 날짜, 수신자, 어조, 약속 표현을 점검합니다. 간단한 예제로 어떤 항목을 사람이 직접 확인해야 하는지 정리합니다.
이런 분께AI 채팅 도우미로 업무 이메일 초안을 작성하고 발송 전에 반복 가능한 점검 절차를 사용하려는 실무자를 위한 글입니다.
AI 채팅 도우미는 메모를 자연스러운 업무 이메일로 빠르게 정리할 수 있지만, 문장이 매끄럽다고 해서 내용까지 정확한 것은 아닙니다. 초안에서 수량이 달라지거나, 두 날짜의 의미가 뒤바뀌거나, 잘못된 사람을 대상으로 작성되거나, 단순한 요청이 확정된 약속처럼 표현될 수 있습니다.
아래 예시는 합성 예제입니다. 핵심은 초안 작성과 검증을 분리하는 것입니다. 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가 임의로 채우지 않도록 명시하는 것이 좋습니다.
일반적인 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
설명과 예제는 직접 작성했습니다. 관련 동작과 개념은 아래 공식 자료에서 확인할 수 있습니다.