글 요약
1. 에이전트란?
- LLM은 단순히 입력에 대해 답변을 제공하는 역할에 그치지 않고, 외부 메모리와 도구를 사용해 더 정교한 작업을 처리할 수 있습니다.
- 예를 들어, 축구 경기 결과를 검색하고 이를 CSV 파일로 저장하는 작업은 단순한 LLM만으로는 제대로 수행되지 않을 수 있습니다. 대신 **"에이전트"**라는 개념을 활용해 문제를 해결합니다.
- 에이전트는 기억, 추론, 도구 활용, 답변 생성, 행동 실행의 모든 단계를 통합한 시스템입니다.
2. 에이전트를 설계하는 단계
1단계: 계획 (Planning)
- LLM의 성능을 높이기 위해 사용하는 기법 중 하나가 **"연쇄 사고(Chain of Thought)"**입니다.
- 모델이 "단계별로 생각하게" 유도함으로써 더 나은 결과를 얻을 수 있습니다.
- 이를 확장한 버전으로 "자기 일관성을 가진 연쇄 사고", "사고의 나무(Tree of Thoughts)" 등이 있습니다.
- 이런 논리적 사고 과정을 코드로 구현하여 체계적으로 관리합니다. 예를 들어, Langsmith 플랫폼을 사용해 각 사고 단계를 저장하고 불러올 수 있습니다.
2단계: 기억 (Memory)
- 사람의 기억을 LLM 에이전트 구조에 매핑하여 설명합니다:
- 감각 기억: 입력(prompt)과 같은 순간적인 정보.
- 단기 기억: 대화의 흐름을 유지하는 최근 대화 내역.
- 장기 기억: 모델 학습 데이터나 벡터 데이터베이스를 통한 오래된 정보 저장소.
- 이 기억 구조는 에이전트가 문맥을 유지하고 필요한 정보를 적시에 제공할 수 있게 합니다.
3단계: 도구 활용 (Tools)
- 에이전트는 도구를 통해 기능을 확장할 수 있습니다.
- 예시: ChatGPT 플러그인, OpenAI API 함수 호출, Langchain의 내장 도구(예: 검색, 재무 데이터 등).
- 사용자 정의 도구도 쉽게 추가 가능하며, 이를 통해 특정 작업(예: 문자열 길이 계산)을 수행하도록 설계할 수 있습니다.
4단계: 통합 (All Together)
- 위에서 정의한 모든 구성 요소(기억, 도구, 계획)를 통합해 완전한 에이전트를 설계합니다.
- 결과적으로 에이전트는 적절한 기억 구조와 도구 설명을 기반으로 더 정확한 답변을 제공합니다.
3. 왜 이런 설계가 중요한가?
- 잘못된 도구 설명이나 기억의 부재는 간단한 작업에서도 오류를 초래할 수 있습니다.
- 예를 들어, 문자열 길이를 계산하거나 특정 웹사이트를 요약하는 작업에서도 에이전트가 잘못된 결과를 제공할 수 있습니다.
결론
- 이 글은 에이전트 설계의 기본 요소를 이해하고, 실용적인 방법으로 이를 활용할 수 있도록 돕기 위해 작성되었습니다.
- 기억, 도구, 추론 단계를 모두 통합한 구조가 중요하며, 이를 통해 더 안정적이고 효율적인 에이전트를 만들 수 있습니다.
글에 대한 연구
주의
본문에서 정의한 "에이전트는 기억, 추론, 도구 활용, 답변 생성, 행동 실행의 모든 단계를 통합한 시스템"이라는 정의는 특정 공식 문서나 학계에서 표준적으로 인정된 정의는 아니다. 단지 기술 블로그나 연구자들이 에이전트의 개념을 설명할 때 자주 사용되는 직관적이고 실용적인 정의일 뿐이다.
에이전트를 위와 같은 방식으로 설계해야 하는 이유는 아래와 같습니다.
- 단순한 입력-출력 시스템의 한계를 극복하기 위해 문맥 유지, 복잡한 추론, 다단계 작업을 가능하게 하는 추가 기능이 필요하기 때문이다.
- 복잡한 문제 해결을 가능하게 하기 위해 문제를 단계별로 나눠 체계적으로 해결할 수 있는 계획과 추론 구조가 필요하기 때문이다.
- 유연성과 확장성을 높이기 위해 다양한 작업 요구에 대응하고 새로운 기능을 쉽게 추가할 수 있는 설계가 중요하기 때문이다.
- 현실적인 사용자 요구를 충족하기 위해 문맥 유지, 정확한 답변 생성, 작업 자동화와 같은 기능을 제공해야 하기 때문이다.
- 효율성과 신뢰성을 향상시키기 위해 기억, 도구 활용, 계획을 통해 효율적이고 신뢰할 수 있는 결과를 제공해야 하기 때문이다.
- 인간처럼 사고하고 행동하도록 만들기 위해 인간의 문제 해결 방식을 반영해 더 자연스럽고 강력한 시스템을 구현해야 하기 때문이다.
1단계: 계획 (Planning)
- 계획 단계에서는 에이전트가 어떤 문제를 해결할 것인지 정의하고, 문제 해결 과정을 설계합니다.
- 이를 위해 LLM이 논리적으로 사고하는 프로세스를 구축하는 것이 중요합니다.
- 단순히 입력을 처리해 결과를 내놓는 것이 아니라, 문제를 작은 단계로 나눠 사고하게 하는 것이 목표입니다.
| 관련 주요 기술 | 설명 |
|---|---|
| Chain of Thought (CoT) | LLM에게 "한 번에 답을 내지 말고, 단계별로 생각하라"고 지시합니다. 예: 수학 문제를 풀 때, 문제를 쪼개어 계산 과정을 차근차근 진행. |
| Tree of Thoughts | 여러 가지 가능한 사고 과정을 나열한 뒤, 가장 적합한 답을 선택합니다. |
2단계: 기억 (Memory)
- 에이전트는 작업 중 발생한 정보를 기억해야 합니다.
- 사람의 기억처럼, AI 에이전트도 감각 기억, 단기 기억, 장기 기억을 사용합니다
- 감각 기억: 현재 입력(prompt)만 기억.
- 단기 기억: 최근 대화나 작업 내용을 저장.
- 장기 기억: 과거의 학습 데이터나 외부 정보를 벡터 데이터베이스에 저장해 재사용.
| 예시 구분 | 설명 |
|---|---|
| 단기 기억 | AI 비서가 사용자의 질문 "지난 주에 추천해준 영화 제목이 뭐였죠?"에 답하기 위해 최근 대화 기록을 기억. |
| 장기 기억 | AI가 고객 관리에서 과거 구매 데이터를 참고하여 맞춤형 추천 제공. |
LangChain을 사용한 기억 기능 구현
from langchain_community.chat_message_histories import ChatMessageHistory
message_history = ChatMessageHistory()
agent_with_memory = RunnableWithMessageHistory(
agent_executor,
lambda session_id: message_history,
input_messages_key="input",
history_messages_key="chat_history",
)
3단계: 도구 활용 (Tools)
- 에이전트는 자신의 한계를 극복하기 위해 다양한 도구를 사용할 수 있습니다.
- 도구는 API, 플러그인, 외부 모델 등으로 구성됩니다.
- 예를 들어:
- 검색 도구: 정보를 찾기 위해 인터넷 검색을 실행.
- 계산 도구: 수학적 계산을 수행.
- 파일 처리 도구: 데이터를 저장하거나 변환.
예시
"Google에서 최신 기사를 검색해 요약하고 CSV 파일로 저장하세요."
- 도구 활용 과정
- 검색 도구를 사용해 Google에서 최신 기사 검색.
- 요약 도구를 통해 핵심 내용을 정리.
- 파일 저장 도구를 사용해 결과를 CSV로 저장.
4단계: 통합 (All Together)
- 앞서 설계한 계획, 기억, 도구를 통합해 완전한 에이전트를 만듭니다.
- 이 단계에서는 에이전트가 유기적으로 작동하도록 구성 요소를 연결합니다.
- 예를 들어:
- 단기 기억을 통해 대화의 문맥을 유지하고,
- 도구를 사용해 외부 데이터를 검색하며,
- 계획된 논리로 최종 답변을 생성합니다.
예시
"유럽에서 인기 있는 5개 도시를 검색하고, 각각의 평균 호텔 가격을 계산하세요."
- 통합 과정:
- 검색 도구로 도시 이름과 호텔 가격 정보를 수집.
- 기억을 활용해 수집한 데이터를 저장.
- 논리적으로 평균 계산 후 답변 생성.