LangChain 이용한 기본 AI Agent 구현
요즘 AI Agent라는 말, 자주 들리시죠?
그런데 도대체 이걸 어떻게 직접 만들어볼 수 있을까요?
안녕하세요! 오늘은 요즘 가장 핫한 AI 프레임워크 중 하나인 LangChain을 활용해서, 아주 간단한 기본 AI 에이전트를 구현해보는 시간을 가져볼게요. GPT 같은 대형 언어 모델을 직접 써보는 건 어렵지 않은데, 이걸 진짜 '에이전트'처럼 유저의 요청에 맞춰 행동하게 만드는 건 또 다른 이야기죠.
이번 글에서는 공식 예제를 따라가면서, 프롬프트 템플릿 구성부터 에이전트 실행까지의 과정을 단계별로 설명드릴게요. LangChain이 제공하는 간단한 도구들을 이해하고 나면, 나만의 에이전트를 구성하는 게 한결 쉬워질 거예요. 그럼, 시작해볼까요? 😊
목차
1. LangChain Agent란 무엇인가요? 🤖
AI 에이전트(Agent)라는 말을 들으면, 뭐가 먼저 떠오르시나요? 챗봇? Siri? 아니면 로봇? 😄 LangChain에서는 에이전트(Agent)를 ‘사용자의 요청에 따라 다양한 도구(tool)를 스스로 선택하고 조합해서 답변하는 실행 주체’로 정의합니다. 즉, 단순히 응답만 하는 게 아니라 도구를 사용하고 결정을 내리는 능동적인 존재예요.
LangChain은 다양한 형태의 에이전트를 만들 수 있도록 도와주는 프레임워크로, 특히 GPT 계열 LLM을 기반으로 에이전트를 구성할 수 있는 유연한 구조를 제공합니다. 아래는 LangChain 공식 문서에서도 소개하는 핵심 특징이에요.
- LLM 기반: GPT 같은 언어 모델을 중심으로 작동합니다.
- Tool 사용 가능: 계산기, 검색기능, DB 조회 등 다양한 도구와 연결할 수 있어요.
- 프롬프트 기반 계획: 문제 해결을 위해 어떤 도구를 어떻게 사용할지 계획을 세우는 능력을 가지고 있어요.
LangChain Agent는 언제 유용할까?
예를 들어볼게요. 사용자가 “서울의 현재 날씨를 알려주고, 내일 오전까지의 날씨 예측을 분석해 줘”라고 요청한다고 해봅시다. 단순한 챗봇이라면 바로 정보를 줄 수 없지만, LangChain Agent는 다음과 같은 과정을 스스로 계획합니다.
- Step 1: 현재 날씨 API 호출 (예: OpenWeather 사용)
- Step 2: 내일 오전 예측값 수집
- Step 3: 두 데이터를 분석하고 요약
즉, 사용자의 질문 하나에 대해 도구 호출 → 정보 수집 → 분석 → 응답까지 전 과정을 스스로 진행하는 것이 바로 LangChain Agent의 강점이에요.
정리하자면...
- LangChain Agent는 복잡한 문제 해결을 자동으로 계획하고 처리하는 시스템입니다.
- GPT 등의 LLM을 기반으로 다양한 도구와 함께 사용됩니다.
- 대화형으로 상호작용하면서 실시간 판단을 내립니다.
2. LangChain Agent의 핵심 구성 요소 🔧
LangChain 에이전트를 구현하려면 몇 가지 꼭 알아야 할 핵심 구성 요소들이 있어요. 이 구성 요소들은 단순히 “GPT에게 물어본다” 수준을 넘어서, 실제로 에이전트가 ‘행동’할 수 있게 만드는 기초 블록입니다. 이 구조만 잘 이해해도 Agent를 구성하는 데 훨씬 쉬워져요!
LangChain 에이전트를 구성하는 기본 블럭들
구성 요소 | 설명 |
---|---|
LLM (Large Language Model) | GPT와 같은 언어 모델. 에이전트의 ‘두뇌’ 역할을 해요. |
Tool | 계산기, 웹 검색, 데이터베이스 등 외부 기능. Agent가 사용 가능한 도구입니다. |
Prompt Template | LLM에게 문제를 잘 설명해주는 양식. 입력된 정보와 도구 사용법 등을 포함합니다. |
AgentExecutor | Agent의 ‘실행’ 관리자로, 프롬프트 생성 → 응답 처리 → 도구 사용 순서를 조율합니다. |
이 구성 요소들은 어떻게 연결될까?
간단히 말하면 이렇게 흘러가요:
- 1️⃣ 사용자의 질문 → Prompt Template을 통해 포맷팅
- 2️⃣ LLM이 질문을 이해하고 필요한 Tool을 판단
- 3️⃣ AgentExecutor가 선택된 Tool을 실행
- 4️⃣ 결과를 종합해서 최종 응답 생성
실제 코드에서는 어떤 모듈을 쓸까?
LangChain에서 Agent를 만들 때 자주 등장하는 파이썬 모듈 몇 가지도 같이 알아두면 좋아요.
-
langchain.agents
: 에이전트 구성 및 실행 관련 기능 모음 -
langchain.tools
: 사용할 수 있는 다양한 Tool 정의 -
langchain.llms
: LLM과 연결하는 모듈
이렇게 구성 요소들이 자연스럽게 이어지기 때문에, 한 번 구조를 익혀두면 다양한 프로젝트에 응용하는 데에도 무척 유용하답니다! 🚀
3. LangChain 예제로 보는 기본 Agent 구성 💡
이번에는 LangChain 공식 예제를 기반으로 가장 기본적인 AI Agent를 직접 구성해보는 실습을 해볼 거예요. 아주 간단한 계산기 기능을 도구로 연결해서, Agent가 LLM과 Tool을 연동하여 답변을 생성하는 전 과정을 체험할 수 있습니다.
예제 코드: 계산기 도구를 사용하는 LangChain Agent
우선 아래 코드를 그대로 실행해보세요. LangChain이 설치되어 있어야 하고, OpenAI API 키도 준비되어 있어야 합니다.
from langchain.agents import load_tools, initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI
# LLM 정의
llm = OpenAI(temperature=0)
# 사용할 툴 불러오기 (계산기 포함)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# 에이전트 초기화
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# 실행 예시
agent.run("Who is Olivia Wilde's boyfriend? What is his current age raised to the 0.23 power?")
코드 해설 👨🏫
- OpenAI LLM: 텍스트 응답을 생성하기 위한 중심 모델입니다. 여기선 GPT-3 기반 모델 사용.
- load_tools(): 사용할 도구들 불러오기. 여기선
serpapi
(검색),llm-math
(수학 계산기)를 사용. - initialize_agent(): 도구와 모델을 조합하여 에이전트를 초기화.
ZERO_SHOT_REACT_DESCRIPTION
방식은 도구 사용을 LLM이 판단하게 합니다. - agent.run(): 에이전트에게 복합적인 질문을 던지고, 답변을 받습니다. 이 과정에서 필요한 도구를 스스로 선택하고 실행해요.
실행 결과는?
에이전트는 먼저 'Olivia Wilde의 남자친구'가 누군지를 serpapi
로 검색하고, 그의 나이를 알아낸 뒤, llm-math
로 0.23 제곱을 계산합니다. 이처럼 단일 질문 안에서도 여러 도구를 활용해 계획 수립 → 실행 → 결과 통합이 전자동으로 이루어지는 것이 특징이에요.
이 간단한 예제를 통해 LangChain Agent의 작동 방식을 직접 확인해볼 수 있었죠? 다음 단계에서는 이런 Agent에 나만의 도구를 추가하는 방법도 소개해볼게요!
4. 나만의 Tool 추가하기 🛠️
LangChain의 진짜 매력은 바로 여기에 있어요. 기존에 제공되는 툴뿐 아니라 나만의 함수를 도구로 등록해서 에이전트가 자유롭게 사용할 수 있게 만들 수 있다는 거죠. 예를 들어, 단순한 문자열 처리 함수나 외부 API 호출을 하나의 Tool로 정의할 수 있어요.
예제: 텍스트를 뒤집는 커스텀 함수 만들기
아래는 텍스트를 거꾸로 뒤집는 함수를 LangChain Agent의 Tool로 추가하는 코드예요.
from langchain.agents import Tool, initialize_agent, AgentType
from langchain.llms import OpenAI
# 커스텀 함수 정의
def reverse_text(text: str) -> str:
return text[::-1]
# Tool 객체로 래핑
reverse_tool = Tool(
name="Text Reverser",
func=reverse_text,
description="Reverses the input text string."
)
# LLM 초기화
llm = OpenAI(temperature=0)
# Agent 초기화
agent = initialize_agent(
tools=[reverse_tool],
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# 실행
agent.run("Please reverse the text: LangChain is powerful.")
코드 설명 🔍
- reverse_text(): 입력받은 문자열을 뒤집는 간단한 함수예요.
- Tool 객체: LangChain에서 에이전트가 사용할 수 있도록 함수에 메타데이터를 입힌 형태예요.
- Agent 생성: 이번엔 reverse_tool만 연결해서 Agent가 이 도구를 이용해 문제를 해결할 수 있도록 했어요.
실행 결과는?
에이전트는 LLM을 통해 문장을 분석한 뒤 Text Reverser
툴을 호출하여 "LangChain is powerful."을 뒤집은 결과를 리턴합니다: ".lufrewop si niaCgnaL"
이처럼, 단순한 파이썬 함수라도 LangChain의 Tool로 래핑하면 에이전트가 마치 “사고하고 도구를 사용하는 존재”처럼 행동하게 되는 거예요. 그리고 이건 단지 시작일 뿐이죠. 외부 API, DB 조회, 크롤링, 이메일 전송 등... 뭐든 가능합니다!
5. 에이전트 실행 흐름과 작동 원리 🔄
이제 LangChain Agent가 어떤 방식으로 동작하는지 전체 흐름을 짚어볼 차례예요. 그냥 코드만 보고 ‘작동한다!’라고 생각하기보단, 에이전트가 질문을 어떻게 처리하는지 한 단계씩 따라가보면 이해가 훨씬 쉬워집니다.
LangChain Agent의 내부 동작 순서
1️⃣ 사용자 입력: 사용자가 질문 또는 요청을 입력합니다.
2️⃣ Prompt Template 구성: Agent는 이 입력을 기반으로 프롬프트를 구성해요.
3️⃣ LLM 호출: 프롬프트가 LLM(OpenAI 등)에 전달되어, ‘무엇을 해야 할지’ 판단합니다.
4️⃣ 도구 선택: 필요한 경우, 에이전트는 Tool 목록에서 적절한 도구를 골라 실행합니다.
5️⃣ 중간 결과 처리: 툴의 결과를 다시 프롬프트에 반영해 다음 행동을 결정합니다.
6️⃣ 최종 응답 생성: 모든 작업이 완료되면, Agent는 종합적인 응답을 만들어 사용자에게 제공합니다.
실제 실행 로그 예시 (verbose=True)
예제 코드에서 verbose=True
를 설정해 실행하면, Agent가 어떤 생각을 하고 어떤 도구를 선택하는지 로그로 보여줘요. 예를 들면 이런 흐름이 출력됩니다:
Thought: I need to look up who Olivia Wilde's boyfriend is.
Action: Search
Action Input: "Olivia Wilde boyfriend"
Observation: Harry Styles
Thought: I need to calculate his age raised to the 0.23 power.
Action: Calculator
Action Input: 29^0.23
Observation: 2.1697
Final Answer: Olivia Wilde's boyfriend is Harry Styles. 29^0.23 is approximately 2.17.
이 과정을 통해 우리는 에이전트가 단순한 응답 생성기가 아니라, ‘계획하고 사고하는 존재처럼 행동’한다는 걸 확인할 수 있어요. 도구를 선택하고 중간 결과를 반영하며 점진적으로 목표에 다가가는 방식은, 인간이 문제를 해결하는 방식과 꽤 비슷하죠.
AgentType.ZERO_SHOT_REACT_DESCRIPTION 방식이란?
우리가 사용한 에이전트 타입 ZERO_SHOT_REACT_DESCRIPTION
은 말 그대로 “프롬프트에 기반한 리액트 방식”이에요. LLM이 문제를 보고 스스로 어떤 도구를 언제 사용할지 판단하고, 도구 실행과 응답 생성을 반복하면서 정답을 찾아가는 구조죠.
추후에는 Conversational Agent
처럼 대화를 기억하며 작동하는 타입도 활용할 수 있고, Plan-and-Execute Agent
처럼 미리 전체 계획을 수립하고 실행하는 방식도 활용 가능해요. 즉, LangChain Agent는 유연하게 성장하는 구조라는 점을 기억해두세요!
6. 실습 팁과 확장 아이디어 ✨
LangChain Agent를 직접 구성해보셨다면, 분명 이렇게 생각하셨을 거예요. “어? 이거 생각보다 재밌고 유용한데?” 맞아요! 에이전트를 만들고 커스터마이징하는 과정은 단순한 프롬프트 실험과는 또 다른 재미가 있어요. 이번엔 실습을 해보면서 알게 된 꿀팁과 확장 가능성에 대해 공유할게요.
LangChain Agent 실습 팁 5가지 💡
- 도구 설명은 구체적으로! Tool 생성 시
description
필드는 매우 중요해요. LLM이 어떤 상황에서 해당 도구를 쓸지 판단하는 기준이 되거든요. - Prompt를 깔끔하게! 사용자 입력 외에도 context, instruction 등을 프롬프트에 명확히 담아주는 게 중요합니다.
- verbose=True 적극 활용: 디버깅 시 Agent의 Thought/Action/Observation 흐름을 모두 볼 수 있어서 정말 유용해요!
- 도구 체이닝 고려: 여러 도구를 순차적으로 실행해야 하는 경우엔 Tool 내부에서 다른 함수나 API 호출을 연결하세요.
- Tool 출력값 형식은 일관되게: 문자열 or JSON 등으로 정해두고, 출력값을 LLM이 읽기 편하도록 구성하세요.
확장 아이디어: 실전에서 이렇게 써보세요! 🧠
적용 분야 | 활용 아이디어 |
---|---|
업무 자동화 | 메일 요약, 회의록 정리, 보고서 자동 작성 |
개발 도우미 | 코드 설명, API 문서 요약, 에러 진단 |
데이터 분석 | CSV 분석 툴 연결 → 사용자 질문 기반 데이터 요약 |
교육 튜터 | 맞춤 문제 출제, 채점 도구 연결, 설명 기반 학습 |
LangChain Agent는 생각보다 무궁무진하게 활용할 수 있어요. 처음에는 단순한 계산기나 검색 툴을 연결하는 데서 시작하더라도, 점점 사용자의 니즈에 맞는 맞춤형 AI 서비스로 진화시킬 수 있답니다.
이제 마지막으로 글을 정리하고, 어떤 방향으로 확장해나가면 좋을지 마무리해볼게요!
마무리하며 ✍️
여기까지 LangChain을 활용한 기본 AI Agent 구성을 함께 알아봤습니다. 처음엔 다소 복잡하게 느껴질 수 있지만, 하나씩 따라가다 보면 ‘도구를 선택하고 실행하는 GPT’라는 개념이 그리 멀게 느껴지지 않아요. 🤖
LangChain Agent는 단순한 프롬프트 응답을 넘어 도구를 직접 활용하는 지능형 AI를 만들 수 있게 해주는 프레임워크입니다. 앞으로 다양한 API와 외부 서비스들을 연결해 더욱 강력하고 실용적인 에이전트를 구현할 수 있어요.
이번 실습을 통해 AI Agent에 대한 감을 조금 잡으셨다면, 이제 여러분만의 툴을 정의하고 복합적인 문제를 해결하는 Agent를 설계해보세요. 언젠가는 여러분의 서비스나 프로젝트에 바로 적용할 수 있는 훌륭한 기반이 되어줄 거예요.
마지막으로, 작은 팁! 에이전트는 정답보다 과정(Thought → Action → Observation)이 중요하다는 걸 기억하세요.
GPT의 ‘사고 흐름’을 디버깅하며 분석하는 습관을 들이면, 에이전트 설계가 한층 쉬워질 거예요. 😊
'AI Agent' 카테고리의 다른 글
MCP로 만드는 자동화 에이전트: Python으로 똑똑하게 작업 자동화하기 (4) | 2025.05.08 |
---|---|
RAG 구현 : 예제로 배우는 검색 기반 생성 AI의 모든 것 (2) | 2025.05.07 |
멀티에이전트 시스템(MAS) 개발 완벽 가이드 (3) | 2025.05.05 |
소프트웨어 자동화 Agent 만들기 가이드 (3) | 2025.05.04 |
Weaviate 완전 정복: 오픈소스 벡터 데이터베이스의 모든 것 (1) | 2025.05.03 |