Beta정식 배포 전입니다. 필요한 자료나 불편한 점은 문의로 알려주세요.

PROCPA.
목차1.3. AI는 글만 쓴다, 엑셀은 코드가 만든다

1부. 문제와 원리

1.3. AI는 글만 쓴다, 엑셀은 코드가 만든다

AI가 할 수 있는 일은 글자를 쓰는 것뿐이고, 엑셀 파일은 그 글로 쓴 코드가 만듭니다. 프롬프트가 아니라 코드를 고정해야 하는 이유와, 그 코드를 개발자가 아닌 우리가 AI로 만드는 법을 다룹니다.

앞 챕터의 결론은 '반복은 결정론으로, 판단은 AI에게' 였습니다.

그런데 이 결론을 받아 든 순간 다음 의문이 따라옵니다. 그 결정론이라는 것을 어떻게 구현해야 하는가. 프롬프트를 아주 정교하게 쓰는 것과 무엇이 다른가.

이번 챕터는 그 결정론의 실체가 무엇이고, 어떻게 만드는지를 답합니다. 출발점은 다음의 단순한 사실 하나입니다.

AI는 글만 쓸 줄 압니다.

1. AI는 엑셀을 직접 다루지 못한다

ChatGPT, Claude 등의 챗봇에게 "이 표를 엑셀로 만들어 줘"라고 요청하면 몇 초 뒤 깔끔한 xlsx 파일이 만들어집니다. 얼핏 보면 AI가 직접 엑셀 프로그램을 띄워 셀에 값을 하나씩 채워 넣은 것처럼 보입니다.

하지만 실제 동작 방식은 전혀 다릅니다.

LLM(대규모 언어 모델)이 할 수 있는 일은 오직 하나, 글자를 써 내려가는 것뿐입니다. 셀을 클릭하지도, 파일을 저장하지도, 마우스를 움직이지도 못합니다. 입력을 받아 텍스트를 출력할 뿐입니다.

그렇다면 엑셀 파일은 어떻게 만들어진 걸까요? 그 뒤에서는 세 단계의 과정이 일어납니다.

  1. AI가 파이썬 코드를 씁니다: 한국어로 답변을 작성하듯 코드도 텍스트로 써 내려갑니다. "첫 행에 제목을 넣고, 배경을 회색으로 칠하고, 테두리를 그어라"라는 지시를 프로그래밍 언어로 옮겨 적는 것입니다.
  2. 컴퓨터가 그 코드를 실행합니다: AI가 작성한 코드를 실행하는 주체는 환경에 따라 나뉩니다. ChatGPT나 Claude 같은 웹 챗봇 서비스라면 서버 뒷단의 격리된 실행 환경(코드 실행 샌드박스)에서 코드를 돌리고, Claude Code나 Codex 같은 로컬/에이전트 기반 도구라면 내 PC에서 직접 코드를 실행합니다.
  3. 실행된 코드가 파일을 만듭니다: openpyxl과 같은 파이썬 라이브러리가 실제로 셀에 값을 입력하고 스타일을 입혀 xlsx 파일로 저장합니다. 우리가 내려받는 파일은 바로 이 결과물입니다.

AI가 하는 일은 글(파이썬 코드)을 쓰는 것까지 — 그 코드를 결정론적 실행기가 돌려 xlsx 파일을 만든다

결국 파일을 만든 것은 AI가 아니라 코드입니다. AI는 그 코드를 텍스트로 작성했을 뿐입니다. PPT나 워드 문서, 데이터 시각화 차트가 만들어지는 원리도 완전히 같습니다.

이는 실제 화면에서도 쉽게 확인할 수 있습니다. ChatGPT나 Claude에 엑셀 파일 생성을 요청하면 답변이 나오기 전 '분석 중', '생각중'과 같은 메시지가 뜹니다. 이 부분을 펼쳐 보면 AI가 실시간으로 작성한 파이썬 코드가 그대로 나타납니다. 그 안에는 헤더 색상을 지정하고 테두리를 긋는 명령어가 들어 있습니다.

정리하면 AI의 출력은 언제나 텍스트입니다. 사람이 읽을 일반 글이든, 컴퓨터가 실행할 코드든, 도구에 보내는 호출 명령이든 모두 글자입니다. 실제 파일을 만들고 컴퓨터를 움직이는 일은 언제나 그 뒤에 있는 프로그램(코드) 의 몫입니다.

이 구조를 이해하고 나면 앞 챕터의 원칙이 더욱 명확해집니다. "반복은 결정론으로, 판단은 AI에게"라는 접근은 인위적인 복잡한 설계를 요구하는 것이 아닙니다. 이미 AI 서비스가 동작하고 있는 이 '두 겹의 구조'를, 우리 실무의 설계로 의식적으로 가져오는 것뿐입니다.

2. 프롬프트를 다듬으면 해결되지 않을까

그렇다면 *"프롬프트를 아주 정교하게 쓰면 AI가 매번 똑같은 코드를 작성하지 않을까?"*라는 의문이 듭니다.

실제로 출력이 일관되게 나오지 않을 때 대부분은 프롬프트 창으로 돌아갑니다. 지시가 부족했다고 결론 내리고 "헤더는 굵게", "표 색은 회색으로" 한 줄씩 덧붙입니다. 프롬프트는 점점 길어지는데 결과는 여전히 조금씩 다릅니다.

이는 반복적으로 언급했듯 LLM은 다음에 올 단어 조각인 토큰(Token) 을 확률적으로 하나씩 뽑아 이어 붙이는 확률모델이기 때문입니다. "당기순이익이 전기 대비"까지 읽었다면 '증가' 40%, '감소' 35% 같은 확률표에서 하나를 추첨하고, 이 과정을 수천 번 반복한 결과물이 우리가 받는 답변입니다. 매번 결과가 조금씩 달라지는 것은 결함이 아니라 동작 방식 그 자체입니다.

프롬프트가 하는 일은 이 확률 분포를 원하는 방향으로 좁히는 것입니다. 엉뚱한 단어가 나올 확률을 낮추고 의도한 표현이 나올 확률을 높여주는 것이죠. 프롬프트를 잘 다듬을수록 결과가 좋아지는 이유가 여기에 있습니다. 하지만 분포를 좁히는 것과 오차를 '0'으로 만드는 것은 완전히 다른 이야기입니다.

여기에 전 편에서 다룬 사실을 대입해 보면 문제의 본질이 선명해집니다. AI가 작성하는 코드 역시 '글(텍스트)'입니다. 글이기 때문에 매번 확률로 생성되고, 확률로 생성되기 때문에 요청할 때마다 조금씩 다른 코드가 만들어집니다. 요청할 때마다 엑셀을 만드는 코드가 매번 달라지니 결과도 달라질 수 밖에 없는 것입니다.

프롬프트를 다듬으면 분포가 좁아질 뿐 폭이 남는다 — 한 점으로 고정하는 것은 코드 실행뿐

3. 그래서 코드를 재사용한다

글(프롬프트)은 확률의 영역이라 고정할 수 없지만, 코드는 파일로 저장해 단단히 고정할 수 있습니다.

저장된 코드는 결정론의 영역입니다. 그래서 서식이나 집계 수식처럼 매번 똑같아야 하는 규칙은 AI가 매번 새로 작성하게 두지 않고, 한 번 검증해 둔 코드 파일에 미리 고정해 둡니다. AI는 그 코드를 호출하기만 하면 됩니다.

# 매 요청마다 새로 짜지 않고, 미리 정의해 둔 서식 함수를 호출만 한다
apply_header_style(ws, row=1, theme="audit_charcoal")  # 색상·테두리·폰트 = 코드로 고정

이 한 줄이 실행되는 한, 헤더 색상과 테두리 굵기와 폰트는 언제나 똑같습니다.

달라지는 것은 산출물만이 아닙니다. AI가 고민해야 할 변수도 대폭 줄어듭니다. 서식까지 매번 알아서 정하게 두면 AI가 결정할 항목이 10개가 넘고 그 10개가 매번 흔들리지만, 서식을 코드로 고정해 두면 AI가 판단할 것은 딱 두개 뿐입니다. "무엇이 표이고, 어디까지가 헤더인가?" 딱 그 판단만 AI가 내리고, 나머지 서식과 레이아웃은 코드가 오차 없이 처리합니다.

실제로 저는 엑셀, 워드, PPT의 표준 서식을 코드로 고정해 둔 자산을 테마 스킬(Theme Skill) 이라 부르고 실무에서 적극 활용하고 있습니다. 산출물의 브랜드 색상, 표 스타일, 제목부 서식, 정렬 규칙을 코드로 묶어두고, AI는 내용만 채워 넣게 만드는 방식입니다.

프롬프트가 무의미하다는 뜻이 아닙니다. "무엇을 할지"를 파악하고 문맥을 읽어내는 유연한 판단을 대신할 도구는 없습니다. 다만 판단의 문맥은 AI에게 열어두되, 실행의 규칙은 코드로 잠그는 것입니다.

결국 우리가 축적해야 할 실무 자동화의 핵심 자산은 프롬프트가 아니라, 그 아래에서 파일을 안정적으로 만들어내는 코드입니다.

4. 토큰은 언제 소모되는가: 비용과 속도의 비밀

코드로 골격을 고정하는 설계에는 일관성(품질) 외에도 강력한 이점이 하나 더 있습니다. 바로 비용과 응답 속도입니다.

앞서 살펴본 토큰(Token) 은 AI가 글을 쓰는 단위이면서, 동시에 AI 서비스의 요금과 사용량 한도를 결정하는 단위입니다. ChatGPT나 Claude의 유료 서비스를 쓰더라도 무제한으로 쓸 수 있는 것은 아닙니다. 일정 시간 동안 사용할 수 있는 토큰 한도가 정해져 있어, 작업을 조금만 길게 이어가도 *"사용량 한도에 도달했습니다"*라는 메시지를 마주하게 됩니다.

여기서 반드시 기억해야 할 핵심 원리가 있습니다. 바로 "토큰이 전혀 들지 않는 순간" 입니다.

AI가 텍스트를 읽고 쓸 때는 토큰이 소모되지만, 작성된 코드를 컴퓨터(실행기)가 실행하는 동안에는 토큰이 단 1개도 들지 않습니다. 그 작업은 AI 모델이 아니라 컴퓨터가 처리하는 영역이기 때문입니다. 코드가 1초를 돌든 10분을 돌든 실행 구간의 토큰 소모는 완전히 '0'입니다.

AI가 코드를 쓰는 구간에만 계량기가 돈다 — 컴퓨터가 코드를 실행하는 구간은 토큰 0

(단, 코드 실행 후 나온 결과나 오류 메시지를 AI가 다시 읽을 때는 입력 토큰이 소모됩니다.)

이 차이가 왜 중요할까요? 서식과 검증 로직을 미리 코드로 고정해 두면, AI가 매번 수백 줄씩 코드를 생성할 필요 없이 미리 정의된 코드(함수)를 호출하는 단 한 줄만 작성하면 됩니다.

  1. 비용 절감: AI가 작성하는 출력 토큰이 획기적으로 줄어들어 사용량 한도에 여유가 생깁니다.
  2. 속도 향상: AI가 긴 코드를 한 글자씩 써 내려가는 시간을 기다릴 필요 없이 즉각 실행됩니다.

여기에 앞서 확인한 일관성까지 더하면, 코드 고정이라는 하나의 설계에서 세 가지 이득이 동시에 나오는 셈입니다.


그렇다면 여기서 가장 결정적인 마지막 질문이 남습니다.

결정론의 핵심이 코드라면, 결국 파이썬이나 VBA같은 코딩을 배워야 한다는 뜻인가요?

다음 챕터에서는 개발 지식 없이도 내 업무 규칙을 코드로 만드는 방법, 그리고 AI를 실무에 활용하기 위한 실전 로드맵을 살펴보겠습니다.

이 가이드 그대로 팀·조직 교육이 필요하신가요? 실무자 눈높이의 강의·워크숍으로 진행합니다.

강의·워크숍 문의