AI 에이전트를 밑바닥부터 직접 만들어 보았습니다. 아무도 말해주지 않는 것들.
요약
AI 에이전트의 핵심 구성 요소인 LLM, 메모리, 도구, 루프를 활용하여 에이전트를 밑바닥부터 구축하는 실전 가이드를 제공합니다. LangChain 프레임워크의 최신 변경 사항과 실제 구현 시 주의해야 할 기술적 디테일을 다룹니다.
핵심 포인트
- AI 에이전트의 4대 필수 요소: LLM, 메모리, 도구, 루프
- LangChain API의 빠른 변화와 Deprecated 패턴 주의 필요
- Python, LangChain, GPT-4o, Tavily를 활용한 스택 구성
- 단순 프롬프팅과 에이전트의 근본적인 차이점 설명
이론은 깔끔합니다. 현실은 더 복잡하죠. 그리고 솔직히 말해서 더 흥미롭습니다.
모두가 AI 에이전트(AI agents)에 대해 이야기합니다. 하지만 실제로 그것을 어떻게 구축하는지 보여주는 사람은 거의 없습니다. 그래서 제가 직접 경험한 솔직한 기록을 공유하고자 합니다 — 무엇이 작동했고, 무엇이 망가졌으며, 무엇이 저를 놀라게 했는지 말이죠.
코드를 복사하기 전에 주의할 점: LangChain의 에이전트 API는 빠르게 변화하며, 제가 이것을 구축할 때 사용했던 것 중 일부는 현재 지원이 중단(deprecated)되었습니다. 저는 이를 숨기는 대신 본문 아래에 직접 표시해 두었습니다. 그것이 이 포스트의 목적이기도 합니다.
무엇이 실제로 무언가를 "에이전트"로 만드는가?
무언가를 구축하기 전에, 우리가 무엇을 만들고 있는지 정확히 정의할 가치가 있습니다. AI 에이전트에는 네 가지가 필요합니다:
- 두뇌로서의 LLM — 추론 엔진 (reasoning engine)
- 메모리 (Memory) — 단계 전반에 걸쳐 유지되는 컨텍스트 (context)
- 도구 (Tools) — 실제로 행동을 취할 수 있는 능력
- 루프 (A loop) — 계획(plan) → 행동(act) → 관찰(observe) → 반복(repeat)
이 네 가지 중 하나라도 빠지면 에이전트가 아닙니다. 그저 화려한 프롬프트(prompt)일 뿐입니다.
내가 사용한 스택
- Python 3.11
- LangChain (에이전트 프레임워크)
- OpenAI GPT-4o (두뇌)
- Tavily (웹 검색 도구)
- Python REPL (코드 실행 도구)
리서치 에이전트 구축하기, 단계별 가이드
1단계 — 의존성 설치
pip install langchain langchain-openai tavily-python python-dotenv
2단계 — 도구 설정
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_experimental.tools import PythonREPLTool
...
3단계 — 에이전트 초기화
이 부분은 제가 처음 이것을 만들었을 때 이후로 가장 많이 변한 부분입니다. 제가 원래 사용했던 방식은 다음과 같습니다:
# 제가 원래 사용했던 방식 — 이 패턴은 현재 지원이 중단(deprecated)되었습니다
from langchain_openai import ChatOpenAI
from langchain.agents import create_react_agent
...
주의: create_react_agent와 AgentExecutor는 이후 langchain.agents의 create_agent를 사용하는 것이 권장되면서 사용 중단(deprecated)되었습니다. 근본적인 개념—모델, 도구(tools), 그리고 이를 감싸는 루프(loop)—는 변하지 않았습니다. 변경된 것은 생성자입니다. 만약 처음부터 시작한다면, 이 워크스루를 작성한 이후 LangChain의 API 표면이 실제로 두 번이나 이동했으므로, 구축하기 전에 docs.langchain.com에서 현재 시그니처(signature)를 확인하세요.
4단계 — 실행 루프 추가 (Add the execution loop)
from langchain.agents import AgentExecutor
agent_executor = AgentExecutor(
...
5단계 — 목표 부여하기 (Give it a goal)
result = agent_executor.invoke({
"input": """
Research the current state of AI agents in enterprise software.
...
실제로 실행했을 때 무슨 일이 벌어졌나
verbose=True에서 바로 가져온 에이전트의 내부 독백(internal monologue)입니다:
Thought: I need to search for information about AI agents
in enterprise software.
...
이것이 실시간으로 펼쳐지는 것을 지켜보는 것이, 에이전트가 단일 프롬프트와 다르게 무엇을 하는지 이해하는 가장 좋은 방법입니다. 마법이 아니라, 눈에 보이게 만들어진 루프(loop)입니다.
내가 잘못한 점 (그리고 어떻게 수정했는지)
실수 1 — 목표가 너무 모호함
나쁜 프롬프트: `
초기 버전은 동일한 검색을 15번이나 반복하며 갇혀버리곤 했습니다. max_iterations=10으로 설정하는 것은 투박한 해결책이었으며, 에이전트에게 언제 멈춰야 하는지 명시적으로 알려주는 더 나은 프롬프트 엔지니어링 (Prompt Engineering)이 실제 해결책이었습니다.
실수 4 — 출력을 맹목적으로 신뢰함
에이전트가 존재하지 않는 출처의 통계 수치를 아주 자신 있게 인용했습니다. 이것이 이 글 전체에서 가장 중요한 교훈입니다. 에이전트는 완벽한 확신을 가지고 환각 (Hallucination)을 일으킵니다. 중요한 정보는 항상 검증해야 하며, 출력을 액면 그대로 믿기보다는 프롬프트 자체에 출처 확인 (Source-checking) 기능을 구축해야 합니다.
에이전트가 실제로 잘하는 것 (그리고 어려워하는 것)
이런 것들을 몇 개 만들어 본 후, 저의 솔직한 견해는 다음과 같습니다.
잘하는 것:
- 반복적인 다단계 조사 (Multi-step research)
- 정보 수집 및 합성 (Synthesis)
- 명확하고 확인 가능한 성공 기준이 있는 작업
- 구조화된 데이터 처리 (Structured data processing)
어려워하는 것:
- 진정으로 새로운 문제 해결
- 현실 세계의 판단이 필요한 모든 것
- 도구가 도달할 수 있는 범위를 벗어난 정보
- 체크포인트(Checkpoint)가 없는 긴 작업 — 원래 목표에서 벗어납니다.
- 자신이 틀렸다는 것을 인지하는 것
마지막 항목은 반드시 명심해야 합니다. 자신 있게 틀리는 에이전트는 눈에 띄게 실패하는 에이전트보다 더 위험합니다. 왜냐하면 에이전트의 출력물 자체에는 재검토가 필요하다는 신호가 전혀 없기 때문입니다.
알아둘 만한 프레임워크 (Frameworks)
단일 조사 에이전트 그 이상으로 깊게 들어가고 싶다면 다음을 참고하세요:
- LangChain / LangGraph — 가장 성숙한 생태계, 최고의 문서화, 가장 큰 커뮤니티를 보유하고 있습니다. 여기서 시작하세요.
- CrewAI — 멀티 에이전트 오케스트레이션 (Multi-agent orchestration)을 위한 도구로, "에이전트 팀"을 중심으로 구축되어 해당 사용 사례에 더 직관적인 API를 제공합니다.
- AutoGen (Microsoft) — 인간 참여형 (Human-in-the-loop) 에이전트에 강점이 있으며, 연구 중심적입니다.
- LlamaIndex — 문서 및 데이터 중심의 에이전트에 가장 적합합니다.
CrewAI를 이용한 멀티 에이전트 설정
하나의 에이전트가 작동하기 시작하면, 자연스러운 다음 단계는 몇 개를 서로 연결하는 것입니다. 여기 최소한의 조사자(Researcher)와 작성자(Writer) 크루(Crew) 예시가 있습니다:
from crewai import Agent, Task, Crew
researcher = Agent(
...
저의 솔직한 결론
AI 에이전트 (AI agents)는 실재하며 진정으로 유용합니다. 하지만 일부 집단에서는 과하게 과장되기도 합니다. 진실은 그 중간에 있습니다:
- 특정하고 명확하게 정의된 작업 (tasks)에는 효과적으로 작동합니다.
- 마법이 아니며, 이를 둘러싼 실제적인 엔지니어링 (engineering)이 필요합니다.
- 흥미롭고 예측하기 어려운 방식으로 실패하기도 합니다.
- 에이전트를 직접 하나 만들어 보는 것이 일주일 동안 관련 글을 읽는 것보다 더 많은 것을 가르쳐 줍니다.
단순하게 시작하세요. 에이전트 하나, 도구 (tool) 하나, 작업 (task) 하나부터 시작하십시오. 자율적인 AI 기업을 꿈꾸기 전에 그것부터 제대로 작동하게 만드세요.
여러분은 에이전트로 무엇을 만들고 계신가요? 댓글로 남겨주세요 — 현재 사람들에게 실제로 무엇이 효과가 있는지 진심으로 궁금합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기