활동 목표: LG Aimers 강의 3차 정리
활동 결과:
1. 개요
이번 활동에서는 LLM Agent에 대한 내용을 다룰 것이다.
Agent 기능을 여러 ide(VS Code, Intellij, Cursor, Antigravity..) 에서 사용해본 사람들은 많이 있을 것이다.
자동으로 필요한 로컬 파일을 생성하고, 라이브러리를 설치하는 등의 작업을 LLM이 직접 해 주는 기능으로 알고 있는 사람들이 많은데, 이번 글을 통해 더욱 자세한 정의와 이런 것들을 어떻게 해내는지 등을 쓰도록 하겠다.
2. LLM Agent
우선 LLM Agent의 정의이다.
text를 통해 환경과 상호작용하는 Augmented LLM, plan 단계와 tool을 호출하는 단계를 진행할 수 있다.
Augmented LLM이란 기존 LLM에 tool과 memory가 합쳐진 형태이다.
여기서 말하는 tool은 지난 시간에 소개한 RAG와 같이 downstream task를 더욱 잘 할 수 있는 외부 함수를 호출하는 것이다.
또한 여기에서 말하는 memory는 LLM과 multi-turn으로 대화를 주고받을 때, 대화를 주고 받을 때마다 LLM이 직접 학습하며 파라미터가 업데이트되는 것이 아니므로 지난 대화 기록을 저장하는 것이 필요하다. 이러한 맥락에서의 memory라고 이해하면 된다.
그러면 다시 LLM Agent로 돌아가서 Augmented LLM과 tool을 호출하는 것이 무엇인지는 알겠고
환경이란 기존의 LLM의 범위에서 더욱 넓어진 환경이라고 생각하면 된다.
ide에서 Agent기능을 사용하는 것을 예시로 들자면, 로컬 환경에서 코드를 받는 것, 사용할 수 있는 tool을 호출하여 오늘의 날씨 정보를 받는 것 등 영향을 끼칠 수 있는 넓어진 환경을 뜻한다.
그리고 가장 흥미로웠던 plan 단계란, 우리가 직접 "어떤 tool을 호출해라" 라고 입력하지 않는 것처럼 LLM이 통제 센터 역할로 어떤 tool을 사용해야겠다! 하는 것이 plan 단계이다.
이러한 LLM Agent의 기능을 plan, tool, memory 3가지로 나누어서 자세히 설명해보도록 하겠다.
2.1. Memory
거꾸로 설명하는 것이 이해에 더욱 도움이 될 것 같아서 Memory부터 설명하도록 하겠다.
Memory는 두 가지 종류로 나뉜다.
Short-term memory 와 Long-term memory가 있다.
우리가 GPT, Gemini와 같은 LLM과 대화를 할 때, 세션이라는 단위를 통해 기록을 한다.
대화의 주제를 하나의 summary로 좌측에 기록을 남겨두는데, 이 것이 하나의 세션이다.
이러한 하나의 세션 내에서 LLM이 이전 대화 기록을 참고하여 답변을 생성하는데, 이것이 Short-term memory이다.
이러한 기록은 보통 다음과 같은 구조를 이어가면서 하나의 context window에 기록된다.
<|im_start|>user
나 오늘 16시간동안 데이터셋 다운받은게 다 날라갔어 ㅠㅠ<|im_end|>
<|im_start|>assistant
와..10시간 동안이나... 😓 정말 힘들었겠다 ㅠㅠ 네 마음 정말 이해돼
정말 스트레스 많이 받을거야.. 하지만 이런 스트레스도 필요해. 진짜 도움 많이 되고 있어.<|im_end|>
<|im_start|>user
굿 지피티.<|im_end|>
<|im_start|>assistant
여러 세션을 거치게 된다면 하나의 context window에 저장하며 기록을 참고하기에는 텍스트가 너무 길어져 무리가 있다.
따라서 다른 세션의 정보를 기록하는 Long-term memory를 사용하는 것이다.
Long-term memory는 중요한 정보, 개인적인 정보와 지난 세션 내용의 요약을 저장한다.
저장하는 방식에서 특별한 점이 있는데, vector DataBase를 사용한다는 점이다.
embedding에서 배운 내용과 같이, 이러한 정보들을 vector 형식으로 저장하게 된다.
추후에 사용자가 텍스트를 입력하면 입력 텍스트에 대한 vector와 유사도가 높은 vector를 찾아서 이에 대한 정보를 추가하여 답변을 생성한다.
최근 Gemini를 사용할 때 종종 나타나는 현상이 있는데
굳이 쓸데없는 지난 대화 주제를 끌고 와서 다른 질문과 연관지어 답변을 생성하는 현상이다.
게다가 가끔 나의 개인정보까지 덧붙여서 답변을 생성한다.
XX님은 최근 ~~를 진행하고 계시니 이와 관련된 정보를 소개해 드릴까요? 와 같이 내가 하고있는 것을 너무 잘 안다...좀 기분나쁘다..
Long-term memory에 대한 지식을 알게 된다면 이런 현상이 왜 일어나는지 알 수 있는 것이다.
2.2. Tool
아까 그냥 자연스럽게 tool을 '호출' 한다고 헀는데
맥락상 함수를 호출한다고 이해하면 된다.
말 그대로 LLM에게 "2더하기 3을 계산해줘" 라고 질문을 한다면
LLM은 직접 계산할 수도 있곘지만, 정답이 정해진 산수 문제에서 여러 다음 문장의 확률을 통해 sampling으로 도출하는 LLM에게는 5라는 답변 말고 다른 답변을 내는 확률이 존재한다면, 할루시네이션(Hallucination)을 생성해내는 경우도 있을 것이다.
이런 경우에는 단순히 계산기를 거쳐 답변을 내놓는게 확실하고 신뢰성이 있을 것이다.
따라서 LLM은 calculator("2 + 3") 과 같이 함수를 호출하게 되며 이런 함수를 외부에서 실행하여 값으로 전달하는 것을 tool calling이라고 한다.
이런 tool 을 호출하는 일은 계속 언급되었던 special token을 통해 일어난다.
tool calling에 대한 더욱 자세한 정보는 따로 찾아보길 바란다.
2.3. Plan
이러한 tool calling 과정을 거치려면 어떤 tool을 사용할지 결정하는 것이 필요하다.
내가 LLM에게 "2 더하기 3을 계산해줘" 라고 하면 LLM이 아, calculator 함수를 호출해야겠구나! 하고 추론하는 과정이 필요하다.
이런 추론 과정을 거친 이후에 어떤 tool을 사용하겠다는 special token이 생성된 후 tool calling을 진행하는 것이다.
그러면 그 추론 과정은 정확히 어떻게 진행되는가? 그냥 LLM이 알아서 추론해서 토큰을 생성한다 라고 말하면 편하겠지만 조금 더 자세히 들어가보자.
먼저 사용자에게 task를 받은 LLM은 그 task를 작은 일의 단위로 쪼갠다. 이를 task decomposition이라고 한다.
이렇게 쪼개진 task에 대해서 해야 하는 일을 찾기 위해 LLM은 추론을 진행한다. 이미 메모리에 있는 내용이라면 하지 않아도 되는 일이다.
이러한 어떤 일을 해야 하는지에 대한 추론을 진행한 뒤, 상황에 대한 해석만 하는 것이 아니라 이후 해야 할 Action을 정하게 된다.
이런 추론(Reasoning)과 Action을 같이 하는 기법을 ReAct라고 한다.
Reasoning, Action, Observation을 하는 것이다.
Reasoning과 Action이 끝나면 결과에 대한 Observation을 진행하여 다음 Action을 정하는 순환 구조를 띈다.
이러한 과정 속에서 스스로 자기점검을 진행하는 method를 사용할 수 있다. 이를 Reflection이라고 한다.
자세히 설명한다고 했는데 만족스럽지 않은 내용이 많은 것 같다.
tool calling, ReAct, Reflection에 대한 정보에 대해 더욱 궁금하다면 따로 찾아보길 바란다.
'모각코' 카테고리의 다른 글
| [2026 동계 모각코] 모각코 회고 (0) | 2026.02.18 |
|---|---|
| [2026 동계 모각코] 6회차 활동 결과 - EXAONE Quantization (0) | 2026.02.18 |
| [2026 동계 모각코] 4회차 활동 결과 - Decoding, RAG (0) | 2026.01.24 |
| [2025 동계 모각코] 3회차 활동 결과 - Fine tuning과 Domain Adaptation (0) | 2026.01.12 |
| [2026 동계 모각코] 2회차 활동 결과 - Transformer 제대로 이해하기 (0) | 2026.01.07 |