Multi-Agent 23
AI 면접관 시스템 조립하기: 그룹 분할과 핵심 Agent 배치
개별 패턴은 배웠지만 큰 시스템에서 어떤 그룹으로 묶어야 할지 막힌다.
근거 · 교안 p105-p110
1장: AI 면접관, 왜 두 그룹으로 나눌까?
솔라는 태블릿 화면의 한 구석을 손가락으로 꾹 누른 채 미동도 없었다. 화면에는 ‘AI 면접관 시스템 아키텍처’라는 제목 아래, 깔끔하게 정리된 다이어그램이 그려져 있었다. 여러 에이전트(Agent)가 선으로 연결된 복잡한 그림이었지만, 솔라의 시선은 가장 위쪽에 그려진 두 개의 큰 점선 사각형에 고정되어 있었다. 왼쪽 사각형엔 ‘사전준비 Agent 그룹’, 오른쪽엔 ‘면접 Agent 그룹’이라는 이름표가 붙어 있었다.
“흐음…”
나지막한 탄식이 새어 나왔다. 각 그룹 안에 어떤 기능들이 들어가는지는 이해가 됐다. 이력서를 분석하고 질문 전략을 짜는 건 ‘사전준비’에 어울리고, 직접 질문하고 답변을 평가하는 건 ‘면접 진행’에 속하는 게 당연해 보였다. 하지만 그게 다였다. 왜 굳이 이렇게 커다란 두 개의 팀으로 나눠야만 했을까? 그냥 하나의 큰 팀 안에서 순서대로 처리하면 안 되나? 마치 요리 레시피에서 ‘재료 손질’과 ‘조리’ 단계를 굳이 다른 장으로 분리해 놓은 책을 보는 듯한 기분이었다. 어차피 다 한 사람이 할 일인데.
“언니.”
솔라가 거실 반대편에서 조용히 책을 읽고 있던 루나를 불렀다.
“이것 좀 봐봐. AI 면접관 시스템을 ‘사전준비’ 그룹이랑 ‘면접’ 그룹으로 나눴는데, 이 분류가 꼭 필요한 건지 잘 모르겠어. 그냥 기능들을 보기 좋게 묶어놓은 것 아닐까? ‘사전준비’가 끝나면 ‘면접’으로 넘어가는, 그냥 시간 순서대로 나열한 것뿐인 것 같아서.”
루나는 책에서 눈을 떼고 솔라가 내민 태블릿을 잠시 들여다봤다. 루나는 다이어그램의 기술적인 세부 사항 대신, 두 그룹의 이름에 시선을 두었다.
“솔라, AI 면접관은 잠시 잊어보자. 네가 면접관이라면 어떨 것 같아? 지원자가 문을 열고 들어오기 전과 후, 면접관의 일이 어떻게 다르지?”
“면접관이요?”
솔라는 갑작스러운 역할극 제안에 잠시 당황했지만, 이내 눈을 감고 상상하기 시작했다. 머릿속에 딱딱한 의자와 테이블이 놓인 작은 회의실이 그려졌다.
“음… 지원자가 들어오기 전에는, 일단 제출한 이력서를 꼼꼼히 읽어보겠지. 어떤 프로젝트를 했는지, 경력은 어떤지. 그걸 보면서 ‘이 부분은 꼭 물어봐야겠다’거나 ‘우리 팀 기술 스택이랑 잘 맞을까?’ 같은 걸 미리 생각해 둘 거야. 일종의 작전 타임?”
“작전 타임. 좋은 표현이네. 그 작전 타임 동안 정보는 어디서 어디로 흘러가?”
“정보의 흐름?” 루나의 질문에 솔라는 생각에 잠겼다. “이력서라는 날것의 텍스트에서… 면접관인 내 머릿속으로 들어오지. 그리고 내 머릿속에서 ‘질문할 거리 목록’이나 ‘중점적으로 확인할 포인트’ 같은 걸로 재정리될 거야. 일방적인 흐름이네. 이력서가 나한테 말을 걸진 않으니까.”
“그럼 지원자가 들어온 후에는?”
“그때부터는 진짜 대화가 시작되지. 내가 준비한 질문을 던지고, 지원자가 대답하고. 그 대답을 들으면서 궁금한 게 생기면 바로 꼬리 질문을 던질 수도 있고. 지원자가 역으로 나한테 질문할 수도 있고. 이건… 상호작용이네. 정보가 왔다 갔다 하는.”
순간 솔라의 눈이 번쩍 뜨였다. 머릿속을 맴돌던 희미한 안개가 걷히는 느낌이었다. 솔라는 다시 태블릿 화면으로 시선을 돌렸다. 아까와는 전혀 다른 것이 보이기 시작했다.
‘사전준비 Agent 그룹’과 ‘면접 Agent 그룹’. 이것은 단순히 기능을 시간 순서로 묶어놓은 목록이 아니었다.
“아!”
솔라는 무릎을 탁 쳤다.
“알겠다. 두 그룹은 일하는 방식 자체가 다른 거였어. ‘사전준비 그룹’은 면접관이 혼자 이력서를 분석하며 작전을 짜는 것처럼, 주어진 정보를 받아서 면접에 필요한 ‘구조화된 데이터’로 가공하는 일만 해. 정보의 흐름이 한 방향으로만 흘러가는 파이프라인 같은 거야.”
솔라는 손가락으로 ‘사전준비 그룹’에서 ‘면접 그룹’으로 향하는 화살표를 따라갔다.
“그리고 ‘면접 그룹’은 지원자와 면접관이 대화하듯이, 질문하고, 답변을 받고, 평가하고, 그 평가에 따라 다음 행동을 결정하는 일을 해. 질문-답변-평가-결정… 이 과정이 계속 반복되는 동적인 루프(Loop)인 거지. 이건 상호작용이 핵심이야.”
단순한 기능의 나열로 보였던 두 개의 사각형이 이제는 명확한 책임 단위로 보였다. 하나는 ‘일방적인 정보 가공’이라는 책임을, 다른 하나는 ‘쌍방향 상호작용 진행’이라는 책임을 지고 있었다. 성격이 완전히 다른 두 가지 일을 분리해 놓은, 지극히 논리적인 설계였다.
루나는 고개를 끄덕이며 솔라의 깨달음을 지켜보고 있었다.
“이제 그룹을 나눈 이유는 명확해졌어.” 솔라가 자신감 있는 목소리로 말했다. “그런데 말이야… 이 ‘사전준비 그룹’이 하는 일이 여전히 좀 모호해. ‘이력서를 면접용 구조화된 데이터로 변환한다’고만 되어 있거든. 대체 이력서 텍스트 뭉치를 어떻게 해야 ‘면접용 데이터’라는 걸로 바꿀 수 있는 걸까? 이 상자 안에서는 정확히 무슨 일이 벌어지는 거지?”
솔라의 손가락은 ‘사전준비 Agent 그룹’이라는 점선 사각형을 맴돌고 있었다. 큰 그림의 경계선은 이해했지만, 그 첫 번째 상자 안은 여전히 미지의 영역으로 남아 있었다.
2장: 면접 전 준비, 정보 가공 파이프라인 엿보기
솔라는 태블릿 화면의 ‘사전준비 Agent 그룹’이라는 점선 사각형을 확대했다. 전 단계에서 얻은 깨달음으로 이 그룹의 책임이 ‘일방적인 정보 가공’이라는 것은 알았지만, 그 상자 안은 여전히 블랙박스였다. ‘이력서를 면접용 구조화된 데이터로 변환한다’는 한 줄 설명은 너무 막연했다.
솔라는 스타일러스 펜을 들어 점선 사각형 안에 직접 그림을 그려보기 시작했다. 우선 커다란 화살표를 그려 ‘이력서 텍스트’가 들어오는 모습을 표현했다. 그리고 반대편에는 ‘면접용 데이터’가 나가는 화살표를 그렸다. 문제의 블랙박스는 그 사이의 텅 빈 공간이었다. 솔라는 그 안에 ‘이력서 분석 Agent’, ‘질문 전략 Agent’ 같은 이름표를 붙인 동그라미 몇 개를 흩뿌려 놓았다. 하지만 거기까지였다. 이 동그라미들을 어떻게 연결해야 할지 감이 오지 않았다. 모두가 이력서 텍스트를 입력받아서 각자 다른 결과물을 뱉어내는 걸까? 아니면 서로 정보를 주고받는 걸까? 솔라가 그린 선들은 이내 뒤죽박죽 엉켜버렸다.
“이게 아닌데…”
솔라는 펜을 내려놓고 헝클어진 다이어그램을 멍하니 바라봤다. ‘사전준비’라는 책임 단위는 알겠지만, 그 책임이 구체적으로 어떤 과정을 통해 수행되는지는 전혀 다른 문제였다.
가만히 지켜보던 루나가 솔라의 태블릿을 자기 쪽으로 살짝 끌어당겼다. 루나는 솔라가 그려놓은 복잡한 선들을 지우는 대신, 화면 한쪽에 새로운 빈 공간을 만들었다. 그리고는 거기에 짧은 텍스트 상자 하나를 그렸다.
[경력] 2021~2023, ABC 주식회사 백엔드 개발팀
- 실시간 대규모 트래픽 처리 시스템 구축 프로젝트 참여
- Java, Kafka를 활용하여 데이터 파이프라인 설계 및 성능 개선
“자, 이게 지원자의 이력서 일부라고 해보자.” 루나가 말했다. “이 날것의 텍스트가 ‘사전준비 그룹’이라는 공장 안으로 들어온 첫 번째 재료야. 솔라 네가 생각한 ‘이력서 분석 Agent’는 이 재료를 받아서 어떤 일을 먼저 해야 할까?”
“일단… 의미 있는 단어들을 뽑아내야겠죠?” 솔라는 루나가 만든 텍스트 상자를 보며 대답했다. “여기서는 ‘백엔드’, ‘실시간 트래픽 처리’, ‘Java’, ‘Kafka’, ‘데이터 파이프라인’, ‘성능 개선’ 같은 키워드들이 중요해 보여요.”
“좋아. 그럼 이 키워드들을 뽑아낸 뭉치가 다음 단계로 넘어갔다고 상상해봐. 가령 ‘질문 전략 Agent’에게 전달된 거야. 그 에이전트는 이 키워드들을 가지고 뭘 만들 수 있을까?”
“질문을 만들겠죠!” 솔라는 금세 다음 단계를 떠올렸다. “예를 들어, ‘Kafka를 활용한 데이터 파이프라인 성능 개선 경험에 대해 구체적으로 설명해주세요.’ 라거나, ‘대규모 트래픽 처리 시스템을 만들 때 가장 어려웠던 점은 무엇인가요?’ 같은 질문들이요.”
순간 솔라의 머릿속에서 무언가 번쩍했다. 그냥 질문을 마구잡이로 만드는 것이 아니었다. 솔라는 루나가 그린 텍스트 상자 옆에 새로운 상자를 그리고, 방금 자신이 떠올린 질문들을 적어 넣었다.
[생성된 질문 목록]
- 주제: 기술 역량
- Kafka 활용 경험에 대해 설명해주세요.
- 주제: 프로젝트 경험
- 대규모 트래픽 처리 시 겪었던 가장 큰 기술적 난관은 무엇이었나요?
“아! 알겠다!”
솔라는 자신이 방금 정리한 내용을 보고 소리쳤다.
“이건 그냥 기능의 나열이 아니었어. 앞 단계 에이전트가 만들어낸 결과물이 뒷 단계 에이전트의 ‘입력값’이 되는 거였구나! 이력서라는 원본 텍스트가 들어오면, 첫 번째 에이전트가 그걸 분석해서 ‘핵심 키워드 뭉치’를 만들고, 두 번째 에이전트는 그 키워드 뭉치를 받아서 ‘질문 초안’을 만들고, 어쩌면 세 번째 에이전트가 그 질문들을 ‘기술 역량’, ‘프로젝트 경험’ 같은 주제별로 분류해서 최종적인 ‘면접용 구조화된 데이터’를 완성하는 거야.”
흩어져 있던 점들이 하나의 선으로 이어지는 느낌이었다. 솔라는 펜을 들어 방금 자신들이 시뮬레이션한 과정을 그림으로 그리기 시작했다.
이력서 텍스트 → [A1: 키워드 추출] → 키워드 뭉치 → [A2: 질문 생성] → 질문 초안 → [A3: 질문 분류] → 구조화된 질문 목록
엉망진창이었던 다이어그램 대신, 명확한 정보의 흐름을 보여주는 하나의 파이프라인이 그려졌다. 각 에이전트는 독립적으로 존재하는 부품이 아니라, 파이프라인의 특정 단계를 책임지는 전문가였다. 날것의 정보가 각 단계를 거치면서 점점 더 정제되고 가치 있는 정보로 가공되는 모습이 눈앞에 선명하게 펼쳐졌다.
“그래. ‘사전준비 그룹’의 본질은 바로 이 정보 가공 파이프라인이었어.” 솔라가 만족스러운 표정으로 말했다.
이제 ‘사전준비 그룹’은 더 이상 미지의 블랙박스가 아니었다. 어떤 재료가 들어가서 어떤 공정을 거쳐 어떤 제품이 나오는지 명확하게 이해할 수 있었다.
“좋아, 그럼 이렇게 잘 준비된 질문 목록이 파이프라인의 끝에서 나왔어.” 솔라는 자신이 그린 다이어그램의 최종 결과물을 손가락으로 가리켰다. “이게 이제 ‘면접 Agent 그룹’으로 전달되는 거겠지. 그런데… 이쪽은 ‘상호작용이 핵심인 루프’라고 했잖아. 준비된 질문을 순서대로 던지기만 하는 건 아닐 텐데. 답변이 좋으면 더 깊게 파고들고, 답변이 별로면 다른 주제로 넘어가기도 해야 하잖아. 이 복잡한 상호작용의 흐름은 대체 누가, 어떻게 통제하는 걸까?”
솔라의 시선은 아키텍처 다이어그램의 오른쪽, ‘면접 Agent 그룹’으로 옮겨갔다. 하나의 문제가 해결되자, 더 흥미로운 다음 질문이 모습을 드러내고 있었다.
3장: 면접 진행의 동적인 흐름, 상호작용 루프 들여다보기
솔라는 태블릿 화면을 반으로 나누었다. 왼쪽에는 조금 전 완성한 ‘사전준비 그룹’의 흐름도가 가지런히 그려져 있었다. 이력서 텍스트가 들어가서 키워드 뭉치로, 다시 질문 초안으로, 마지막엔 주제별로 분류된 구조화된 질문 목록으로 변환되는 명쾌한 일자형 파이프라인이었다. 보기만 해도 마음이 편안해졌다.
문제는 오른쪽의 텅 빈 공간이었다. 솔라는 이곳에 ‘면접 Agent 그룹’의 작동 방식을 그려보려 했지만, 펜 끝은 허공에서 몇 번이고 길을 잃었다. ‘사전준비 그룹’처럼 선형으로 그려보려니 시작부터 막혔다. ‘질문 생성 Agent’ 다음에 ‘지원자 답변’을 놓고, 그 다음에 ‘답변 평가 Agent’를 놓는 것까지는 괜찮았다. 하지만 그 다음이 문제였다. 답변 평가 결과에 따라 꼬리 질문을 할 수도, 다음 주제로 넘어갈 수도, 심지어 면접을 끝낼 수도 있다. 하나의 화살표로는 도저히 표현할 수 없는 복잡한 갈림길이었다. 솔라는 몇 개의 선을 그어보다가 이내 모두 지워버렸다. 파이프라인의 명쾌함과는 정반대인, 뒤죽박죽 엉킨 실타래만 머릿속에 가득했다.
“언니, 이건 파이프라인이 아닌가 봐.”
솔라가 마침내 펜을 내려놓으며 말했다. 루나는 솔라의 태블릿 화면을 들여다보았다. 깔끔한 왼쪽과 혼란스러운 오른쪽의 대비가 솔라가 겪는 어려움을 고스란히 보여주고 있었다.
“사전준비 그룹은 정보가 한 방향으로 흘러서 명확했는데, 면접 그룹은 아니야. 질문하고, 답하고, 평가하고… 근데 그 평가 결과에 따라 다음에 할 일이 계속 바뀌잖아. 이걸 어떻게 하나의 그림으로 표현해야 할지 모르겠어. 그냥 기능 목록을 늘어놓는 것 말고는 방법이 없는 걸까?”
루나는 솔라의 엉망이 된 스케치 대신, 거실 테이블 위에 놓인 작은 메모지 묶음과 펜을 가져왔다.
“전체 그림을 한 번에 그리려고 하니 복잡한 거야. 딱 한 사이클만 돌려보자. 네가 AI 면접관이고, 내가 지원자야. 자, 면접 시작.”
루나는 장난스럽게 의자에 등을 펴고 앉았다. 갑작스러운 상황극이었지만, 솔라는 금세 몰입했다.
“음… 첫 번째 질문을 해야지.” 솔라는 ‘사전준비 그룹’이 만들었을 법한 질문 목록을 떠올렸다. “가장 자신 있는 프로젝트 경험에 대해 설명해주세요.”
루나는 대답 대신, 솔라의 손에 메모지 한 장과 펜을 쥐여주었다. “좋아. 지금 네가 한 일을 적어봐.”
솔라는 잠시 망설이다 메모지에 ‘질문 생성’이라고 적었다. 루나는 그 메모지를 받아 테이블 중앙에 놓았다.
“자, 내가 이제 대답을 했어.” 루나가 말했다. “‘저는 Kafka를 이용한 데이터 파이프라인 개선 프로젝트를 진행했습니다…’ 라고. 그럼 AI 면접관인 너는 이제 뭘 해야 하지?”
“내 답변을 들어야지. 그리고… 평가해야 해.”
“평가. 좋아.” 루나는 새 메모지를 건넸다. 솔라는 ‘답변 평가’라고 적었고, 루나는 그 메모지를 첫 번째 메모지 오른쪽에 나란히 놓았다.
[질문 생성] → [답변 평가]
“자, 이제 제일 중요한 순간이야.” 루나의 눈빛이 진지해졌다. “평가가 끝났어. 그 다음은?”
“음… 그 평가 결과에 따라 달라지지.” 솔라의 머릿속이 빠르게 돌아가기 시작했다. “만약 내가 대답을 잘했다면, ‘Kafka 말고 다른 메시징 큐도 사용해봤나요?’ 같은 꼬리 질문을 던져서 더 깊게 파고들 수 있어.”
솔라는 스스로 새 메모지를 집어 ‘꼬리 질문 생성’이라고 적었다.
“만약 내가 대답을 잘 못했다면? ‘Kafka가 뭐죠?’ 라고 되물었다면?”
“그럼 더 이상 기술 얘기는 무의미하니까… ‘프로젝트에서 팀원들과의 협업은 어땠나요?’ 처럼 아예 다른 주제의 질문으로 넘어갈 거야.” 솔라는 ‘새 주제 질문 생성’이라고 적은 메모지를 또 하나 만들었다.
루나는 말없이 고개를 끄덕이며 솔라가 메모지를 만드는 것을 지켜봤다. 솔라는 마지막으로 ‘면접 종료’라고 적은 메모지까지 만들었다. 이제 테이블 위에는 ‘답변 평가’ 메모지 다음에 올 수 있는 여러 가능성을 담은 메모지들이 흩어져 있었다.
[질문 생성] → [답변 평가] … [꼬리 질문 생성], [새 주제 질문 생성], [면접 종료]
“봐, 역시 선형이 아니야. 여기서 길이 여러 갈래로 나뉘잖아.” 솔라가 말했다.
“그럼 꼬리 질문을 하기로 결정했다고 해보자. ‘꼬리 질문 생성’ 다음에 오는 건 뭐지?” 루나가 물었다.
“꼬리 질문을… 지원자에게 던지고… 지원자는 또 대답을 하겠지. 그리고 나는 그 답변을 또…”
솔라의 말이 점점 느려졌다. 순간, 솔라의 눈이 동그래졌다. 흩어져 있던 메모지들이 갑자기 자석처럼 서로 끌어당겨지는 것 같았다.
“아…!”
솔라는 ‘꼬리 질문 생성’ 메모지를 집어 들었다. 그리고 그 뒤에 무엇을 놓아야 할지 생각하다가, 이미 테이블 위에 놓인 메모지들을 바라보았다. 꼬리 질문을 던지고, 지원자가 답하고, AI는 그 답을 다시 ‘평가’한다.
솔라는 펜을 들어 ‘답변 평가’ 메모지에서 ‘꼬리 질문 생성’으로 화살표를 그었다. 그리고 ‘꼬리 질문 생성’ 메모지에서 다시 ‘답변 평가’ 메모지로 돌아오는 화살표를 그었다.
[질문 생성] → [답변 평가] ⇆ [꼬리 질문 생성]
하나의 선이 아니었다. 순환하는 고리, 루프(Loop)였다.
“이거였구나. 면접 그룹의 핵심은 파이프라인이 아니라, 이 상호작용 루프였어.”
솔라는 흥분하며 외쳤다. 질문-답변-평가-결정. 이 과정이 하나의 묶음이 되어 계속해서 반복되고 있었다. 평가 결과에 따라 다음 행동(꼬리 질문, 새 주제, 종료)이 결정되고, 그 행동은 다시 새로운 질문과 답변, 그리고 평가로 이어졌다. 시스템은 단순히 정해진 길을 가는 게 아니라, 지원자와의 상호작용 결과를 바탕으로 계속해서 자신의 경로를 수정하며 맴돌고 있었다.
솔라는 태블릿 오른쪽의 텅 빈 공간에 더 이상 직선을 그리려 하지 않았다. 대신 커다란 원형 화살표를 그리고, 그 위에 ‘질문’, ‘답변’, ‘평가’, ‘결정’이라는 단어들을 올려놓았다. 아까의 혼란스럽던 실타래가 명확한 순환 구조로 정리되는 순간이었다.
“이제야 ‘면접 Agent 그룹’의 전체적인 그림이 보여. 준비된 질문을 소모하는 게 아니라, 대화를 통해 계속 새로운 길을 만들어가는 거였어.” 솔라가 만족스러운 표정으로 말했다.
“그런데… 이상하네.”
방금 전의 깨달음에 대한 만족감도 잠시, 솔라의 미간이 다시 좁혀졌다. 그녀의 손가락은 방금 그린 루프 다이어그램의 ‘답변 평가’와 ‘결정’ 부분을 가리키고 있었다.
“‘답변 평가 Agent’가 평가를 ‘상, 중, 하’ 같은 등급으로 내놓는다고 치자. 그런데 이 단순한 등급만 가지고 어떻게 ‘깊이 있는 꼬리 질문을 할지’, ‘아예 다른 주제로 넘어갈지’ 같은 복잡한 결정을 내릴 수 있는 거지? ‘상’이니까 무조건 꼬리 질문, ‘하’니까 무조건 다음 주제? 너무 단순한 것 같은데… 마치 이 평가 결과가 결정의 전부가 아닌 것처럼 느껴져.”
4장: 답변 평가, 단순 기록을 넘어선 흐름 제어
솔라의 스타일러스 펜이 태블릿 화면 위를 부유했다. 이전의 토론을 통해 완성한 ‘면접 Agent 그룹’의 상호작용 루프 다이어그램은 이제 꽤 그럴듯해 보였다. 질문, 답변, 평가, 결정이 꼬리에 꼬리를 물고 순환하는 동적인 구조. 하지만 솔라는 여전히 ‘평가’에서 ‘결정’으로 넘어가는 화살표가 마음에 걸렸다. 너무 가늘고, 너무 단순했다. 마치 복잡한 교차로에 달랑 신호등 하나만 세워둔 것 같았다.
솔라는 펜으로 ‘답변 평가’라고 적힌 동그라미를 지우고, 대신 네모난 상자를 그렸다. 그리고 그 안에 면접관이 할 법한 구체적인 평가 기준을 적어 넣기 시작했다.
[Answer Evaluator Agent]
- 답변을 3개 관점으로 평가
- 관련성: 질문의 의도에 맞는 답변인가?
- 구체성: 경험을 뒷받침할 구체적인 예시가 있는가?
- 논리성: 주장에 대한 근거가 명확하고 일관되는가?
- 각 항목을 상, 중, 하로 판정
상자를 그리고 나니 문제는 더 명확해졌다. 평가 결과는 ‘좋다/나쁘다’는 단 하나의 값이 아니었다. ‘관련성은 높지만(상), 구체성은 떨어지는(하) 답변’처럼 여러 기준의 조합으로 된, 훨씬 풍부한 정보였다. 그런데 이 복잡한 평가 결과를 어떻게 ‘꼬리 질문을 한다’ 또는 ‘다음 주제로 넘어간다’ 같은 단 하나의 결정으로 연결할 수 있을까? 솔라는 ‘평가’ 상자에서 ‘결정’으로 향하는 가느다란 화살표를 보며 미간을 찌푸렸다.
“언니, 이 화살표 하나로는 부족한 것 같아.”
솔라가 마침내 입을 열었다. 그녀의 목소리에는 풀리지 않는 문제에 대한 답답함이 묻어났다.
“평가 결과가 그냥 성적표처럼 기록만 되는 게 아니라면, 이 정보가 다음 행동에 영향을 줘야 하잖아. 그런데 예를 들어서 ‘관련성: 상, 구체성: 하, 논리성: 중’ 이런 평가가 나왔다고 해봐. 이걸 가지고 시스템이 어떻게 다음 행동을 결정하지? ‘하’가 있으니 다음 주제로 넘어가나? 아니면 ‘상’이 있으니 꼬리 질문을 하나? 이 평가 결과를 해석해서 명령을 내려주는 무언가가 더 필요할 것 같아.”
루나는 책상 위를 정리하다 말고 솔라의 태블릿을 들여다보았다. 솔라가 그려 넣은 상세한 평가 상자는 그녀의 고민의 깊이를 보여주고 있었다.
“좋은 지적이야, 솔라. 평가 결과는 단순한 점수가 아니니까. 그럼 네가 그 ‘무언가’가 되어보는 건 어때? 내가 지금부터 평가 결과를 줄 테니, 네가 면접의 다음 단계를 결정해봐.”
루나는 솔라의 다이어그램 옆 빈 공간에 가상의 시나리오를 제시했다.
“첫 번째 시나리오. 지원자가 ‘Kafka를 이용한 데이터 파이프라인 개선 경험’에 대해 답변했어. 그리고 평가 Agent가 이런 결과를 내놓았다고 해보자.”
루나는 손가락으로 허공에 표를 그렸다.
시나리오 A
- 관련성: 상
- 구체성: 상
- 논리성: 상
“음… 이건 완벽한 답변이네.” 솔라는 잠시 생각하더니 자신 있게 말했다. “이럴 땐 이 주제에 대해 얼마나 깊이 알고 있는지 확인해보고 싶을 거야. ‘Kafka의 파티션 전략에 대해 더 자세히 설명해주시겠어요?’ 같은 심화 꼬리 질문을 던져서 한계를 테스트해봐야지.”
“좋아. 다음 시나리오.”
루나가 두 번째 표를 그렸다.
시나리오 B
- 관련성: 상
- 구체성: 하
- 논리성: 중
“관련성은 높지만 구체성이 떨어진다… 이건 ‘제가 데이터 파이프라인 성능을 개선했습니다’라고만 말하고, 어떻게 했는지는 쏙 빼놓은 상황이네.” 솔라는 상황을 구체적으로 상상하며 말을 이었다. “주제는 잘 따라오고 있으니 대화를 끊을 필요는 없어. 대신 ‘성능을 개선했다고 하셨는데, 구체적으로 어떤 지표가 얼마나 향상되었는지 수치로 말씀해주실 수 있나요?’ 처럼 부족한 부분을 직접적으로 파고드는 질문을 해야 해.”
“마지막.”
시나리오 C
- 관련성: 하
- 구체성: 상
- 논리성: 상
“이건 좀 이상한 경우네. 질문이랑 상관없는 얘기를 아주 구체적이고 논리적으로 하고 있는 거잖아.” 솔라는 고개를 갸웃했다. “예를 들어 데이터 파이프라인을 물어봤는데, 자기가 만든 UI 디자인이 얼마나 훌륭한지 열심히 설명하는 경우? 이럴 땐 더 파고들어봤자 의미가 없지. 그냥 ‘네, 잘 알겠습니다. 그럼 다음 질문으로 넘어가겠습니다.’ 하고 준비된 다른 주제의 질문을 던지는 게 맞아.”
순간, 솔라의 손이 멈췄다. 자신이 방금 내린 세 가지 결정들을 되짚어보았다. ‘심화 꼬리 질문’, ‘구체화 꼬리 질문’, ‘새 주제 질문’. 이것들은 모두 다른 종류의 행동이었다. 그리고 그 결정은 단순히 ‘상, 중, 하’라는 개별 등급이 아니라, ‘관련성, 구체성, 논리성’의 조합 패턴에 따라 내려졌다.
“아…!”
깨달음이 파도처럼 밀려왔다. 평가 Agent가 하는 일은 단순히 점수를 매겨 기록하는 것이 아니었다. 다음 단계의 Agent에게 ‘어떤 행동을 해야 할지’ 알려주는 신호를 만드는 것이었다. 평가 결과는 지원자에 대한 최종 판결이 아니라, 시스템의 다음 행동을 유발하는 ‘조건’이었다.
솔라는 흥분하며 스타일러스 펜을 다시 집어 들었다. 그녀는 ‘평가’와 ‘결정’ 사이를 잇던 가느다란 화살표를 과감하게 지웠다. 그리고 그 자리에 굵은 화살표를 그리고 ‘조건부 피드백 연결’이라고 적었다. 평가 결과라는 피드백이 다음 행동을 조건적으로 결정하는 핵심 연결 고리라는 의미였다. 이제 이 굵은 화살표는 더 이상 하나의 목적지로 향하지 않았다. 화살표 끝에서 여러 갈래의 길이 뻗어 나갔다. 한 갈래는 ‘심화 질문 생성’으로, 다른 갈래는 ‘구체화 질문 생성’으로, 또 다른 갈래는 ‘새 주제 질문 생성’으로 이어졌다.
이제 ‘면접 Agent 그룹’의 상호작용 루프는 훨씬 더 지능적으로 보였다. 평가 결과라는 정보의 흐름이 면접의 동적인 진행 방향을 제어하는 모습이 선명하게 그려졌다.
“이제 알겠어. 평가 결과는 단순한 기록이 아니라, 다음 행동을 위한 네비게이션 신호였어.” 솔라가 만족스러운 표정으로 말했다.
“그런데… 잠깐만.”
새로운 깨달음으로 명쾌해진 다이어그램을 보던 솔라의 시선이 한 지점에서 다시 멈췄다. 그녀의 손가락은 방금 그린 ‘조건부 피드백 연결’이라는 굵은 화살표와 그 끝에서 갈라져 나가는 여러 길의 한가운데를 가리키고 있었다.
“평가 Agent는 이런 복합적인 피드백 신호를 만들고, 질문 생성 Agent들은 각자 다른 종류의 질문을 만들 준비를 하고 있어. 그런데 이 둘 사이에서, 이 피드백 신호를 읽고 ‘좋아, 이번엔 심화 질문 생성 Agent, 네 차례야!’ 또는 ‘아니, 이제 새 주제 질문 생성 Agent를 호출해야겠어.’ 라고 교통정리를 해주는 역할은 대체 누가 하는 거지? 이 모든 의사결정을 총괄하는 중앙 관제탑 같은 존재가 있어야 할 것 같은데?”
5장: Router, 면접의 두뇌가 의사결정하는 법
솔라의 스타일러스 펜 끝이 태블릿 화면 위, 한 지점에서 멈춰 섰다. 그녀가 그린 ‘면접 Agent 그룹’의 다이어그램은 이제 꽤 정교해졌다. ‘답변 평가 Agent’가 쏟아내는 풍부한 피드백 신호가 ‘조건부 피드백 연결’이라는 굵은 화살표를 타고 흘러나와, ‘심화 질문’, ‘구체화 질문’, ‘새 주제 질문’이라는 각기 다른 목적지로 향하는 모습이 그려져 있었다.
하지만 솔라의 눈에는 그 복잡한 교차로의 한가운데가 텅 비어 보였다. 마치 뛰어난 연주자들은 모두 제자리에 있지만, 그들에게 언제 연주를 시작하고 멈출지 알려줄 지휘자가 없는 오케스트라 같았다. 솔라는 그 빈 공간에 점선으로 네모 상자를 하나 그렸다. 그리고 그 안에 ‘교통경찰?’이라고 썼다가 지우고, 다시 ‘중앙 관제탑?’이라고 적었다. 이 미지의 존재는 평가 결과를 받아서, 여러 질문 생성 Agent 중 누구에게 일을 시킬지 결정해야 한다. 하지만 그게 전부일까? 솔라는 고개를 갸웃했다. 평가 결과만 보고 기계적으로 다음 행동을 결정하는 거라면, 이전의 고민과 다를 바가 없었다.
“언니, 이 ‘관제탑’ 말이야.” 솔라가 거실 소파에 기대앉으며 입을 열었다. “평가 Agent가 보낸 신호를 읽고 다음 질문 생성 Agent를 호출하는 역할인 건 알겠어. 그런데 이것만으로는 부족한 것 같아. 면접이라는 게 항상 답변 내용에만 좌우되진 않잖아. 예를 들어, 시간이 거의 다 됐거나, 이미 한 주제에 대해 너무 많은 질문을 했다면, 아무리 답변이 좋아도 다음 주제로 넘어가야 하니까.”
루나는 솔라의 태블릿 화면을 보았다. ‘중앙 관제탑?’이라는 물음표 섞인 상자는, 솔라가 시스템의 핵심 의사결정 메커니즘에 거의 다다랐음을 보여주고 있었다. 루나는 말없이 솔라의 태블릿을 받아, ‘관제탑’ 상자 옆에 작은 메모를 추가하기 시작했다.
“이 관제탑이 결정을 내리기 전에 확인해야 할 정보 목록을 만들어보자.” 루나가 제안했다. “방금 네가 말한 평가 결과는 당연히 포함되겠지.”
[관제탑이 보는 정보]
- 답변 평가 결과 (예: 관련성-상, 구체성-하)
“그리고 또 뭐가 있을까?” 루나가 물었다.
“음… ‘지금까지 몇 개의 질문을 했는가’ 같은 정보?” 솔라가 대답했다. “예를 들어, 총 10개의 질문을 하기로 했는데 이제 9번째 질문에 대한 답변이 들어온 거라면, 평가 결과가 아무리 좋아도 꼬리 질문을 계속할 순 없으니까.”
루나는 솔라의 말을 듣고 목록에 한 줄을 추가했다.
[관제탑이 보는 정보]
- 답변 평가 결과 (예: 관련성-상, 구체성-하)
- 현재 질문 라운드 수 (예: 9/10)
“좋아. 또?”
“지금 어떤 주제에 대해 이야기하고 있는지도 중요해.” 솔라의 생각이 점차 명확해졌다. “기술 역량에 대해 5개 질문을 연속으로 했다면, 이제는 인성이나 협업 경험 같은 다른 주제로 넘어갈 때가 됐다는 판단을 내릴 수 있지.”
루나가 목록을 완성했다.
[관제탑이 보는 정보]
- 답변 평가 결과 (예: 관련성-상, 구체성-하)
- 현재 질문 라운드 수 (예: 9/10)
- 현재 면접 섹션 (예: 기술 역량)
솔라는 루나가 정리해준 목록을 뚫어지라 쳐다보았다. 목록의 1번 항목은 방금 전 답변에 대한 ‘피드백’이었지만, 2번과 3번 항목은 면접 과정 전체의 ‘상황’ 정보였다. 이 ‘관제탑’은 단순히 평가 결과를 다음 단계로 전달하는 우체부가 아니었다.
순간, 모든 조각이 제자리를 찾았다.
“아! 알겠다!”
솔라가 외쳤다. 그녀는 자신의 태블릿을 다시 가져와 ‘중앙 관제탑?’이라고 적었던 상자를 지웠다. 그리고 그 자리에 ‘Router Agent’라고 명확하게 적었다. ‘라우터’라는 이름이 왜 붙었는지 이제야 이해할 수 있었다. 길을 안내하는 역할. 하지만 단순히 A에서 B로 안내하는 것이 아니라, 수많은 도로의 교통 상황과 목적지를 종합적으로 고려해 최적의 경로를 결정하는 내비게이션 시스템에 가까웠다.
“Router Agent는 그냥 신호를 전달하는 게 아니었어. 면접의 현재 상태를 전부 보고 다음 행동을 의사결정하는, 말 그대로 시스템의 두뇌였구나!”
솔라는 흥분하며 다이어그램을 수정하기 시작했다. ‘Answer Evaluator Agent’에서 나온 화살표가 Router로 향했다. 그리고 ‘현재 라운드 수’와 ‘현재 섹션’ 같은 정보들이 담긴 ‘시스템 상태’라는 새로운 상자からも 화살표가 Router로 모여들었다. 마지막으로, Router에서 뻗어 나가는 화살표들은 ‘심화 질문 생성 Agent’, ‘새 주제 질문 생성 Agent’뿐만 아니라, ‘종합 보고서 생성 Agent’로도 향했다. 면접을 끝내야 할 시점이라는 판단이 서면, 질문 생성이 아닌 마지막 단계로 흐름을 보낼 수 있는 것이다.
하나의 ‘상태 기반 의사결정 허브’가 완성되는 순간이었다. 이제 ‘면접 Agent 그룹’의 상호작용 루프는 살아있는 유기체처럼 느껴졌다.
“이제 전체 시스템이 어떻게 조립되는지 알 것 같아.”
솔라는 자신이 처음부터 그려온 아키텍처 다이어그램을 처음부터 끝까지 훑어보았다. ‘사전준비 그룹’이라는 정보 가공 파이프라인에서 구조화된 질문 목록이 생성되고, 그 목록을 기반으로 ‘면접 그룹’이라는 상호작용 루프가 돌아가기 시작한다. 루프 안에서는 질문과 답변이 오가고, ‘평가 Agent’가 피드백 신호를 만들면, 시스템의 두뇌인 ‘Router Agent’가 그 신호와 현재 상태를 종합해 다음 행동을 지휘한다. 흩어져 있던 Agent들이 명확한 책임과 정보의 흐름 속에서 완벽하게 협업하는 모습이었다.
루나가 조용히 새로운 과제를 던졌다. “만약 이 면접 시스템에 ‘지원자의 문제 해결 능력’을 검증하는 코딩 테스트 기능을 추가해야 한다면, 이 다이어그램은 어떻게 바뀌어야 할까?”
솔라는 더 이상 망설이지 않았다. 그녀의 펜은 자신감 있게 움직였다.
“우선, ‘면접 Agent 그룹’ 안에 ‘코딩 문제 출제 Agent’와 그 결과를 채점할 ‘코드 평가 Agent’가 새로 필요할 거예요.”
솔라는 루프 안에 새로운 Agent들을 그려 넣었다.
“그리고 가장 중요한 건 Router의 역할 변화예요.” 솔라의 펜이 Router Agent를 동그라미 쳤다. “Router는 이제 ‘기술 역량’ 섹션 진행 중에, 특정 조건이 만족되면(예를 들어, 관련 답변의 평가가 좋으면) ‘코딩 문제 출제 Agent’를 호출하도록 의사결정 규칙이 추가되어야 해요. 그리고 ‘코드 평가 Agent’의 평가 결과를 받아서, 그 결과가 기준 미달이면 면접을 중단시키거나, 통과하면 다시 일반 질문으로 돌아오도록 흐름을 제어해야 하죠.”
솔라의 손끝에서 다이어그램이 새로운 요구사항에 맞춰 유연하게 확장되고 재구성되었다. 더 이상 개별 부품의 기능에 매몰되지 않았다. 그녀는 이제 각 Agent를 어디에 배치하고, 정보의 흐름을 어떻게 연결하며, 핵심 의사결정 지점을 어떻게 설계해야 하는지 알고 있었다. 시스템 전체를 조망하며 조립하고 개선할 수 있는 ‘설계자의 시점’을 갖게 된 것이다.
태블릿 화면에는 솔라가 직접 완성한, 살아 움직이는 AI 면접관 시스템의 청사진이 선명하게 빛나고 있었다.