본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] LangChain과 LlamaIndex 에이전트 설계 패턴 5가지 해결 방법과 프레임워크 차이 분석

by Papa Martino V 2026. 4. 16.
728x90

LangChain과 LlamaIndex 에이전트 설계
LangChain과 LlamaIndex 에이전트 설계

단순한 질의응답(Q&A) 챗봇을 넘어, 스스로 도구를 선택하고 복잡한 태스크를 수행하는 Autonomous AI 에이전트의 시대가 도래했습니다. Python 생태계에서 에이전트 구축의 양대 산맥인 LangChainLlamaIndex는 서로 다른 철학을 바탕으로 에이전트 설계 패턴을 제공합니다. 본 가이드에서는 실무에서 즉시 활용 가능한 5가지 에이전트 설계 패턴과 두 프레임워크의 구조적 차이를 통한 문제 해결 방법을 심층적으로 다룹니다.


1. AI 에이전트의 정의와 두 프레임워크의 설계 철학

에이전트란 대규모 언어 모델(LLM)을 추론 엔진(Reasoning Engine)으로 사용하여, 주어진 목표를 달성하기 위해 어떤 도구(Tool)를 사용하고 어떤 순서로 실행할지 스스로 결정하는 시스템을 의미합니다. LangChain은 다양한 컴포넌트 간의 '연결(Chain)'과 범용적인 '워크플로우 제어'에 강점이 있어 복잡한 로직을 가진 범용 에이전트에 적합합니다. 반면, LlamaIndex는 '데이터 인덱싱'과 '검색'에 최적화되어 있어, 방대한 지식 베이스를 바탕으로 정교한 답변을 내놓는 RAG(Retrieval-Augmented Generation) 특화 에이전트 설계에 매우 강력한 모습을 보입니다.

2. LangChain vs LlamaIndex 에이전트 핵심 차이 비교

프로젝트의 성격에 따라 적합한 프레임워크를 선택하기 위한 기술적 대조표입니다.

비교 항목 LangChain (ReAct 기반) LlamaIndex (Data-Agent 기반)
설계 중심 행동(Action) 및 워크플로우 오케스트레이션 데이터 구조(Index) 및 쿼리 파이프라인
추론 루프 유연한 커스텀 루프 (LangGraph 등) 선언적 쿼리 엔진 및 스태핑(Stepping)
도구 활용 방식 Toolbox 및 Toolkit 중심 Query Engine Tool 중심
상태 관리 Memory 컴포넌트 다양화 데이터 소스 기반의 Context 유지
주요 장점 광범위한 외부 라이브러리 통합성 고도화된 RAG 성능 및 데이터 검색 속도

3. 실무 고도화를 위한 7가지 에이전트 설계 패턴 예제 (Python)

개발자가 실무 파이프라인에 즉시 적용하여 복잡한 요구사항을 해결할 수 있는 코드 예제입니다.

Example 1: LangChain ReAct 에이전트 기본 구조

Thought-Action-Observation 루프를 통해 웹 검색과 계산기 도구를 사용하는 해결 방법입니다.

from langchain.agents import load_tools, initialize_agent, AgentType
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4", temperature=0)
tools = load_tools(["serpapi", "llm-math"], llm=llm)

# ReAct 패턴의 에이전트 초기화
agent = initialize_agent(
    tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)

response = agent.run("현재 삼성전자 주가를 확인하고 그 값에 1.1을 곱해줘.")
print(response)
        

Example 2: LlamaIndex 데이터 에이전트를 통한 문서 기반 추론

특정 PDF 문서들에 대해 복합적인 쿼리를 수행하고 도구를 자동 선택하는 패턴입니다.

from llama_index.core.agent import ReActAgent
from llama_index.core.tools import QueryEngineTool, ToolMetadata
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

documents = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()

# 도구 정의
tools = [
    QueryEngineTool(
        query_engine=query_engine,
        metadata=ToolMetadata(name="financial_report", description="연간 재무 보고서 데이터 제공")
    )
]

agent = ReActAgent.from_tools(tools, llm=llm, verbose=True)
agent.chat("지난해 매출 성장률과 시장 전망을 비교해서 요약해줘.")
        

Example 3: LangGraph를 활용한 상태 유지 순환 에이전트 (Stateful)

복잡한 비즈니스 로직에서 이전 단계의 결과를 기억하고 조건부 분기를 수행하는 해결 방법입니다.

from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, Sequence

class AgentState(TypedDict):
    messages: Annotated[Sequence[str], "대화 내역"]

def call_model(state):
    # LLM 호출 및 상태 업데이트 로직
    return {"messages": ["추론 결과"]}

workflow = StateGraph(AgentState)
workflow.add_node("agent", call_model)
workflow.set_entry_point("agent")
workflow.add_edge("agent", END)

app = workflow.compile()
        

Example 4: 에이전트 전용 커스텀 Tool 정의 및 해결

비즈니스 특화 API를 에이전트가 사용할 수 있도록 인터페이스를 설계하는 방법입니다.

from langchain.tools import tool

@tool
def get_user_status(user_id: str) -> str:
    """DB에서 유저의 현재 상태(VIP, 일반, 블랙리스트)를 조회합니다."""
    # 실제 DB 조회 로직 (더미 응답)
    return "VIP"

# 에이전트에 추가하여 사용 가능
# agent_tools = [get_user_status]
        

Example 5: LlamaIndex의 Sub-Question Query Engine 패턴

복잡한 질문을 여러 개의 하위 질문으로 분해하여 각각 처리한 뒤 통합하는 고속 데이터 전송 패턴입니다.

from llama_index.core.query_engine import SubQuestionQueryEngine

# 하위 질문을 생성하여 답변하는 엔진 구축
sub_query_engine = SubQuestionQueryEngine.from_defaults(
    query_engine_tools=tools
)
response = sub_query_engine.query("A사와 B사의 2024년 영업이익률 차이를 분석해줘.")
        

Example 6: Self-Correction(자기 수정) 에이전트 루프

에이전트가 생성한 코드가 실패할 경우 에러 메시지를 바탕으로 스스로 코드를 수정하는 패턴입니다.

# PythonREPLTool을 사용하여 에러 발생 시 피드백 루프 구성
# LangChain의 'ZeroShotAgent'에 에러 피드백 프롬프트 결합
prompt = "이전 코드 실행 시 발생한 에러: {error}. 다시 시도하세요."
        

Example 7: 다중 에이전트 협업(Multi-Agent) 설계

연구원 에이전트와 작가 에이전트가 역할을 분담하여 최종 보고서를 작성하는 해결책입니다.

# LangGraph 또는 CrewAI와 연동하여 구현
# 1. Researcher: 자료 수집
# 2. Writer: 초안 작성
# 3. Reviewer: 팩트 체크 및 교정
        

4. 결론: 프로젝트에 맞는 최적의 에이전트 선택 전략

에이전트 설계의 성패는 프롬프트의 정교함도구의 명확한 정의에 달려 있습니다.

  • 다양한 외부 서비스(Slack, GitHub, Email 등)를 연동한 복잡한 업무 자동화가 목표라면 LangChain을 추천합니다.
  • 구조화/비구조화된 기업 내부 데이터로부터 통찰력을 얻고 정확한 근거 기반의 답변을 원한다면 LlamaIndex가 정답입니다.

2026년 현재, 두 프레임워크는 서로의 장점을 흡수하며 통합되는 추세입니다. 본 가이드에서 다룬 설계 패턴을 바탕으로 사용자의 비즈니스 가치를 극대화할 수 있는 강력한 AI 에이전트를 구축해 보시기 바랍니다.

내용 출처 및 참고 문헌

  • LangChain Documentation 
  • LlamaIndex Documentation 
  • "Generative AI with LangChain" by Ben Auffarth.
  • OpenAI Cookbook: "Techniques to improve reliability of agents".
728x90