Human-readable vs Machine-usable Outputs
이 문서는 CCAF Domain 4를 이해하기 위한 개념 설명용 노트다.
여기서는 출력 형식을 단순히 하나로 통일하는 문제가 아니라, 사람과 시스템이라는 서로 다른 소비자에 맞게 표현 층을 어떻게 나눌 것인가의 문제로 이해하는 데 초점을 둔다.
왜 사람용 출력과 시스템용 출력을 구분해야 하는가
사람이 읽기 좋은 출력과, 시스템이 후처리하기 좋은 출력은 종종 다르다.
사람은 맥락 설명, 자연스러운 문장, 예외 상황에 대한 부연, 가독성 높은 서술을 원한다.
반면 시스템은 고정된 필드, 안정적인 타입, 예측 가능한 값 범위, 파싱 가능한 구조를 원한다.
즉 한쪽에는 친절함이, 다른 한쪽에는 기계적 안정성이 중요하다.
하나의 출력이 모두를 만족할 거라고 가정하지 않는 것이 핵심이다.
왜 둘을 섞으면 문제가 생기는가
사람용 설명과 시스템용 구조를 한 덩어리로 섞으면 다음 문제가 생긴다.
- 파서가 설명 텍스트에 흔들린다
- 사람은 필요한 핵심 구조를 찾기 어렵다
- 시스템은 표현의 다양성 때문에 불안정해진다
- 출력 계약이 흐려진다
예를 들어 JSON 안에 사람이 읽으라고 길게 쓴 산문이 지나치게 섞이면, 기계 사용성과 가독성 둘 다 애매해질 수 있다.
즉 문제는 형식 혼합 자체가 아니라,
서로 다른 소비자 요구를 하나의 층에 억지로 밀어 넣는 것
이다.
언제 표현 층을 분리해야 하는가
다음 경우에는 분리 가치가 크다.
1. 시스템 후처리가 핵심일 때
예:
- PR 코멘트 자동 생성
- 티켓 생성
- 분류 결과 저장
- 후속 API 호출
이 경우 machine-usable output이 우선이다.
2. 사람 설명도 함께 필요할 때
예:
- JSON 결과는 시스템이 쓰고
- 설명 텍스트는 사람이 검토해야 하는 경우
이럴 때는 이중 채널이 유용하다.
3. UI 표시와 내부 처리 목적이 다를 때
예:
- UI에는 요약 문장
- 내부적으로는 structured label / score / confidence
같이 서로 다른 표현 층이 필요한 경우
즉 중요한 것은:
소비자가 다르면 출력 계층도 달라질 수 있다는 점을 인정하는 것
이다.
이중 채널 패턴은 왜 유용한가
실무에서 자주 쓰는 패턴은 이거다.
- machine channel: JSON, schema-bound fields
- human channel: explanation, summary, rationale
이렇게 나누면:
- 시스템은 안정적으로 파싱할 수 있고
- 사람은 맥락을 이해할 수 있다
즉 이중 채널 패턴은 출력 복잡도를 늘리는 것이 아니라,
서로 다른 소비자 요구를 충돌시키지 않고 분리하는 방법
이다.
언제 machine-usable output을 더 우선해야 하는가
다음 상황에서는 사람 친화성보다 machine-usable output이 우선이다.
- 후속 시스템 자동화가 있을 때
- validation이 핵심일 때
- 대량 처리일 때
- 구조화된 저장이 필요할 때
- schema 안정성과 consistency가 중요할 때
반대로 사람이 최종 소비자이고, 후속 시스템이 없거나 약하면 human-readable output 비중을 더 높일 수 있다.
즉 출력 설계는 미학 문제가 아니라,
누가 이 출력을 실제로 소비하는가의 문제
다.
왜 이것도 output reliability 문제인가
사람용과 시스템용 출력을 구분하지 않으면, 결국 양쪽 모두가 불안정해진다.
- 시스템은 파싱 실패 가능성이 커지고
- 사람은 지나치게 기계적인 출력에 맥락을 잃고
- validation 기준도 애매해진다
즉 소비자에 맞는 표현 층을 나누는 것은 친절함 문제가 아니라,
출력을 더 신뢰 가능하게 만드는 설계
에 가깝다.
흔한 오해
“한 가지 출력 형식으로 통일하는 게 가장 깔끔하다”
항상 그렇지는 않다. 소비자가 다르면 층 분리가 더 안정적일 수 있다.
“사람이 읽을 수 있으면 시스템도 쓸 수 있다”
그렇지 않다. 자연어는 기계 처리에 불안정할 수 있다.
“JSON 안에 설명을 많이 넣으면 둘 다 해결된다”
아니다. 설명과 구조의 역할을 섞으면 오히려 둘 다 애매해질 수 있다.
한 문장 요약
좋은 출력은 한 가지 예쁜 형식이 아니라, 사람과 시스템이라는 서로 다른 소비자에 맞게 표현 층을 구분할 줄 아는 출력이다.