AI를 가지고 몇가지 업무에 도움을 받기 시작한 이후로 세상 참 편한다는 것을 체험중이다. 특히 API를 이해한다는 건 AI를 직접 다루는 상황에서는 큰 축복이다. AI를 지원하는 업무 시스템들을 조합하면 기대했던 결과(정보)를 얻는다. 예전이라면 담당자한테 이야기해서 “보고”를 부탁하고, 담당자는 정보 형태를 맞추기 위해 몇 번은 핑퐁을 쳤야 했다. 이제는 관련 시스템들에 내가 접속할 수 있다면 30분안에 직접 처리할 수 있다. 정보의 질과 양 그리고 소통 시간을 감안하면 직접 하는게 더 효과적이기도 하다. 담당자가 못해서가 아니라 비효율이 소통 과정(혹은 자체)에서 만들어지기 때문이다.
1회성이 아닌 것들은 항상 스킬을 만들어둔다. 확률 기계가 만들어주기 때문에 결과 양식이 종종 달라지기도 하지만 내가 읽을 수 있으면 되기 때문에 관여치 않았다. 원하는 건 이쁜 보고서가 아니라 판단하기 위한 정보니까. 스킬을 한번 만들고, 종종 고쳐쓰는 편이다. 상황에 따라 판단하기 위한 추가 정보가 필요하기도 하고, 사람인 내가 읽기에 형태가 어그러진 경우도 있기 때문이다. 보통 2~3번 돌려보면 수정할 지점이 나오고, 해당 사항을 보완해 꼭 스킬을 업데이트한다. 그래야 사람인 내 업무 일관성과 지속성을 담보할 수 있으니까.
토큰 비용을 들여다보면서 스킬을 반복해서 사용하는 경우도 문제라고 생각이 들었다. 보통 스킬을 작성해주면 그 가운데 70% 이상은 대부분 코드지만, 결국 코드를 실행하기 위해 MD 파일에 기록된 짧은 자연어를 해석하고 판단하는건 AI가 하고 있기 때문이다. 그래서 가장 많이 반복하는 스킬을 대상으로 Next.js와 Typescript 기반으로 웹앱을 만들기로 했다. Java나 Kotlin도 좋지만 몇 년 전부터는 은근 Typescript가 매력적인 언어라는 생각이라 간단한 어플을 만드는 경우에는 이걸 주로 사용한다. Python도 좋긴 하지만 큰 코드를 유지한다고 했을 때 그리 추천하지는 않는다.
코드화를 한다고 했을 때 스킬 대비 변경에 대한 유연성이 확(!!!) 떨어지고, 수정이 필요할 때 코드를 직접 고칠지 스킬을 통해 고칠지 고민해야 한다는 것이다. 스킬로 코드를 고치면 이전과 같다는 보장이 없기 때문에 이전 글에서 이야기한 것처럼 기존 코드를 입력으로 넣어줘야 하는데… 빈대잡다가 초가삼간을 태우는 경우를 만들수도 있으니 말이다. 그래서 대상은 변경 가능성이 가장 적은 스킬을 대상으로 지정했다. 대부분 로직 코드가 이미 스킬에 파이썬으로 작성된 상태라 생성에 큰 문제는 없었다. 10분 정도 열심히 돌더니 짠 하고 localhost:3000으로 돌아가는 웹앱이 나왔다. 돌려보니 잘 돈다. 이제 내가 쓰는 토큰비의 큰몫을 잡았다!!

스킬을 반복 실행하던 결과로 하루에 $2 정도 발생하던 금액을 한번에 $9를 때려넣어 웹앱으로 바꿨다. 그리고 이후의 일평균 비용은 $1이하로 떨어졌다. ROI 측면에서보면 10일쯤이면 본전을 회수할 수 있다. AI를 쓰는데 ROI를 생각해야 하는 지점이 이런 것 아닐까 싶다.
물론 이렇다고 해서 모든 스킬을 코드화시키는 것을 말하고 싶은 건 아니다. 상황에 맞는 판단이 필요하고, 특이 동적인 스킬을 정적인 코드로 변경하는 건 스킬(요구 사항)의 변동성에 따라 잘 판단해야 한다. 잦은 변경이 수반되면 초가삼간을 태워버리는 엉뚱한 경우를 자초할 수 있으니 말이다.
다행히 생성된 코드를 눈으로 확인했다니 나름 잘 작성되있었다. 이러니 바이브를 안할 수 없는 거겠지. 딱 하나. 코드에서 개인적으로 리팩토링한 부분이 있는데, array 를 사용해서 pure function으로 처리하면 될 걸 굳이 switch 문으로 한땀한땀 작성된 부분이 있어서 고 부분만 고쳤다. 물론 개인적으로 switch를 극혐하기도 한다. 이 부분은 손으로 리팩토링했는데, AI한테 이걸 고치라는 Prompt를 주는라고 생각해보니 매우 복잡한 Prompt를 작성해야 했고, 둘째는 이걸 할려면 500줄짜리 생성 파일을 입력으로 feeding해줘야 한다. 굳이 사람이 하면 될 걸… 고치는데 30분 정도 걸렸는데,… 물론 비용을 고려했을 때 손으로 고치는게 맞았을까 싶기는 하다. ㅎㅎ