brunch

You can make anything
by writing

C.S.Lewis

by 김영욱 Oct 29. 2024

10분만에 AI 에이전트(agent) 이해하기

이 글을 읽기 전에 이전 글 <10분 만에 RAG 이해하기>를 먼저 읽고 오시면 이해에 큰 도움이 됩니다.


0. 에이전트 정의...

요즘 기술업계에서 가장 핫한 단어는 아마도 AI 에이전트일 겁니다. 뭔가 자꾸 복잡해지는 느낌입니다. LLM, 쿼리, 프롬프트, RAG, 랭체인, 추론(Reasoning)과 같은 2-3년 전까지만 해도 이게 말이야 당나귀야 하던 단어가 우리 생활에 들어오더니 기술의 속도가 이젠 걷잡을 수 없이 하루가 다르게 달려 나가고 있습니다. 전설적인 미래학자 토플러는 세상이 우리가 준비한 속도보다 더 빠르게 변화할 때 미래 충격이 시작된다고 설명합니다. 이럴 때 우리는 대응하기보다는 반응하고, 너무 많은 새로운 것에 직면하면 종종 문을 닫습니다.

2024년에 들어오더니 AI 에이전트가 여기저기에서 들립니다. 지금까지 세상에서 들었던 에이전트는 영화에서나 나오는 FBI/CIA 에이전트 정도가 다였는데 말입니다. 그렇다고 미리 쫄 필요는 없겠지요. 지금부터 여러분이 저 김 PM과 딱 10분간만 함께 하시면 10분 후에는 AI 에이전트에 대해 잘 이해하실 수 있습니다.


많은 분들이 아시는 것처럼 저는 프랑스 파리에 삽니다. 세상의 어떤 도시보다도 관광객이 많이 오는 도시죠. 여행객들을 나이에 따라 보면 요즘 세대는 여행을 즐기는 패턴도 다양하고 독립적인 경향이 강합니다. 좀 나이가 드신 분들은 이런 여행보다는 여행사가 준비한 패키지여행을 많이 하시죠. 패키지여행을 하면 마음은 편할 수 있습니다. 내가 하지 않아도 되는 숙소 예약, 식당 선택, 목적지로의 이동등이 모두 알아서 진행되거든요. 이렇게 할 수 있는 것은 우리가 원하는 관광을 여행사에 다 알아서 해 주기 때문입니다. 왜 뜬금없이 여행사 이야기냐고요? 여행사를 영어로 뭐라고 하죠? 맞습니다. 바로 Travel Agency라고 합니다. 바로 그 에이전트들이 모여서 활동하는 곳이 에이전시가 되겠죠. 즉 에이전트란 우리가 원하는 여러 가지 일을 대행하여 처리해 주는 사람이나 기구 혹은 시스템을 말합니다.

그림 1. 여행사는 에이전트로서 우리가 여행에 필요한 여러가지 일을 대행합니다.

그럼 AI 에이전트란 무엇일까요? 또 무슨 일을 어떻게 할까요? 이에 대한 설명을 시작하려면 생성형 AI 분야에서 일어나고 있는 중요한 요구와 그에 따른 변화를 살펴봐야 합니다.



1. 리퀘스트의 진화

가장 중요한 변화는 모놀리틱(monolithic) 모델에서 복합(Compound) AI 시스템으로의 진화입니다.


ChatGPT가 처음 세상에 등장했을 때는 이거 하나면 다 될 줄 알았습니다. 그런데 며칠 지나면서 바로 알게 되었죠. 모놀리틱 모델의 지식은 학습된 데이터에 뿐만 아니라, 언제 그 데이터를 학습했냐는 시기에 제한된다는 사실이죠. 이것은 결국 이 모델이 세상에 대해 무엇을 알고 있는지, 어떤 종류의 작업을 해결할 수 있는지에 제한을 가진다는 뜻입니다. 시스템 디자인 상 모델이 뭉뚱그려진 한 덩어리다 보니 새로운 분야나 새로운 지식으로 업데이트하기도 어렵고 비용도 비싸게 들겠죠.

그림 2. 모놀리틱 모델에서 모듈화된 컴파운드 AI 시스템의로의 진화는 당연합니다.

여기까지 위에서 안내해 드린 <10분 만에 RAG 이해하기>를 읽으신 분은 쉽게 이해하셨을 겁니다. 맞습니다. 그래서 RAG라는 것이 나온 이유이기도 하지요.

오늘은 다른 예를 들어서 설명을 해 보겠습니다.

저는 이번 할로윈을 맞아 10월 30일부터 런던의 해리포터 스튜디오를 다녀올 예정입니다. 그래서 4일 정도의 휴가를 다녀올 수 있는지, 그리고 (비가 자주 오는 런던을 생각하여) 그 기간에 우산을 준비하는 것이 좋은지, 혹시 햇빛이 난다면 선블록을 얼마나 준비해야 하는지 질문하려고 합니다.


2. 모놀리틱 모델과 컴파운드 시스템

첫 번째 모놀리틱 덩어리 모델은 당연히 이 질문에 대답을 내놓을 수 없습니다. 제가 누구인지 안다고 해도 제 휴가 일수는 회사 시스템에만 있을 뿐 그것이 LLM이 학습할 대상으로서의 데이터는 아니겠지요. 그런 프라이버시 데이터는 공개 대상이 되지 않기에 학습을 한 적이 없기 때문입니다. 정보에 액세스 할 수 없기 때문에 이 답변이 부정확할 것이라는 것은 누구나 예상할 수 있습니다. (아래 그림의 왼쪽) 모놀리틱 LLM 모델은 이미 여러분이 ChatGPT나 Claude를 사용해 보셨듯, 문서를 요약하는 데 도움이 되고, 이메일이나 다양한 보고서의 초안을 작성하는 데 유용합니다.

따라 이 문제를 해결하기 위한 시스템을 설계하려면 LLM 모델에 휴가 정보가 저장된 HR 시스템에 대한 액세스 권한을 부여해야 합니다. 그런 후에 동일한 요청 쿼리(프롬프트)가 LLM에 입력이 되면 다음 그림의 오른쪽과 같이 동작을 합니다.

그림 3. 모놀리틱 모델과 컴파운드 시스템의 콘트롤 로직

이제 차이점은 모델이 직접 생성을 하는 것이 아닌 검색 쿼리를 생성하고, 그 검색 쿼리는 제 휴가 정보가 저장된 HR 시스템에 접근할 수 있는 것입니다. 그 후에 데이터베이스에서 "15일의 휴가 일수 보유"라는 정보를 가져오면 다시 모델에 들어가서 “김영욱 님은 현재 오늘 날짜 기준 15일의 휴가 일수가 있습니다”라고 대답할 수 있는 문장을 생성할 수 있습니다. 이렇게 컴파운드 AI 시스템 설계의 원칙을 적용하면 특정 문제를 더 잘 해결할 수 있다는 것을 알 수 있습니다.


“시스템"이라는 용어를 좀 이해해 볼까요? 시스템이란 말은 여러 구성 요소가 있다는 것을 의미합니다. 따라서 시스템은 본질적으로 모듈화 되어 있죠. 그 안에는 대규모 언어 모델, 이미지 생성형 모델뿐만 아니라 그 주위에 올 수 있는 여러 시스템 구성 요소도 있습니다. 다른 도구와 결합할 수도 있습니다. 따라서 문제 해결 방법에 있어서 시스템 접근 방식은 원하는 작업을 세분화하고 이를 해결할 수 있는 적절한 구성 요소를 선택할 수 있습니다. 문제에 따라 레고처럼 조합해서 해결하는 방법입니다. 그리고 이것은 문제를 본질적으로 모놀리틱 모델을 튜닝하여 해결하는 것보다 더 쉽고 확장성 있게 해결할 수 있는 방법입니다.


가장 인기 있고 일반적으로 사용되는 컴파운드 AI 시스템 중 하나가 바로 검색 증강 생성(RAG)이 됩니다.



3. 제어 로직 (Control Logic)

위의 그림 3과 같이 처음 쿼리를 받아 답을 낼 때까지의 화살표 방향에 해당하는 경로(path)를 제어 로직(control logic)이라고 합니다. 제어 로직에는 두 가지가 있습니다. 여러분들 모두 이미 아시는 것들이에요.

그림 4. 콘트롤 로직의 차이

왼쪽의 제어로직은 지금까지 AI 기반이 아닌 인간이 작성했던 상황이나 이벤트가 생겼을 때 어떻게 처리하라는 rule-based의 프로그램을 모두 포함합니다. 이 로직의 장점은 프로그램을 수행하면 주저함 없이 실행됩니다. 시스템에 빠르게 생각하고, 프로그래밍된 대로 행동하고, 내가 준 지침에서 벗어나지 말라고 말하는 것입니다. 이벤트를 만나면 하란대로 하고, 모르면 예외로 처리해 버리면 그만입니다. 그래서 ThinkFAST 방식이라고도 합니다.


컴파운드 AI 시스템의 로직을 제어하는 또 다른 방법은 오른쪽과 같이 대규모 언어 모델이 담당하는 것입니다. 이것은 대규모 언어 모델의 추론 능력이 엄청나게 향상되었기 때문에 가능한 일입니다. 이제 오늘의 주인공 AI 에이전트는 어디에 들어올까요?  대규모 언어 모델에 복잡한 문제를 입력(쿼리, 프롬프트)하면 이를 세분화하여 해결 방법을 제시하도록 유도할 수 있습니다. 즉 천천히 생각하도록(ThinkSLOW) 시스템을 디자인하는 것입니다. 계획을 세우고, 계획의 각 부분을 실행하고, 어디에서 동작을 하지 않는지 확인하고, 계획을 다시 조정해야 하는지 반복 확인합니다. 예를 들어 복잡한 질문을 던졌을 때 머릿속에 떠오르는 첫 번째 대답만 하면 답이 틀릴 가능성이 높지만, 문제를 세분화하고 문제의 어떤 부분을 해결하기 위해 외부의 도움이 필요한지 파악한 다음 시간을 들여 문제를 해결하면 정답 확률이 더 높아질 수 있는 이치와 같습니다.

여기까지 전혀 어렵지 않으시죠? 거의 다 왔습니다.



4. AI 에이전트의 구성요소

이제 AI 에이전트의 구성 요소를 세분화해 보겠습니다.

첫 번째 기능은 추론(Reasoning) 능력입니다.

이것은 LLM 모델을 문제 해결의 핵심에 두는 것입니다. AI 에이전트는 모델에게 계획을 세우고 그 과정에서 프로세스의 각 단계에 대해 추론하라는 메시지를 줍니다.

두번째는 에이전트의 행동(Act) 능력입니다.

이것은 외부 프로그램을 통해 이루어집니다. 프로그램의 외부 요소를 툴이라고 하며, 모델은 주어진 질문에 대한 솔루션을 가장 잘 실행하기 위해 언제 툴을 호출하고 어떻게 호출할지 정의할 수 있습니다. 도구의 예로는 웹/데이터베이스 검색, 계산, 코드, API 등 기본적으로 모델에 액세스 권한을 부여하려는 모든 외부 프로그램이 될 수 있습니다.

세 번째는 메모리에 액세스(Access Memory) 하는 능력입니다. 여기서 '메모리'라는 용어는 LLM이 갖고 있는 내부 로그라고 이해하시면 됩니다. 이런 커뮤니케이션 기록을 통해 훨씬 더 개인화된 경험을 제공할 수 있습니다.

그림 5. AI 에이전트의 구성요소

에이전트를 구성하는 방식에 대해 이야기해 볼까요?

가장 많이 사용되는 방식 중 하나는 이름에서 알 수 있듯이 LLM 에이전트의 추론에서 앞의 두 글자 'Re'와 행동 능력 'Act'를 결합한 ReAct라는 것을 사용하는 것입니다. 이젠 AI 에이전트를 구성하는 ReAct 방식과 메타에서 만든 프론트엔드용  자바스크립프 라이브러리와 헷갈리시지 않죠? 좀 더 구체적으로 설명해 보겠습니다.


ReAct 에이전트를 구성하면 어떻게 동작하는지 아래 그림 6을 한번 볼까요?

모델에 입력되는 사용자 쿼리가 있죠. 일단 가장 먼저 떠오르는 답변을 제공하지 말라는 지침이 주어집니다. 요구를 쪼개고 나누고 해서 천천히 작업을 계획 (Reasoning)합니다. 그러고 난 후 그것에 맞는 외부 도구로 행동(Act) 합니다. 잘못된 답을 받거나 오류가 발생했을 수도 있습니다. 이를 관찰(Observe)할 수 있습니다. 그 결과를 통해 질문에 대한 답이 맞는지, 아니면 계획을 반복해서 다른 방식으로 해결해야 하는지 결정합니다. 최종 답을 얻을 때까지요.


자 이젠 제 처음 질문으로 돌아가 볼까요?

저는 이번 할로윈을 맞아 10월 30일부터 런던의 해리포터 스튜디오를 다녀올 예정입니다. 그래서 4일 정도의 휴가를 다녀올 수 있는지, 그리고 (비가 자주 오는 런던을 생각하여) 그 기간에 우산을 준비하는 것이 좋은지, 혹시 햇빛이 난다면 선블록을 얼마나 준비해야 하는지 질문하려고 합니다.

이것은 사실 매우 복잡한 문제입니다. 계획해야 할 것이 많습니다.

제일 먼저 해야 할 일은 남은 휴가 일수가 얼마나 될는지 사내의 HR 시스템에서 가져올 수도 있지만, 메모리에서 검색할 수 있는 정보일 수도 있습니다. 전에도 이 질문을 했으니까요.


두 번째는 런던의 날씨 정보를 확인해야 합니다. 런던의 이번 주 일기 예보를 살펴보고 예상되는 평균 일조 시간이 얼마인지 알아볼 수 있을 것입니다. 세 번째는 공중 보건 웹사이트를 방문하여 햇볕에 노출되는 시간당 자외선 차단제의 권장량을 알아보는 것입니다. 그리고 머무는 4일간의 계산을 통해 얼마나 많은 양의 자외선 차단제를 가져가야 하는지 확인해야 합니다.

그런데 사실 이것뿐이 아니죠. 해리포터 스튜디오까지는 어떻게 가는지, 지금 현재 티켓팅은 가능한지, 몇 시에 출발할 수 있는지 이런 여러 가지 꼬리에 꼬리를 무는 질문이 가능할 겁니다. 공식 웹사이트와 여러가지 교통 노선도를 알아보기도 해야 할 테구요.


꽤 복잡하죠. 하지만 이런 컴파운드 시스템의 강력한 점은 문제를 해결하기 위해 모듈화 되어 있기에 탐색할 수 있는 경로가 무한대로 확장 가능하다는 것입니다. 그래서 훨씬 더 복잡한 문제도 해결할 수 있을 겁니다.



5. 마무리

이렇게 컴파운드 AI 시스템은 앞으로도 계속 발전함과 동시에 더 똑똑한 에이전트 기술의 밑거름이 될 것입니다. 하지만 이런 컴파운드 AI 시스템이 자율성은 좋을지언정 항상 효율적인 것은 아닙니다. 인간이 지금까지 만들어온 프로그램화된 룰 기반의 방식이 잘 정의된 문제해결 방법에선 훨씬 효율적일 것입니다.

생산성 효율이 가장 높은 지표가 되는 제조 공정에서는 프로그래밍 방식을 사용하는 것이 훨씬 효율적입니다. 여기에 컴파운드 AI 시스템을 적용하면 불필요한 반복이 발생할 수 있겠지요.

그에 반해 소스코드 문제를 독립적으로 해결하고, 세계 각국의 다양한 고객 요청을 처리하는 복잡한 작업을 수행해야 하는 경우라면 시스템에서 모든 경로를 일일이 구성하기엔 너무 많은 노력이 필요하기 때문에 이 부분에서는 AI 에이전트 접근 방식이 도움이 될 수 있습니다.


아직은 AI 에이전트의 초기 단계입니다. 정확한 문제 정의를 시작으로 워크프로세스 시스템 모듈 구성 디자인을 잘 결합한 조직이 좋은 결과를 얻는 것은 당연하겠죠? 이 글이 여러분에게 도움이 되었기를 바랍니다.


늘 새로운 지식과 기술에 시간과 열정을 쏟는 여러분들을 응원합니다!

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari