> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# 에이전트 답변 검증

> 모든 에이전트 출력을 사용자에게 닿기 전 인과 그래프에 대조합니다

인과 그래프를 만들면 **안전망**으로 쓸 수 있습니다. Agent가 낸 답을 모두 그래프에 대조해, 사용자가 보기 전에 모순을 잡죠.

## 무엇을 검사하나

Nora가 Agent 응답에서 사실 주장을 뽑아 그래프와 견줍니다.

* **방향 주장** "A가 B를 일으킴"(엣지 구조에 대조).
* **부호 주장** "A가 늘면 B가 늚"(엣지의 부호에 대조).
* **크기 주장** "A는 200쯤"(변수의 알려진 범위에 대조).
* **값 주장** "상태는 'error'"(이산 변수의 허용 값에 대조).

## 설정

1. 인과 그래프를 배포합니다([개요](/ko/build/causal-graph/overview) 참고).
2. Agent에 붙입니다. Agent 인스펙터 → **Verification → Add graph** 입니다.
3. 심각도별 동작을 고릅니다.
   * **Warn** 답변에 경고 필드를 답니다. 사용자는 그래도 봅니다.
   * **Block** 답변을 멈추고 보내지 않습니다.
   * **Rewrite** 모순을 짚어 주고 Agent에게 다시 답할 기회를 한 번 줍니다.

기본은 보수적입니다. 약한 모순은 `warn`, 강한 모순은 `block` 입니다.

## 심각도

* **Hard contradiction** Agent는 A→B 라는데 그래프는 B→A 입니다. 또는 Agent가 변수 범위 밖 값을 주장합니다.
* **Soft contradiction** Agent가 그래프가 확인하진 않는(반박도 안 하는) 부호를 주장합니다.
* **Consistent** 다 맞습니다.
* **Uncheckable** 응답의 어떤 주장도 그래프의 무엇과 안 맞습니다.

## 트레이스의 검증

검증을 켠 실행마다 트레이스에 **Verification** 패널이 뜹니다.

* 답에서 뽑은 주장 각각.
* 맞는지, 부딪히는지, 그래프에 없는지.
* 검사에 쓴 그래프 엣지·변수.
* 취한 동작(warn / block / rewrite).

손볼 때 좋습니다. 검증이 오탐을 너무 많이 표시하면, 실패한 주장을 보고 빠진 엣지를 더하거나 심각도 임계값을 손보세요.

## Rewrite 루프

**rewrite**로 두면 Agent가 이런 시스템 메시지와 함께 다음 턴을 받습니다.

> 이전 답변에서 A→B라고 했습니다. 도메인 그래프에 따르면 B→A 입니다. 다시 답해 주세요.

Agent가 새 응답을 내고, 검증을 다시 돕니다. block으로 넘어가기 전에 rewrite를 최대 3번 시도합니다(조정 가능).

## 검증과 리트리벌 그라운딩

* **그라운딩**([리트리벌 그라운딩](/ko/build/retrieval/grounding))은 Agent에 닿기 전 *리트리벌한 청크*를 검사합니다.
* **검증**은 사용자에게 닿기 전 *Agent의 최종 답*을 검사합니다.

둘 다 인과 그래프를 쓰고 서로 보완합니다. 둘 다 켜면 "Agent가 나쁜 컨텍스트를 읽음" 과 "Agent가 좋은 컨텍스트에도 환각함" 을 다 잡습니다.

## 성능

검증은 답이 담은 주장 수에 따라 실행당 100\~400ms를 더합니다. 처리량이 큰 Agent는 위험한 의도를 다루는 Agent에만 검증을 거는 걸 생각해 보세요.

## 언제 검증을 끄나

어떤 Agent는 정말 검증하면 안 됩니다. 창작 글쓰기, 브레인스토밍, 의견 프롬프트 같은 것들이죠. 그래프를 안 붙이거나, 모든 동작을 `warn`으로 두고 붙이세요(절대 막지 않고, 늘 트레이스에는 보입니다).
