본문으로 건너뛰기
Kreath Archive
TechProjectsBooksAbout
TechProjectsBooksAbout

내비게이션

  • Tech
  • Projects
  • Books
  • About
  • Tags

카테고리

  • AI / ML
  • 웹 개발
  • 프로그래밍
  • 개발 도구

연결

  • GitHub
  • Email
  • RSS
© 2026 Kreath Archive. All rights reserved.Built with Next.js + MDX
홈TechProjectsBooksAbout
//
  1. 홈
  2. 테크
  3. 9장: 에이전트 프레임워크 비교 - LangGraph, CrewAI, OpenAI Agents SDK
2026년 2월 2일·AI / ML·

9장: 에이전트 프레임워크 비교 - LangGraph, CrewAI, OpenAI Agents SDK

주요 AI 에이전트 프레임워크의 아키텍처, 장단점, 사용 사례를 비교하고 프로젝트에 적합한 프레임워크를 선택하는 기준을 제시합니다.

16분474자7개 섹션
ai-agentllmarchitectureorchestration
공유
ai-agent-patterns9 / 10
12345678910
이전8장: 가드레일과 안전성 - 에이전트를 신뢰할 수 있게 만들기다음10장: 실전 프로젝트 - 리서치 에이전트 시스템 구축

프레임워크가 필요한 시점

지금까지 이 시리즈에서는 에이전트 패턴을 직접 코드로 구현했습니다. 이 접근 방식은 원리를 이해하는 데 적합하지만, 프로덕션 수준의 에이전트를 구축하려면 상태 관리, 내결함성, 관찰 가능성(Observability) 등 많은 부가 기능이 필요합니다.

Anthropic의 "Building Effective Agents" 가이드는 "가능한 한 단순하게 시작하고, 필요할 때만 복잡성을 추가하라"고 권고합니다. 프레임워크도 마찬가지입니다. 단순한 에이전트라면 API를 직접 호출하는 것이 낫고, 복잡한 멀티 에이전트 시스템이라면 프레임워크의 도움을 받는 것이 현명합니다.

2026년 현재, 에이전트 프레임워크 생태계에는 다양한 선택지가 있습니다. 이 장에서는 가장 널리 사용되는 세 가지를 깊이 비교합니다.

LangGraph

LangGraph는 LangChain 팀이 개발한 에이전트 오케스트레이션 프레임워크입니다. 이름에서 알 수 있듯 그래프 기반 아키텍처가 핵심 특징입니다.

핵심 개념

LangGraph는 에이전트의 실행 흐름을 방향성 그래프(Directed Graph)로 표현합니다. 그래프의 노드는 작업 단위이고, 엣지는 노드 간 전환 조건입니다.

langgraph_basic.py
python
from langgraph.graph import StateGraph, START, END
from typing import TypedDict, Annotated
from operator import add
 
class AgentState(TypedDict):
    messages: Annotated[list, add]
    current_step: str
    results: dict
 
def research_node(state: AgentState) -> dict:
    """연구 단계를 수행하는 노드입니다."""
    # 연구 로직 구현
    research_result = perform_research(state["messages"][-1])
    return {
        "messages": [{"role": "assistant", "content": research_result}],
        "results": {"research": research_result},
    }
 
def analysis_node(state: AgentState) -> dict:
    """분석 단계를 수행하는 노드입니다."""
    research_data = state["results"].get("research", "")
    analysis = perform_analysis(research_data)
    return {
        "messages": [{"role": "assistant", "content": analysis}],
        "results": {"analysis": analysis},
    }
 
def should_continue(state: AgentState) -> str:
    """다음 단계를 결정하는 조건부 엣지입니다."""
    if needs_more_research(state):
        return "research"
    return "analysis"
 
# 그래프 구성
graph = StateGraph(AgentState)
graph.add_node("research", research_node)
graph.add_node("analysis", analysis_node)
 
graph.add_edge(START, "research")
graph.add_conditional_edges("research", should_continue)
graph.add_edge("analysis", END)
 
app = graph.compile()

LangGraph의 강점

상태 관리: TypedDict 기반의 명시적 상태 스키마로 타입 안전성을 보장합니다. Reducer 패턴을 통해 상태 업데이트를 선언적으로 관리합니다.

체크포인팅: 실행 상태를 자동으로 저장하고 복원할 수 있습니다. 장시간 실행되는 에이전트나 중단 후 재개가 필요한 워크플로우에 유용합니다.

langgraph_checkpoint.py
python
from langgraph.checkpoint.memory import MemorySaver
 
checkpointer = MemorySaver()
app = graph.compile(checkpointer=checkpointer)
 
# 실행 시 thread_id로 세션을 구분
config = {"configurable": {"thread_id": "user-session-1"}}
result = app.invoke(initial_state, config)
 
# 나중에 같은 thread_id로 이어서 실행
result = app.invoke(new_input, config)

순환 그래프 지원: 에이전트 루프처럼 동일한 노드를 반복 방문하는 순환 구조를 자연스럽게 표현할 수 있습니다. 이는 다른 프레임워크에서는 지원하기 어려운 기능입니다.

인간 참여(Human-in-the-Loop): 특정 노드에서 실행을 중단하고 사용자 승인을 기다리는 패턴을 기본 지원합니다.

langgraph_hitl.py
python
from langgraph.graph import StateGraph
from langgraph.types import interrupt
 
def sensitive_action_node(state: AgentState) -> dict:
    """민감한 작업 전 사용자 확인을 요청합니다."""
    action = state["pending_action"]
 
    # 실행을 중단하고 사용자 확인을 요청
    approval = interrupt(
        f"다음 작업을 실행할까요?\n{action}\n승인(yes) 또는 거부(no)"
    )
 
    if approval == "yes":
        result = execute_action(action)
        return {"results": {"action": result}}
    else:
        return {"results": {"action": "사용자가 작업을 거부했습니다."}}

LangGraph 사용이 적합한 경우

  • 복잡한 조건부 분기가 있는 워크플로우
  • 장시간 실행되는 에이전트 (체크포인팅 필요)
  • 순환 구조가 필요한 반복적 작업
  • 사용자 승인이 포함된 워크플로우

CrewAI

CrewAI는 역할 기반 멀티 에이전트 프레임워크입니다. 인간 조직의 팀 구조에서 영감을 받아, 에이전트에게 역할(Role), 목표(Goal), 배경 이야기(Backstory)를 부여합니다.

핵심 개념

CrewAI의 세 가지 핵심 개념은 Agent(에이전트), Task(작업), Crew(팀)입니다.

crewai_basic.py
python
from crewai import Agent, Task, Crew, Process
 
# 에이전트 정의
researcher = Agent(
    role="기술 리서처",
    goal="주어진 주제에 대한 최신 기술 동향을 조사한다",
    backstory=(
        "당신은 10년 경력의 기술 리서처입니다. "
        "빠르게 변하는 기술 트렌드를 정확하게 파악하는 것이 "
        "당신의 전문 분야입니다."
    ),
    verbose=True,
    allow_delegation=False,
)
 
writer = Agent(
    role="기술 작가",
    goal="조사 결과를 바탕으로 명확하고 깊이 있는 기술 보고서를 작성한다",
    backstory=(
        "당신은 복잡한 기술 개념을 누구나 이해할 수 있는 "
        "언어로 전달하는 기술 작가입니다."
    ),
    verbose=True,
    allow_delegation=False,
)
 
# 작업 정의
research_task = Task(
    description=(
        "2026년 AI 에이전트 프레임워크의 현황을 조사하십시오. "
        "주요 프레임워크의 특징, 장단점, 사용 사례를 포함해야 합니다."
    ),
    expected_output="프레임워크별 분석이 포함된 조사 보고서",
    agent=researcher,
)
 
writing_task = Task(
    description=(
        "조사 결과를 바탕으로 기업 의사결정자를 위한 "
        "프레임워크 선택 가이드를 작성하십시오."
    ),
    expected_output="프레임워크 비교표와 선택 기준이 포함된 보고서",
    agent=writer,
)
 
# 팀 구성 및 실행
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, writing_task],
    process=Process.sequential,
    verbose=True,
)
 
result = crew.kickoff()

CrewAI의 강점

직관적인 설계: 역할, 목표, 배경 이야기라는 인간 친화적인 개념으로 에이전트를 정의합니다. 코드를 읽기만 해도 각 에이전트가 무엇을 하는지 이해할 수 있습니다.

위임 메커니즘: allow_delegation=True로 설정하면 에이전트가 다른 에이전트에게 작업을 위임할 수 있습니다. 감독자 패턴을 별도 구현 없이 사용할 수 있습니다.

프로세스 유형: Sequential(순차), Hierarchical(계층), Consensual(합의) 등 다양한 실행 패턴을 선언적으로 선택할 수 있습니다.

crewai_hierarchical.py
python
# 계층적 프로세스: 매니저가 작업을 자동으로 분배
crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[complex_task],
    process=Process.hierarchical,
    manager_llm="claude-sonnet-4-20250514",
)

CrewAI 사용이 적합한 경우

  • 역할이 명확한 팀 기반 워크플로우
  • 빠른 프로토타이핑이 필요한 경우
  • 비개발자도 에이전트 구성에 참여해야 하는 경우
  • 순차적 또는 계층적 실행이 적합한 작업

OpenAI Agents SDK

OpenAI가 2025년 3월에 출시한 Agents SDK는 가볍고 실용적인 에이전트 프레임워크입니다. OpenAI의 모델과 긴밀하게 통합되어 있습니다.

핵심 개념

openai_agents_basic.py
python
from agents import Agent, Runner, function_tool
 
@function_tool
def search_web(query: str) -> str:
    """웹에서 정보를 검색합니다."""
    return f"검색 결과: {query}"
 
@function_tool
def calculate(expression: str) -> str:
    """수학 계산을 수행합니다."""
    return str(eval(expression))
 
agent = Agent(
    name="research_assistant",
    instructions=(
        "당신은 연구 보조 에이전트입니다. "
        "사용자의 질문에 대해 웹 검색과 계산을 활용하여 "
        "정확한 답변을 제공하십시오."
    ),
    tools=[search_web, calculate],
)
 
result = Runner.run_sync(agent, "파이썬 3.13의 주요 변경사항을 알려 주세요.")
print(result.final_output)

Handoff 패턴

Agents SDK의 고유한 기능인 핸드오프(Handoff)는 에이전트 간 제어권 이전을 단순화합니다.

openai_handoff.py
python
from agents import Agent, Runner
 
triage_agent = Agent(
    name="triage",
    instructions="사용자의 질문을 분류하여 적절한 전문가에게 전달합니다.",
    handoffs=["tech_expert", "business_expert"],
)
 
tech_expert = Agent(
    name="tech_expert",
    instructions="기술적인 질문에 대해 상세하게 답변합니다.",
    handoffs=["triage"],  # 필요시 다시 분류 에이전트로
)
 
business_expert = Agent(
    name="business_expert",
    instructions="비즈니스 관련 질문에 대해 답변합니다.",
    handoffs=["triage"],
)
 
result = Runner.run_sync(
    triage_agent,
    "AI 에이전트를 도입하면 ROI가 어떻게 되나요?"
)

Agents SDK의 강점

간결함: 데코레이터 기반의 도구 정의, 선언적 핸드오프 등 최소한의 코드로 에이전트를 구현합니다.

추적 기능: 내장된 추적(Tracing) 기능으로 에이전트의 실행 과정을 시각적으로 확인할 수 있습니다.

가드레일 기본 지원: 입출력 가드레일을 프레임워크 수준에서 지원합니다.

Agents SDK 사용이 적합한 경우

  • OpenAI 모델을 주로 사용하는 경우
  • 에이전트 간 제어권 이전이 중요한 고객 서비스형 에이전트
  • 빠른 개발과 간결한 코드가 중요한 경우

프레임워크 비교 요약

기준LangGraphCrewAIAgents SDK
아키텍처그래프 기반역할 기반 팀에이전트 + 핸드오프
학습 곡선높음낮음낮음
유연성매우 높음보통보통
상태 관리내장 (체크포인팅)기본적기본적
순환 워크플로우네이티브 지원제한적핸드오프로 가능
모델 호환성모든 모델모든 모델OpenAI 중심
멀티 에이전트유연한 토폴로지팀 기반핸드오프 기반
프로덕션 준비도높음보통보통
커뮤니티대규모성장 중성장 중

선택 가이드

의사결정 트리

Tip

프레임워크 선택에 정답은 없습니다. 중요한 것은 프로젝트의 현재 복잡도와 미래 확장 가능성을 고려하는 것입니다. 단순한 에이전트라면 프레임워크 없이 시작하고, 복잡해지는 시점에 도입하는 것이 가장 실용적인 접근입니다.

프레임워크 없이 시작해도 되는 경우

Anthropic의 권장 사항처럼, 다음 경우에는 프레임워크 없이 직접 구현하는 것이 더 나을 수 있습니다.

  • 단일 에이전트, 소수의 도구
  • 단순한 워크플로우 (분기 없는 순차 실행)
  • 프레임워크의 추상화가 오히려 디버깅을 방해하는 경우
  • LLM API 호출을 세밀하게 제어해야 하는 경우

다음 장 미리보기

10장에서는 이 시리즈에서 배운 모든 패턴을 결합하여 실전 에이전트 시스템을 처음부터 구축합니다. 요구사항 분석부터 설계, 구현, 테스트, 배포까지 전체 과정을 다룹니다.

이 글이 도움이 되셨나요?

관련 주제 더 보기

#ai-agent#llm#architecture#orchestration

관련 글

AI / ML

10장: 실전 프로젝트 - 리서치 에이전트 시스템 구축

이 시리즈에서 배운 모든 패턴을 결합하여 실제 사용 가능한 리서치 에이전트 시스템을 설계하고 구축합니다.

2026년 2월 4일·21분
AI / ML

8장: 가드레일과 안전성 - 에이전트를 신뢰할 수 있게 만들기

AI 에이전트의 행동 제어, 입출력 검증, 오류 처리, 비용 관리 등 프로덕션 환경에서의 안전성 확보 전략을 다룹니다.

2026년 1월 31일·16분
AI / ML

7장: 메모리 시스템 - 에이전트의 기억과 학습

AI 에이전트의 단기, 장기 메모리 아키텍처를 이해하고, RAG 통합과 대화 히스토리 관리 전략을 코드로 구현합니다.

2026년 1월 29일·16분
이전 글8장: 가드레일과 안전성 - 에이전트를 신뢰할 수 있게 만들기
다음 글10장: 실전 프로젝트 - 리서치 에이전트 시스템 구축

댓글

목차

약 16분 남음
  • 프레임워크가 필요한 시점
  • LangGraph
    • 핵심 개념
    • LangGraph의 강점
    • LangGraph 사용이 적합한 경우
  • CrewAI
    • 핵심 개념
    • CrewAI의 강점
    • CrewAI 사용이 적합한 경우
  • OpenAI Agents SDK
    • 핵심 개념
    • Handoff 패턴
    • Agents SDK의 강점
    • Agents SDK 사용이 적합한 경우
  • 프레임워크 비교 요약
  • 선택 가이드
    • 의사결정 트리
    • 프레임워크 없이 시작해도 되는 경우
  • 다음 장 미리보기