뮤트 에이전트: 왜 당신의 AI는 입을 다물고 그래프에 귀를 기울여야 하는가
Source: Dev.to
우리는 에이전트를 잘못 만들고 있다
현재 업계에서 표준으로 쓰이는 에이전트형 AI는 채팅형 제너럴리스트입니다. LLM에 도구 목록과 “당신은 도움이 되는 어시스턴트입니다”라는 시스템 프롬프트를 제공하고, 파라미터를 환각하지 않거나 “죄송합니다, 혼란스럽습니다”라는 루프에 빠지지 않으며, 사용자가 상태 업데이트만 요청했을 때 delete_database() 같은 명령을 실행하지 않기를 기도합니다.
이러한 에이전트가 실패할 때 일반적인 해결책은 더 많은 대화입니다: “추론 루프”, “자기‑반성”, “사고 사슬” 등을 추가하고, 에이전트가 스스로 올바른 결정을 내리도록 수천 개의 토큰을 지불합니다.
나는 다른 접근법을 제안합니다: 뮤트 에이전트. 이 에이전트는 말하지도, 반성하지도, 환각하지도 않습니다. 실행하거나 즉시 실패하며, 안전성을 프롬프트(확률적)에서 그래프(결정론적)로 옮깁니다.
실험: 베이스라인 vs. 뮤트
나는 간단한 작업 “결제 서비스를 재시작한다.” 를 두 에이전트, 표준 “Chatty” 에이전트와 “Mute” 에이전트를 비교하는 실험을 수행했다.
우리 시스템에서는 서비스를 재시작하려면 환경(PROD vs. DEV) 을 지정해야 하지만, 사용자의 프롬프트에는 이 정보가 누락되어 있었다.
표준 “Chatty” 에이전트
- 일반적인 ReAct 패턴을 기반으로 함.
- 요청을 보고 도구 정의를 스캔하여
restart_service(service_name, environment)를 찾음. - LLM은 본래 도움이 되려는 성향이 있기 때문에 기본 환경(보통 “PROD”)을 환상하거나 “정보가 충분한가? 추측해야 할까?” 라는 질문을 반복함.
결과: 무단 실행 위험 또는 명확화 루프에 토큰 낭비가 발생.
비용: 높음 (도구 정의 + 추론 토큰).
지연 시간: 높음 (생성 시간).
뮤트 에이전트 (“제한된 에이전트”)
- LLM 컨텍스트에 도구 정의 대신 다차원 지식 그래프 를 사용함.
- 그래프에서
restart_service는 명시적인 엣지를 가짐:REQUIRES → environment_specified. - 사용자가 “결제 서비스를 재시작한다”고 물으면 에이전트가 그래프를 탐색:
| 노드 | 엣지 | 컨텍스트 확인 |
|---|---|---|
restart_service | REQUIRES environment_specified | 컨텍스트에 environment 가 있나요? 없음 |
즉시 중단 – 에이전트는 동작을 제안할 수 없음. 제약 로직이 LLM 외부에 존재하므로 environment="PROD" 를 환상할 수 없음.
코드: 작동 방식
# Knowledge Graph Definition
restart_action = Node(
id="restart_service",
attributes={
"requires_environment": True,
"requires_service_name": True,
},
)
# Constraint Edge
restart_requires_env = Edge(
source_id="restart_service",
target_id="environment_specified",
edge_type=EdgeType.REQUIRES, # Hard Constraint
attributes={"mandatory": True},
)
# Critical test: check constraints BEFORE proposing action
if not env:
# Fail immediately. Zero hallucinations.
result = MuteAgentResult(
success=False,
hallucinated=False,
constraint_violation="Missing Constraint: Environment not specified",
error_loops=0, # No “Let me think about this” loops
)
이 논리는 의도적으로 단순합니다: AI 추측 없이, 단순히 결정론적 제약 검사를 수행합니다.
결과
| 지표 | 수다스러운 에이전트 | 무음 에이전트 |
|---|---|---|
| 환각 | 존재 (잘못된 환경 위험) | 제로 (필요한 데이터 없이는 작동할 수 없음) |
| 토큰 사용량 | 높음 (도구 정의 + 추론) | 낮음 (관련 서브그래프만) |
| 오류 루프 | 다중 명확화 턴 | 제로 – 정확한 오류로 빠른 실패 |
무음 에이전트는 명확한 오류를 반환했습니다: Missing Constraint: Environment not specified, 불필요한 토큰 사용과 위험한 행동을 방지했습니다.
감산을 통한 스케일링
일반적인 스케일링은 더 많은 도구, 컨텍스트, 메모리 또는 추론 단계를 추가합니다. Mute Agent는 감산을 통해 스케일링합니다:
- 파라미터를 추측하는 능력.
- LLM이 제어 흐름을 관리해야 하는 필요성.
- 관련 없는 도구들의 잡음.
에이전트를 “Semantic Firewall”(지식 그래프)으로 제한함으로써 더 신뢰할 수 있고 강력해집니다. 때때로 AI 에이전트가 할 수 있는 가장 현명한 행동은 아무 말도 하지 않는 것입니다.