10월 31일, 카카오 AI TOP 100 예선을 치렀다. 다섯 시간 안에 AI 에이전트를 만들어 제출하는 대회다. 나는 마감 직전에 제출했다.
대회 규정상 문제 내용은 적지 않는다. 일하는 방식과 아쉬웠던 점, 배운 것만 적는다. 마감이 있는 에이전트 대회를 앞두고 있다면 끝의 「다음에는」 목록부터 봐도 된다.
AI 둘과 나눠 맡았다
- 나: 자료 확보, 판단과 제출, 사람 손이 필요한 설정
- 페퍼(내 AI 비서): 기록과 자료 정리, 명세 초안
- Claude Code: 봇 구현, 지식 베이스 작성과 원문 대조, 시험, 배포
후반에는 Claude 세션을 하나 더 열어 도움을 받았다. 혼자 했다면 다섯 시간 안에 끝낼 수 없는 분량이었다.
개발 노트
AI 둘과 나눠 맡은 일
10월 31일 예선, 다섯 시간 동안의 역할
나
- 자료 확보
- 판단과 제출
- 사람 손이 필요한 설정
페퍼 (내 AI 비서)
- 기록과 자료 정리
- 명세 초안
Claude Code
- 봇 구현, 지식 베이스 작성
- 원문 대조, 시험, 배포
후반: Claude 세션 하나 더
- 세션 사이 메시지가 상대 쪽에서 보류됐다
- 내가 붙여 넣어 전달했다
글쓴이의 기록으로 그린 역할표다. 대회 문제 내용은 담지 않았다.
잘 된 것
먼저 짠 시간표. 당일 아침에 제출 시각에 맞춰 시간표를 짜 두었다. 자료 수집이 제출 직전까지 이어져 그대로 되지는 않았지만, 마감은 넘기지 않았다.
응답 구조. 웹훅에는 바로 답하고, 뒤에서 처리한 다음 콜백으로 답을 보냈다. 대화 상태는 Redis에 두고 같은 이벤트는 한 번만 처리했다. 제출 뒤 실제 카카오톡으로 도구 호출이 필요 없는 글 두 건을 보내 보니 1.9초와 3.4초 만에 답이 왔다.
지식을 통째로 프롬프트에 넣었다. 검색 단계를 두기보다 전체를 넣는 쪽을 골랐다. 프롬프트 캐시로 속도는 어느 정도 잡았지만, 프롬프트가 큰 만큼 비용이 들었다. 지식이 더 커지는 과제라면 검색과 분할을 검토해야 할 것이다.
설정은 시험으로 정했다. 동시 호출을 시험해 보고, SDK의 자동 재시도를 끈 뒤 정해 둔 시간 안에서 직접 재시도하게 바꿨다. 같은 시험을 다시 돌리니 오류가 없었고, 가장 오래 걸린 응답은 9.3초였다. 모델도 작은 비교 시험으로 골랐다. 표본이 작아 참고 수준이었다.
자체 시험. 직접 시험을 만들어 실패를 줄여 갔다. 물론 내가 만든 채점이라 실제 점수는 아니다.
원문 대조. 후반에 그때까지 정리한 지식을 원문과 다시 대조했더니 고칠 곳이 150건 남짓 나왔다.
아쉬웠던 점
꼭 필요했던 자료가 마지막 배포 뒤에 왔다. 마지막 배포는 14시 44분이었고, 그 자료는 14시 50분에 받았다. 결국 그 부분은 봇에 넣지 못했다. 자료를 언제 어떻게 구할지 너무 늦게 파악했다. 끝내 찾지 못한 자료도 남았다.
실제 채널로 사진과 음성을 늦게 보내 봤다. 시험에서는 문제없던 사진이 실제 카카오톡에서는 주소만 담긴 글로 들어왔다. 음성도 그렇게 들어왔고, 음성 변환은 그때까지 붙이지 않은 상태였다. 배포 뒤에는 저장된 대화가 API에서 거부되는 일도 있었다. 주소 형식과 저장된 대화 문제는 실제 채팅에서야 드러났고, 실제로 보내 보지 않았다면 모른 채 제출했을 것이다. 사진은 고친 뒤 실제 채팅에서 다시 확인하지 못한 채 제출했다.
세션끼리 말이 통하지 않았다. 두 Claude 세션 사이의 조율 메시지가 상대 세션에서 보류됐다. 내가 바로 붙여 넣어 전달했고, 원래 메시지는 몇 분 뒤 만료됐다. 기록도 여러 곳으로 갈라졌다. 후반 세션이 다른 Notion 페이지에 적은 내용은 한동안 놓쳤다.
시험 비용이 느는 속도를 놓쳤다. 13시 34분까지만 해도 Claude는 크레딧이 넉넉하다고 했다. 시험 비용은 생각보다 빠르게 늘었고, 결제 수단도 등록해 두지 않았다. 심사 중에 크레딧이 바닥나면 봇은 오류 안내만 보내게 된다. Claude는 14시 30분에 이 상태를 보고도 14시 42분에야 내게 알렸다. 시간과 크레딧이 모자라 마지막 배포에 넣은 자료는 일부만 확인했다. 크레딧은 제출 뒤에 충전했다.
남은 실패에 기본 행동도 섞여 있었다. 자체 시험에서 끝까지 남은 실패 중에는 먼저 확인하지 않고 움직인 경우도 있었다. 이런 행동은 처음 설계에 넣어야 했다.
마지막까지 욕심을 냈다. 14시 59분 5초에 「한번만 지금 당장 수정해봐」라고 했다. Claude는 새 자료부터 확인하더니 14시 59분 22초에, 수정할 시간이 없으니 바로 제출하라고 했다. 수정 없이 제출했다. 결과적으로 제출은 들어갔지만, 조금만 늦었으면 제출 자체를 못 했다.
개발 노트
13시 34분부터 마감까지
예선 마감은 15시. 시각은 글쓴이 기록
13:34 크레딧은 넉넉하다는 말
- 시험 비용은 생각보다 빨리 늘고 있었다
- 결제 수단은 등록하지 않은 상태
14:30 → 14:42 크레딧 보고
- 14:30 Claude가 줄어드는 크레딧을 봤다
- 14:42에야 내게 알렸다
14:44 마지막 배포
- 시간과 크레딧이 모자라
- 넣은 자료는 일부만 확인했다
14:50 꼭 필요한 자료 도착
- 마지막 배포 6분 뒤
- 봇에 넣지 못했다
14:59 한 번만 더 고치려다
- 14:59:05 「한번만 지금 당장 수정해봐」
- 14:59:22 Claude: 시간이 없으니 바로 제출
- 수정 없이 제출했다
시각은 글쓴이의 세션 기록이다. 15시 마감은 대회 공개 안내에 있다.
제출 뒤에 DB가 완성됐다. 제출 뒤에 남은 자료를 마저 정리했다. 규정상 심사가 끝나기 전에는 봇에 넣을 수 없어 따로 묶어 두었다.
페퍼에게서 남은 한마디
제출 몇 분 전, 제출 글에 적은 수치를 두고 페퍼가 남긴 답은 이랬다.
확인 안 된 숫자가 남는 것보다, 정성 서술로 바꾸는 편이 안전하고 내용도 약해지지 않습니다.
그래서 페퍼가 제안한 문장으로 바꿨다. 마감 직전에 내 판단을 바로 확인해 주고 대안 문장까지 주는 쪽이 있다는 것이 컸다. 다만 제출 때까지 변하는 수치는 처음부터 넣지 말았어야 했고, 넣을 수치는 미리 기록과 대조해 둘 일이었다.
SAP 컨설턴트가 할 일을 배웠다
이번 대회를 치르며 SAP 컨설턴트가 어떤 일을 해야 하는지 많이 배웠다. 대회 내용은 적을 수 없으니 프로젝트 일반론으로만 적는다. SAP 쪽 예시는 설명을 위해 든 일반적인 예이고, 실제 프로젝트나 고객 사례가 아니다.
프로젝트를 굴리는 법
마감에서 거꾸로 짠다. 컷오버 날짜에서 거꾸로 일정을 짜는 것과 같다.
시나리오를 먼저 돌려 보고 다음 논의를 정한다. Fit-to-Standard(Fit-Gap) 워크숍에서 표준과의 차이를 찾아 다음 설계 논의로 넘기는 흐름이 그렇다.
기록은 한곳에 모은다. 여럿이 동시에 일할수록 기록을 둘 곳을 하나로 정하고 영역별 담당을 분명히 해야 명세가 흩어지지 않는다.
실제 환경을 일찍 붙인다. 사진과 음성이 주소만 담긴 글로 들어온다는 것은 실제 카카오톡에서야 드러났다. 개발기에서 되던 인터페이스가 운영기에서 깨지는 경우를 떠올리면 된다.
자료와 반영의 마감을 나눈다. 중요한 것부터 확보하고, 요건을 언제 동결할지도 미리 정한다. 막판 변경을 회귀 테스트할 시간도 일정에 넣는다.
자체 시험을 UAT로 착각하지 않는다. 내가 만든 채점을 통과했다고 현업이 승인한 것은 아니다.
개발 노트
통과한 시험이 말해 주지 않는 것
자체 시험, 실제 채널, 현업 승인
자체 시험
- 직접 만든 시험으로 실패를 줄였다
- 내가 만든 채점이라 실제 점수가 아니다
실제 채널
- 사진과 음성이 주소만 담긴 글로 들어왔다
- 배포 뒤 저장된 대화가 API에서 거부됐다
현업 승인 (UAT)
- SAP 프로젝트에서는 요구를 낸 현업이 확인한다
- 내 채점 통과는 승인이 아니다
UAT 칸은 SAP Learning 「Explaining the Test Strategy」를 줄인 것이다.
대회로 배울 수 없는 것
실제 프로젝트의 현업에게는 바뀌는 업무를 둘러싼 이해관계가 있을 수 있다. 이런 사람들과 신뢰를 쌓는 일은 현장에서 따로 익혀야 한다.
다음에는
개발 노트
자료 마감과 배포 마감을 나눈다
「다음에는」 목록을 15시 마감 대회에 얹은 시간표
대회 전 · 당일 아침
- 플랫폼 규격을 실측해 둔다
- 자료 수집 종료 시각을 못 박는다
시작할 때 · 첫 30분
- 결제 수단을 확인한다
- 실제 채널로 글, 사진, 음성을 보낸다
- 세션끼리 연락되는지 시험한다
진행 중
- 남은 크레딧을 자주 본다
- 변하는 수치는 제출 글에 넣지 않는다
14:30 배포본 동결
- 이때부터는 자료만 받는다
- 제출 직전 체크리스트: 채널 설정, 수치 대조
14:50 제출
- 마감 10분 전에 낸다
14:30과 14:50은 목록의 '마감 30분 전', '마감 10분 전'을 15시 마감에 맞춘 값이다.
- 자료 수집 종료 시각까지 당일 아침에 못 박는다.
- 첫 30분 안에 실제 채널로 글, 사진, 음성을 모두 보내 본다.
- 대회 전에 플랫폼 규격을 실측해 두는 일은 이번처럼 한다.
- 시작할 때 결제 수단을 확인하고, 남은 크레딧을 자주 본다.
- 세션을 여러 개 쓰면 서로 연락되는지 먼저 시험한다.
- 자료 수집과 배포의 마감을 나눈다. 마감 30분 전부터는 배포본을 얼리고 자료만 받는다.
- 제출 때까지 변하는 수치는 제출 글에 넣지 않고, 넣을 수치는 미리 원기록과 대조한다.
- 제출 직전 체크리스트를 따로 둔다. 채널 설정과 수치 대조를 넣는다.
- 제출은 마감 10분 전에 한다.
이 기록에 대화를 더해 주세요.
궁금한 점, 다른 접근, 직접 해 본 결과를 나눠 주세요.
로그인 상태 확인 중…
댓글을 불러오는 중…