2장 첫 장부는 공급자 청구서가 아니라 요청 영수증이다
공급자 dashboard는 재무 정산에 중요하지만 애플리케이션의 사용자·기능·실패 이유까지 알지는 못한다. 따라서 application이 요청 직후 결정 영수증을 남겨야 한다. prompt 본문을 전부 기록하지 않고 식별과 계산에 필요한 metadata를 남긴다.
{
"request_id": "req_01J...",
"tenant_id": "tenant_green",
"feature": "refund_draft",
"policy_version": "refund-v3",
"route": "balanced",
"input_tokens": 2300,
"cached_input_tokens": 900,
"output_tokens": 520,
"tool_calls": 1,
"retry_count": 0,
"estimated_cost_usd": 0.007,
"result": "approved_with_edit",
"latency_ms": 1840
}
request_id는 provider request ID와 내부 trace ID를 연결한다. feature는 URL이나 model명이 아니라 사용자가 한 일이다. policy_version이 있어야 prompt와 규칙 변경 전후를 비교할 수 있다. tenant_id는 실제 고객 이름 대신 내부 비식별 ID를 사용한다.
내용을 기록해야 디버깅할 수 있다는 주장도 있다. 하지만 고객 문장 전체를 무기한 남기면 개인정보와 영업 비밀 위험이 커진다. 기본 장부에는 길이·hash·분류·정책 version을 남기고, 승인된 sampling trace만 짧은 retention으로 별도 보관한다. 관측 가능성은 모든 내용을 모으는 일이 아니라 필요한 증거를 최소한으로 보존하는 일이다.
OpenAI 조직 Usage API는 model·project·user·API key 같은 기준으로 token 사용을 집계할 수 있고 Costs endpoint는 invoice와 맞는 재무 비용을 확인하는 데 사용한다. 둘이 약간 다를 수 있으므로 application의 요청 영수증은 원인 분석, Costs는 재무 정산으로 역할을 분리한다.