FORGE함께 기록하고, 함께 벼리는 AI 대장간

자동화가 끝났다고 좋은 글은 아니다

뉴스분석 자동화가 예정된 시간에 실행됐다. 기사를 찾고 자료를 모아 원고와 대표 이미지까지 만들었다. 파일명도 맞고 저장 위치도 정확하다.

그렇다고 글의 품질까지 좋다고 할 수는 없다.

이 두 가지를 시스템 안에서 구분하는 일은 생각보다 어려웠다. 자동화가 끝까지 실행됐다는 표시가 있으면 우리는 그 결과물의 품질도 괜찮을 것이라고 쉽게 생각한다. 원고 파일이 생성됐다는 사실을 근거가 충분하다는 뜻으로, 이미지까지 붙었다는 사실을 글이 완성됐다는 뜻으로 받아들인다.

하지만 제작 과정이 끝났다는 것과 좋은 글이 만들어졌다는 것은 다른 문제다.

오류 없는 실행과 글의 품질을 한 덩어리로 판단하는 순간, 자동화의 성공이 곧 글쓰기의 성공처럼 보이기 시작한다.

뉴스분석 시스템을 v4로 고치면서 가장 먼저 분리한 것은 도구가 아니라 그동안 한 덩어리가 되어 있던 이 두 판단이었다.

한 번의 실행에 너무 많은 책임이 묶여 있었다

기존 v3는 한 번의 예약 실행 안에서 기사 탐색부터 이미지 제작까지 모두 처리했다. 원문을 확인하고 쟁점을 정한 뒤 논증을 설계하고, 근거표와 초안을 만들고, 반대 검토와 형식 검사까지 이어갔다.

논증 규칙 자체는 이미 촘촘했다. 독자가 판단해야 할 질문과 대립하는 입장을 먼저 정리하고, 가장 강한 찬성과 반대 논거를 세웠다. 원고에 들어갈 주장마다 직접 출처를 붙이고, 그 근거로 어디까지 단정해 쓸 수 있는지도 정했다.

문제는 규칙의 부족이 아니라 책임의 혼합이었다.

근거가 충분하지 않아도 같은 실행 안에서 다음 단계로 넘어가기 쉬웠다. 이미지 제작에서 문제가 생기면 앞서 끝낸 조사와 초안까지 어디까지 완료된 것인지 애매해졌다. 반대로 원고와 이미지가 모두 만들어지면 조사와 논증까지 제대로 끝난 것처럼 보이기도 했다.

실행 로그에는 각 단계의 결과가 남았지만, 다음 단계로 넘어가도 되는지를 분명하게 알려주는 상태는 없었다.

“완성 후보”, “보강 필요”, “거의 완료” 같은 자연어 설명은 사람이 읽기에는 어렵지 않다. 하지만 다음 도구가 그 말을 읽고 작업을 이어가야 한다면 이야기가 달라진다. 다음 단계로 넘어가도 되는지, 어디에서 멈춰야 하는지를 이런 표현만으로 정확하게 판단하기는 어렵다.

v3의 논증은 남기고 역할만 나눴다

이번 개편에서 기존 체계를 처음부터 다시 만들지는 않았다. v3에서 중요하게 쓰던 네 가지 판단 기준은 그대로 남겼다.

  • 쟁점 선정: 지금 독자가 판단해야 할 질문이 있는가. 그 판단이 실제 결과와 연결되는가.
  • 논증 지도: 가장 강한 찬성과 반대 논거는 무엇인가. 판단을 가를 근거와 아직 남아 있는 불확실성은 무엇인가.
  • 주장·출처표: 원고에 들어갈 각 주장을 어떤 직접 근거가 어디까지 뒷받침하는가.
  • 반대 검토: 결론을 바꿀 수 있는 반증과 상대 입장을 충분하고 공정하게 다뤘는가.

바꾼 것은 이 판단 기준이 아니라 누가 어디까지 책임질 것인지였다.

Work는 조사와 논증, 근거표 작성과 초안을 맡는다. 여기서 만든 초안은 완성본이 아니라 다음 검수를 위한 작업물이다. Codex는 상태파일과 실제 파일을 읽어 규칙과 형식, 저장 경로, 주장과 근거의 연결을 검사한다. ChatGPT에서는 그 검사를 통과한 초안을 놓고 나와 다시 토론하고 문장을 다듬는다. 대표 이미지는 본문이 확정된 뒤에만 만든다.

각 단계가 자기 역할을 넘어 다음 판단까지 대신하지 않게 한 것이다. 조사 단계가 자기 초안을 최종 합격시키지 않고, 검수 단계가 문장과 표현의 마지막 판단까지 대신하지 않는다. 이미지가 만들어졌다는 이유로 글까지 끝난 것으로 보지도 않는다.

v3의 논증 기준을 버린 것이 아니라, 그 기준을 누가 언제 판단할 것인지 분리했다.

다음 작업은 상태값을 보고 시작한다

v4에서는 실행 회차마다 state.yaml이라는 작은 상태 기록 파일을 하나 만든다. 이 파일에는 현재 작업이 어느 단계까지 왔는지를 RESEARCHING, QA_PASS, COMPLETE 같은 상태값으로 기록한다. 다음 작업은 앞 단계의 상태값을 확인한 뒤 시작한다.

정상적인 흐름은 다음과 같다.

RESEARCHING → RESEARCH_PASS → DRAFT_READY → QA_RUNNING → QA_PASS → IMAGE_READY → COMPLETE

주제가 없으면 NO_TOPIC, 결정적인 근거가 부족하면 EVIDENCE_FAIL, 검수에서 문제가 발견되면 QA_FAIL, 이미지 제작에 실패하면 IMAGE_FAIL로 남긴다.

실패 상태를 따로 두는 이유는 실패를 더 많이 기록하기 위해서가 아니다. 어디까지 끝났고 어디에서 다시 시작해야 하는지를 분명하게 남기기 위해서다.

예를 들어 이미지 제작에 실패해 IMAGE_FAIL이 되더라도 앞서 끝낸 조사와 초안, QA 결과까지 실패한 것은 아니다. NO_TOPIC 역시 자동화가 실패했다는 뜻이 아니다. 검토할 만한 주제가 없어서 억지로 글을 만들지 않았다는 결과다.

상태값을 영어로 정한 것도 표현상의 선택은 아니다. 다음 도구가 같은 값을 읽고 정해진 단계만 실행하도록 하기 위해서다. 사람에게 보여주는 설명은 자연어로 써도 되지만, 시스템이 읽는 상태값은 같은 의미라면 항상 같은 이름을 써야 한다.

QA 통과는 좋은 글이라는 뜻이 아니다

Codex가 확인할 수 있는 것은 꽤 많다. 필요한 정본을 읽었는지, 논증 지도와 근거표가 비어 있지 않은지, 원고의 주장과 출처가 연결되는지, 파일명과 frontmatter가 맞는지, 작업용 메모가 최종 원고에 남았는지 검사할 수 있다.

이런 검사는 글의 품질을 확인하는 데 필요하다. 그러나 그것만으로 좋은 글을 보증할 수는 없다.

중심 질문이 정말 중요한지, 반론을 다뤘지만 여전히 상대를 약하게 그린 것은 아닌지, 결론의 강도가 독자에게 정직하게 들리는지까지 형식 검사만으로 판단하기는 어렵다. 근거표가 있어도 자료 선택이 편향됐을 수 있고, 문장마다 출처가 붙어 있어도 글 전체가 독자의 판단을 전진시키지 못할 수 있다.

그래서 QA_PASS는 정해진 검사를 통과했다는 뜻으로만 쓴다.

글의 품질을 확인하는 하나의 관문이지, 좋은 글이라는 최종 판정도 아니고, 결론이 옳다는 뜻도 아니며, 발행을 승인한다는 뜻도 아니다.

이 세 판단은 분리되어야 한다.

좋은 글인지에 대한 마지막 판단은 사람과의 토론과 편집으로 남겨둔다. 그 과정에서 사실이나 근거, 결론이 바뀌면 다시 QA로 돌아간다.

COMPLETE도 공개 발행을 뜻하지 않는다. 원고와 이미지, 기록이 제작 흐름 안에서 갖춰졌다는 상태다. 실제 게시 여부와 게시 시각은 공개된 글을 확인한 뒤 별도로 기록한다.

자동화의 목표는 판단을 없애는 것이 아니다

좋은 자동화는 사람이 판단하지 않아도 되는 시스템이라고 생각하기 쉽다. 하지만 뉴스분석에서는 오히려 반대에 가깝다.

자동화가 해야 할 일은 판단을 없애는 것이 아니라, 어떤 판단을 어디에서 해야 하는지 분명하게 만드는 것이다.

어떤 기사를 검토했는지, 어떤 근거가 결론에 영향을 줬는지, 반대 근거는 무엇이었는지, 어디까지 자동화가 확인했고 어디부터 사람이 판단했는지가 남아야 한다. 그래야 문제가 생겼을 때 “AI가 그랬다”거나 “자동화는 성공했다”는 말만으로 결과를 설명하지 않게 된다.

이번 v4 개편에서 바꾼 것도 여기에 있다. 자동화가 끝까지 실행됐는지와 글의 품질이 좋은지를 같은 판단으로 보지 않도록 했다.

자동화에는 묻는다.

“정해진 과정이 제대로 끝났는가.”

글의 품질에는 묻는다.

“근거와 논증, 구조와 표현이 우리가 정한 기준을 충족했는가.”

그리고 마지막으로 좋은 글인지 다시 묻는다.

“이 글이 독자의 판단을 한 단계 전진시켰는가.”

세 질문은 비슷해 보이지만 같은 질문이 아니다.

자동화가 끝났다는 사실만으로 좋은 글이 만들어졌다고 판단하지 않는 것. 이번 개편에서 가장 먼저 분리하고 싶었던 것도 바로 이 판단이었다.


관련 뉴스비평: http://blog.naver.com/ahham

뉴스분석 전체 보기