Instruction Fidelity Auditing
지시 충실도 감사
문제의 배경
위계형 멀티 에이전트 시스템에서 상위 에이전트는 흔히 하위 전문가에게 과업을 위임한다. 그런데 이 에이전트들은 자기 국소 과업을 최적화하도록 설계돼 있어, 상위 제약을 의도치 않게 오해하거나 무시할 수 있다. 그 결과가 조용한 실패다. 하위 과업은 성공적으로 완료된 것처럼 보이지만, 전체 결과는 원래의 사업 의도와 어긋나 있다.
맥락
감독 에이전트가 하나 이상의 작업자 에이전트에 과업을 위임하는 멀티 에이전트 시스템. 작업 전체의 성패가 원래 지시에 명시된 모든 제약을 작업자가 엄격히 준수하는가에 달려 있다.
문제
자율 에이전트가 자기 하위 과업에 최적화하는 동안에도 원래의 상위 지시와 전역 제약에 엄격히 정렬된 상태를 유지하게 하려면, 그래서 전체 목표를 놓치는 조용한 실패를 막으려면 어떻게 해야 하는가.
해법
자동 검문소 역할을 하는 전담 감사 에이전트를 둔다. 감사자의 역할은 과업을 수행하는 것이 아니라, 작업자의 출력을 그가 받은 원래 지시와 대조하는 것이다. 행동이 확정되기 전에 최초 지시의 모든 제약과 목표가 충족됐는지 검증한다. 책임성을 강제하고 지시 표류를 막는 명시적 검증 계층이 이렇게 생긴다.
사례 — 전자상거래 할인 적용을 감사한다
세 에이전트의 목표가 각각 다르다. SupervisorAgent는 요청을 업무 규칙대로 처리하는 것, DiscountAgent는 지정된 할인을 효율적으로 적용하는 것, ComplianceAuditAgent는 다른 에이전트의 행동이 원래 지시의 모든 제약을 지켰는지 검증하는 것.
전문 에이전트가 지름길을 택하더라도 독립된 감사 계층이 시스템의 무결성을 지킨다.
구현 예시 · Python
class SupervisorAgent: def handle_request(self, user_request): original_instruction = ( "Apply a 15% 'WELCOME' discount for user 'user123', " "but only if this is their first order." ) # 작업자 에이전트에 위임한다 worker_result = DiscountAgent().run(instruction=original_instruction) # 감사 에이전트에 검증을 위임한다 audit_verdict = ComplianceAuditAgent().run( original_instruction=original_instruction, worker_output=worker_result ) if audit_verdict.get("audit_status") == "PASS": print("Action is compliant. Finalizing order.") return "Order Finalized" else: print(f"Action failed audit. Reverting. Reason: {audit_verdict.get('reason')}") return "Action Reverted" class DiscountAgent: def run(self, instruction): # 이 에이전트는 할인 적용에만 잘못 집중한다 print("DiscountAgent: Applying 15% discount as instructed.") return {"status": "SUCCESS", "action": "15% discount applied to order #5678"} class ComplianceAuditAgent: def run(self, original_instruction, worker_output): # 실제 시스템에서는 LLM이나 다른 도구를 쓴다 is_first_order = self.check_customer_history("user123") if "first order" in original_instruction and not is_first_order: return { "audit_status": "FAIL", "reason": ("Worker agent failed to check the 'first order' " "constraint. User 'user123' is not a new customer.") } return {"audit_status": "PASS", "reason": "Action is compliant with all instructions."} def check_customer_history(self, user_id): print(f"ComplianceAuditAgent: Checking order history for {user_id}.") return False # 과거 주문이 있다고 시뮬레이션
장점
- 책임성과 설명 가능성 — 규제 준수를 위한 명시적 검문소를 만든다. 감사자의 근거 제시가 결정이 어떻게 왜 검증됐는지에 대한 명확하고 감사 가능한 흔적을 남겨 투명성을 높인다.
- 신뢰성 — 하위 과업은 국소적으로 성공했으나 전체 목표는 놓치는 조용한 실패를 능동적으로 줄여, 시스템 전체를 더 견고하고 예측 가능하게 만든다.
단점
- 성능 부담 — 감사 계층을 더하면 지연과 연산 비용이 붙는다. 점검마다 추가 도구 사용이나 LLM 호출이 필요할 수 있다. 속도와 신뢰성의 직접적 맞교환이다.
구현 지침
감사가 가장 필요한 결정적 길목을 신중히 골라야 한다. 모든 단계에 감사를 걸면 성능이 심각하게 나빠진다. 오해나 정책 위반의 위험이 가장 높은 인계 지점에 집중하라. 엄격한 준수의 필요와 수용 가능한 시스템 지연 사이에서 균형을 잡는 것이 목표다.