Multi-Agent 02

단일 Agent: 언제 좋고, 언제 멈춰야 할까?

단일 Agent도 내부에 여러 단계를 넣을 수 있으니 충분하다고 생각하기 쉽다.

근거 · 교안 p8-p10

단일 Agent: 언제 좋고, 언제 멈춰야 할까? 대표 이미지

1장: 내부 단계를 가진 단일 Agent, 정말 충분할까요?

솔라의 손가락이 노트북 키보드 위에서 경쾌하게 춤을 추다 멈췄다. 화면에는 코드 몇 줄과 함께 깔끔하게 정리된 텍스트 상자가 떠 있었다. 만족스러운 미소를 지으며 솔라는 등을 쭉 폈다. 그 순간, 거실에서 책을 읽던 루나가 조용히 다가왔다.

“언니, 이것 좀 봐! 내가 만든 문서 요약 봇인데, 완전 똑똑해.”

솔라는 신나서 화면을 가리켰다. “여기 긴 뉴스 기사를 넣고 실행 버튼만 누르면, 이렇게 핵심만 딱 요약해 준단 말이야.”

화면 속 텍스트 상자에는 방금 솔라가 입력한 장문의 기사가 세 문장으로 압축되어 있었다. 내용도 제법 그럴듯했다.

“이게 그냥 되는 게 아니고,” 솔라가 목소리를 높였다. “내부적으로 내가 여러 단계를 설정해 줬어. ‘먼저 글의 핵심 주제를 파악할 것. 다음으로, 그 주제와 관련된 주요 문장 세 개를 찾을 것. 마지막으로, 찾은 문장들을 자연스럽게 다듬어 보고할 것.’ 이렇게 말이야. 이런 식으로 단계를 정교하게 만들면, 웬만한 복잡한 일도 다 처리할 수 있을 것 같지 않아?”

솔라의 얼굴에는 ‘이것만 있으면 무엇이든 해결할 수 있다’는 자신감이 가득했다. 루나는 잠시 솔라의 화면을 들여다보았다.

“음, 깔끔하게 요약했네. 주어진 기사의 핵심을 잘 뽑아냈어.”

루나는 잠시 생각하더니, 자신의 태블릿을 가져와 두 개의 파일을 나란히 띄웠다.

“그러면 이건 어때?”

루나가 가리킨 화면에는 파일 두 개가 보였다. 하나는 ‘2024년 2분기 소비자 트렌드 분석 보고서’였고, 다른 하나는 ‘경쟁사 A, 신제품 ‘오로라’ 출시 기자 간담회 전문’이었다.

“이 두 문서를 모두 참고해서, ‘다음 분기 우리 회사 마케팅 전략 초안’을 이 봇에게 한번 만들어 달라고 해볼래?”

솔라는 어깨를 으쓱하며 자신만만하게 키보드를 잡았다.

“문제없지! 프롬프트에 ‘여러 문서를 종합적으로 고려해서’라는 단계를 추가하면 될 거야.”

솔라는 재빨리 새로운 지시어를 추가하고, 두 개의 파일을 모두 입력값으로 넣었다. 잠시 후, 결과물이 화면에 나타났다. 하지만 솔라의 표정은 이내 갸우뚱해졌다.

“어라…?”

결과물은 ‘마케팅 전략 초안’이라고 부르기 민망한 수준이었다. 봇은 그저 첫 번째 보고서를 요약한 단락과 두 번째 기자 간담회를 요약한 단락을 순서대로 붙여놓았을 뿐이었다. 두 정보 사이의 어떤 연결점이나 새로운 제안도 찾아볼 수 없었다.

“이상하네… 그냥 각 문서를 따로 요약해서 붙여놓기만 했잖아. ‘전략 제안’은 어디 가고?”

솔라는 프롬프트를 고쳐보기도 하고, 단계의 순서를 바꿔보기도 했지만 결과는 비슷했다. 봇은 두 정보를 비비고 섞을 뿐, 의미 있는 ‘전략’이라는 새로운 결과물을 만들어내지 못했다. 마치 두 개의 다른 언어를 쓰는 사람을 한 방에 넣어두고 대화하라고 하는 것 같았다.

루나가 조용히 입을 열었다.

“처음에 했던 뉴스 기사 요약이랑 지금 하려는 전략 제안, 두 작업의 가장 큰 차이가 뭐라고 생각해?”

솔라는 잠시 모니터의 실패한 결과물과 처음의 성공적인 요약본을 번갈아 보았다. 질문의 의도를 곱씹던 솔라의 눈이 천천히 커졌다.

“아… 알겠다. 첫 번째 과제는… 그냥 하나의 상자 안에 있는 물건들을 보기 좋게 정리하는 거였어. 답이 정해져 있고, 그 안에서 찾기만 하면 됐지. 그런데 두 번째 과제는… 완전히 다른 얘기네.”

솔라는 스스로 답을 찾아냈다는 생각에 목소리에 힘이 실렸다.

“두 개의 다른 상자를 열어서, 각각의 물건들을 비교하고, 어떤 걸 조합해야 할지 스스로 판단한 다음에, 세상에 없던 새로운 물건을 조립하는 거였어. ‘전략’이라는 건 두 문서 어디에도 직접적으로 쓰여있지 않으니까. 내 봇은 그냥 정리 전문가인데, 나는 발명가가 되라고 한 거구나.”

루나는 고개를 작게 끄덕였다.

“바로 그거야. 솔라가 만든 단일 Agent는 첫 번째 종류의 일, 즉 ‘문제의 범위와 복잡도가 명확하게 제한된’ 작업은 아주 훌륭하게 해내. 하나의 똑똑한 존재가 모든 정보를 받고, 모든 판단을 내리는 구조는 그런 명확한 작업에서 가장 효과적이야.”

솔라는 자신의 노트북 화면을 다시 보았다. 실패한 결과물에 대한 실망감 대신, 봇에 대한 새로운 이해가 자리 잡고 있었다.

“그럼 내 봇이 멍청한 게 아니었네. 그냥… 이 녀석에게는 버거운 일을 시켰던 거구나. 딱 맞는 수준의 일이 따로 있었던 거야.”

이제 솔라는 단일 Agent가 모든 문제의 해결사가 아니라, 특정 조건에서 빛을 발하는 ‘제한적 효과 판별기’처럼 느껴졌다. 하지만 그녀의 호기심은 여기서 멈추지 않았다.

“그래도… 궁금한데. 만약 내가 프롬프트를 훨씬 더 정교하게 짜고, 단계도 열 개, 스무 개씩 촘촘하게 넣으면… 언젠가는 두 번째 일도 해낼 수 있지 않을까? 한 명의 천재에게 모든 정보를 주고 완벽한 지시를 내리면, 결국에는 해낼 수 있을 것 같기도 한데.”

2장: 복잡한 문제 앞에서 단일 Agent가 한계에 부딪히는 순간

솔라의 방에는 전날과 다른 종류의 긴장감이 흘렀다. 화면에는 빼곡하게 들어찬 프롬프트 창이 떠 있었다. 거의 소설 한 단락에 가까운 분량이었다. 솔라는 지난번의 실패를 교훈 삼아, 훨씬 더 정교하고 세분화된 지시문을 작성했다. 마치 최고의 전문가에게 업무를 지시하듯, 단계 하나하나를 명확하게 나누고 고려해야 할 사항까지 꼼꼼하게 적었다.

이번에 그녀가 봇에게 던져준 과제는 한층 더 복잡했다. ‘(1) 최근 발표된 시장 동향 보고서 세 개를 읽을 것. (2) 각 보고서에서 공통으로 언급되는 기술 트렌드를 3개 추출할 것. (3) 추출된 트렌드가 우리 회사 주력 제품에 미칠 긍정적/부정적 영향을 각각 분석할 것. (4) 마지막으로, 이 모든 분석을 종합하여 신제품 기획 방향을 위한 세 가지 아이디어를 제안할 것.’

“이번엔 다르겠지.”

솔라는 다짐하듯 중얼거리며 실행 버튼을 눌렀다. 이전처럼 단순히 두 문서를 요약해서 붙여넣는 실수는 하지 않을 터였다. 열 개가 넘는 구체적인 단계를 지시했으니, 봇은 마땅히 그녀가 의도한 대로 분석하고, 종합하고, 창의적인 제안까지 내놓아야 했다.

결과물이 화면에 나타나기 시작했다. 하지만 솔라의 기대감은 순식간에 실망감으로, 이내 당혹감으로 바뀌었다. 결과는 지난번보다 더 엉망이었다. 봇은 첫 번째 보고서에서 언급된 기술 트렌드와 세 번째 보고서의 시장 전망을 뒤섞어 ‘새로운 트렌드’라며 제시했다. 긍정적 영향 분석에는 두 번째 보고서의 내용만 단편적으로 나열했고, 부정적 영향은 아예 언급조차 하지 않았다. 마지막 ‘신제품 아이디어’는 앞선 분석과 아무런 관련이 없는, 인터넷에서 긁어온 듯한 일반적인 문장들의 나열일 뿐이었다.

“대체 왜 이러는 거야!”

솔라는 저도 모르게 소리쳤다. 완벽하다고 생각했던 지시가 오히려 상황을 더 악화시킨 셈이었다. 마치 여러 명의 사람이 각자 자기 할 말만 떠들어대는 시끄러운 회의실 같았다. 그녀의 봇은 그 소음 속에서 길을 잃고 허우적대는 듯 보였다.

그때, 소란을 듣고 들어온 루나가 솔라의 노트북 화면을 조용히 들여다보았다. 화면에 가득 찬 긴 프롬프트와 그 아래의 혼란스러운 결과물을 번갈아 보던 루나가 말했다.

“프롬프트가 아주 상세하네. 거의 한 사람의 하루치 업무 지시서 같아.”

“그렇지? 이렇게까지 자세하게 알려줬는데, 결과는 더 엉망이야. 분석, 종합, 창의적 제안… 각 단계별로 뭘 해야 할지 명확히 짚어줬는데도 완전히 뒤죽박죽으로 만들어 놨어.”

솔라의 목소리에는 짙은 좌절감이 묻어났다. 루나는 의자를 끌어와 솔라의 옆에 앉았다.

“솔라. 혹시 이 봇에게 너무 많은 역할을 한꺼번에 맡긴 건 아닐까?”

“역할? 역할이라니? 그냥 하나의 똑똑한 비서한테 일을 시키는 거잖아.”

솔라는 이해할 수 없다는 듯 반문했다. 루나는 태블릿을 꺼내 빈 화면에 네모 하나를 그렸다. 그리고 그 네모 안에 솔라가 프롬프터에 적었던 작업들을 하나씩 적어 넣기 시작했다.

[정보 수집가, 분석가, 비평가, 아이디어 기획자]

“솔라가 시킨 일을 봐. 보고서를 읽고 핵심을 뽑는 건 ‘정보 수집가’의 일이야. 그걸 바탕으로 긍정적/부정적 영향을 따지는 건 ‘분석가’나 ‘비평가’의 역할이지. 그리고 마지막으로 신제품 아이디어를 내는 건 ‘아이디어 기획자’의 몫이고. 넌 지금 이 모든 역할을 하나의 네모, 즉 단일 Agent에게 전부 맡긴 거야.”

솔라는 태블릿 화면을 뚫어지라 쳐다봤다. ‘정보 수집가’, ‘분석가’, ‘기획자’… 단어로 분리해 놓고 보니, 전혀 다른 종류의 전문성이 필요한 일들이었다.

“하지만… 똑똑한 한 명이라면 이 모든 걸 다 할 수 있는 거 아니야? 천재적인 전략가는 혼자서 시장 조사도 하고, 분석도 하고, 기획도 하잖아.”

솔라의 마지막 저항이었다. 그녀는 여전히 ‘하나의 완벽한 지능’에 대한 기대를 버리지 못하고 있었다.

루나는 고개를 저었다.

“사람도 마찬가지야. 한 사람이 여러 역할을 할 수는 있지만, 동시에 하라고 하면 혼란에 빠져. 보고서를 읽으며 비판적인 분석을 하다가, 동시에 자유롭게 아이디어를 떠올리기는 아주 어려워. 각 역할은 서로 다른 종류의 집중력을 요구하니까. 지금 봇이 보여준 혼란스러운 결과물은 성능이 부족해서가 아니야.”

루나는 손가락으로 네모 상자를 톡톡 두드렸다.

“이 하나의 네모 안에 너무 많은 책임이 집중되어서 그래. Agent가 지금 자신이 ‘정보 수집가’인지, ‘분석가’인지, 아니면 ‘기획자’인지 헷갈리기 시작한 거야. 그러니 첫 번째 보고서의 분석 결과와 세 번째 보고서의 아이디어를 마구 섞어버리는 거지. 각 역할에 맞는 자기만의 작업 공간이나 기억 장치도 없이, 모든 정보와 임무가 한 머릿속에서 뒤엉키고 있는 셈이야.”

‘책임의 집중’.

그 단어가 솔라의 머릿속을 강타했다. 그녀는 실패한 결과물을 다시 보았다. 전에는 그저 ‘오류’나 ‘버그’로 보였던 것들이 이제는 다르게 읽혔다. 이것은 봇이 겪고 있는 ‘정체성 혼란’의 증거였다. 분석가로서의 책임과 기획자로서의 책임이 충돌하면서 내놓은 처참한 결과물이었던 것이다. 문제가 복잡해질수록, 단일 Agent라는 구조 자체가 모든 판단을 하나의 LLM에 몰아넣으며 스스로 과부하에 걸리는 구조라는 것을 깨달았다.

“아… 그럼 내가 프롬프트를 아무리 정교하게 짜도 소용없었던 이유가… 지시의 문제가 아니라, 이 모든 책임을 한 녀석에게 몰아준 구조 자체가 문제였던 거구나.”

솔라는 이제 문제의 원인을 다른 각도에서 볼 수 있게 되었다. 단일 Agent의 실패를 볼 때마다, ‘여기에 너무 많은 책임이 집중된 건 아닐까?’라고 질문하는 일종의 ‘책임 집중 알림’이 그녀의 머릿속에 울리는 듯했다.

하지만 새로운 의문이 곧바로 고개를 들었다.

“하나의 Agent에게 책임이 너무 집중된다는 건 알겠어. 그래서 혼란스러워한다는 것도. 그런데 구체적으로 어떤 문제들이 생기는 거지? ‘혼란스럽다’는 것 말고, 우리가 예측할 수 있는 더 명확한 한계점 같은 게 있을까?”

3장: 단일 Agent의 4가지 결정적 한계: 컨텍스트, 역할, 오류, 확장성

다음 날 아침, 솔라의 책상 위는 어젯밤의 흔적이 고스란히 남아있었다. 노트북 화면에는 실패한 결과물을 분석하려는 듯, 여러 개의 메모 창이 어지럽게 떠 있었다. 솔라는 엉망이 된 결과물들의 공통점을 찾으려 애썼다.

문제 목록:

  • 현상 1: 관련 없는 보고서 내용을 뒤섞음.
  • 현상 2: 긍정적/부정적 영향을 분석하라는 지시를 일부만 수행함.
  • 현상 3: 최종 아이디어가 앞선 분석과 전혀 연결되지 않음.

하지만 이 세 가지 현상은 서로 다른 원인에서 비롯된 것처럼 보였다. 하나는 정보 처리의 오류 같았고, 다른 하나는 지시를 따르지 않는 문제, 마지막은 창의력 부족 문제처럼 느껴졌다. 솔라는 한숨을 쉬며 의자 등받이에 몸을 기댔다. ‘책임 집중’이라는 원인을 알게 되었지만, 그것이 어떻게 이토록 다양한 실패를 만들어내는지 명쾌하게 설명되지 않았다.

조용히 다가와 솔라의 메모를 들여다보던 루나가 입을 열었다.

“서로 다른 병처럼 보이지만, 사실은 모두 같은 병의 증상들이라면 어떨까?”

루나는 자신의 태블릿을 가져와 빈 그림판을 열었다. 그녀는 복잡한 그림 대신, 아주 단순한 상황을 그리기 시작했다. 허름하고 비좁은 주방, 그리고 그 안에서 혼자 분투하는 요리사 한 명.

“자, 여기 한 명의 천재 요리사가 있다고 상상해 봐. 이 요리사는 애피타이저, 수프, 메인 요리, 디저트까지 혼자서 4코스 요리를 만들어야 해. 문제는, 주방이 너무 작고 조리대도 하나뿐이라는 거야.”

루나는 솔라가 나열한 문제 현상들을 이 요리사의 상황에 빗대어 설명하기 시작했다.

“첫째, 컨텍스트 과부하. 요리사는 메인 요리에 쓸 고기를 손질하다가 디저트에 쓸 딸기를 어디 뒀는지 잊어버려. 좁은 조리대 위에 네 가지 코스의 모든 재료가 뒤섞여 있으니, 지금 당장 필요한 걸 찾지 못하고 엉뚱한 허브를 집어 들기도 하지. 이게 바로 네 봇이 관련 없는 보고서 내용을 뒤섞은 이유야. 한정된 작업 공간(컨텍스트) 안에 너무 많은 정보와 과제가 한꺼번에 올라오니 과부하가 걸린 거야.”

솔라의 눈이 커졌다. 봇의 정보 혼란이 단순히 성능 문제가 아니라, 작업 공간의 문제였다는 발상이었다.

“둘째, 역할 혼합. 이 요리사는 재료를 다듬는 ‘전처리 담당’, 불을 조절하는 ‘조리 담당’, 맛을 보는 ‘테이스팅 담당’, 마지막으로 접시에 예쁘게 담는 ‘플레이팅 담당’의 역할을 동시에 해야 해. 수프 간을 보다가(테이스팅) 급하게 메인 요리 스테이크를 뒤집고(조리), 동시에 애피타이저의 장식을 고민(플레이팅)하지. 결국 어떻게 될까? 수프에 디저트용 초콜릿 가루를 뿌리는 실수를 저지르게 돼. 네 봇이 분석과 제안을 뒤섞은 것처럼 말이야. 분석가와 기획자의 역할을 한 머릿속에서 동시에 수행하려니 정체성 혼란이 온 거지.”

솔라는 어제 루나가 그려줬던 [정보 수집가, 분석가, 기획자] 네모 상자를 떠올렸다. 이제 그 네모 안에서 벌어지는 혼란이 눈에 보이는 듯했다.

“셋째, 오류 전파와 디버깅의 어려움. 만약 요리사가 애피타이저를 만들 때 설탕 대신 소금을 넣는 실수를 했다고 치자. 너무 바빠서 그걸 알아채지 못하고, 다음 수프를 만들 때 ‘음, 전체적으로 좀 짜네? 수프는 좀 달게 만들어야겠다’라고 잘못된 판단을 내리게 돼. 하나의 작은 실수가 뒤따르는 모든 과정을 망가뜨리는 거야. 이걸 ‘오류 전파’라고 해. 더 심각한 건, 나중에 음식이 전부 맛이 없다는 걸 알아도, 수많은 과정 중 정확히 어디서부터 잘못됐는지 찾아내기가 거의 불가능하다는 점이지.”

마지막으로 루나는 네 번째 그림을 그렸다. 주방 문밖에서 주인이 외치는 모습이었다. “손님이 추가됐어! 5번째 코스, 샐러드도 추가해 줘!”

“넷째, 확장성과 재사용성의 한계. 이 요리사는 이미 자기만의 방식으로 네 가지 코스를 동시에 만드는 최적의 동선을 짜놨어. 여기에 갑자기 샐러드를 추가하려면? 모든 동선을 처음부터 다시 생각해야 해. 주방 전체가 마비될 수도 있지. 또, 이 요리사의 기가 막힌 수프 레시피만 따로 떼어서 다른 식당에 전수해 주기도 어려워. 그 레시피는 메인 요리를 굽는 시간, 디저트를 식히는 타이밍과 복잡하게 얽혀 있으니까. 이게 바로 확장성과 재사용성의 문제야. 단일 Agent는 새로운 기능을 추가하거나 기존 기능의 일부만 떼어내 쓰기가 매우 어려워.”

설명을 마친 루나가 태블릿 화면을 솔라에게 보여주었다. 화면에는 네 가지 한계점이 요약되어 있었다.

단일 Agent의 4가지 결정적 한계점

  1. 컨텍스트 과부하: 한정된 작업 기억에 너무 많은 정보가 쌓여 혼란 발생
  2. 역할 혼합: 서로 다른 책임(분석, 기획 등)이 충돌하며 판단력 저하
  3. 오류 전파: 작은 실수 하나가 연쇄적으로 전체 결과를 망가뜨림
  4. 확장성/재사용성 부족: 기능 추가나 변경이 어렵고, 특정 로직만 재사용 불가

솔라는 더 이상 자신의 봇이 겪었던 문제들을 개별적인 현상으로 보지 않았다. 그것들은 모두 ‘과도한 책임 집중’이라는 하나의 질병이 일으킨 네 가지 명백한 증상이었다. 이제 그녀에게는 새로운 프로젝트를 볼 때마다 이 네 가지를 점검하는 ‘한계점 진단 프레임워크’가 생긴 셈이었다.

그때, 솔라의 노트북에서 ‘띵-’ 하는 알림음이 울렸다. 학교 코딩 동아리 친구에게서 온 메시지였다.

“솔라! 우리 동아리 프로젝트로 ‘개인 맞춤형 AI 여행 플래너’ 만드는 거 어때? 사용자 취향 입력하면 항공권, 숙소, 맛집까지 싹 다 추천해서 완벽한 여행 계획 짜주는 봇! 단일 Agent로 멋지게 한번 만들어 보자!”

솔라는 무심코 키보드에 손을 얹었다. ‘좋아! 프롬프트 기가 막히게 짜서 한번 만들어보자!’라고 답장을 치려던 순간, 그녀의 손가락이 허공에서 멈췄다.

방금 루나와 이야기했던 ‘한계점 진단 프레임워크’가 머릿속에서 경고등처럼 켜졌다.

‘잠깐만… 개인 맞춤형 여행 플래너?’

솔라는 키보드에서 손을 떼고, 노트북 옆에 있던 깨끗한 노트를 펼쳤다. 그리고 답장 대신, 그 위에 네 개의 질문을 적기 시작했다.

  1. 컨텍스트: 사용자의 취향, 항공권 정보, 숙소 현황, 맛집 리스트… 이 모든 걸 하나의 Agent가 기억할 수 있을까? 과부하 위험!
  2. 역할: 최저가 항공권을 찾는 ‘검색꾼’, 감성 숙소를 추천하는 ‘큐레이터’, 동선을 짜는 ‘플래너’… 이 역할들이 섞이면? 혼합 위험!
  3. 오류: 항공권 예약 시간 하나를 잘못 계산하면 전체 일정이 엉망이 되겠네. 전파 위험!
  4. 확장성: 나중에 ‘액티비티 추천’ 기능을 추가하려면? 처음부터 다시? 확장성 위험!

네 가지 질문에 대한 답은 모두 붉은 신호등을 가리키고 있었다. 솔라는 고개를 가로저었다. ‘단일 Agent로 멋지게’가 아니라, ‘단일 Agent로는 재앙이 될’ 프로젝트였다.

솔라는 노트의 빈 페이지에 새로운 그림을 그리기 시작했다. 이번에는 비좁은 주방의 외로운 요리사가 아니었다. 각자의 조리대를 가진 ‘항공권 담당’, ‘숙소 담당’, ‘맛집 담당’ 요리사들이 그려진, 잘 조직된 여러 개의 주방 그림이었다. 그리고 그들 사이를 오가며 주문을 전달하고 조율하는 ‘총괄 매니저’가 있었다.

솔라는 친구에게 답장을 보냈다.

“좋은 아이디어야! 근데… 단일 Agent 하나로 만들기보다, 각자 다른 역할을 하는 여러 Agent들을 만들어서 협력하게 하는 건 어때? 내가 방금 구조도 그려봤는데…”

노트 위에 그려진 명확한 역할 분담 다이어그램을 보며, 솔라는 비로소 자신이 단일 Agent의 한계를 넘어설 준비가 되었음을 직감했다.