Skip to main content

Deep Agents

Deep Agents는 LangGraph 플랫폼에서 제공하는 자율적으로 장시간 실행되는 에이전트 프레임워크입니다. 복잡한 작업을 독립적으로 수행하고, 필요에 따라 하위 에이전트를 생성하며, 격리된 환경에서 코드를 실행할 수 있습니다.

핵심 개념

개념설명
Deep Agent자율적으로 작업을 수행하는 장기 실행 에이전트
Skills에이전트가 사용할 수 있는 도구와 능력 세트
Subagents복잡한 작업을 위해 생성하는 하위 에이전트
Sandbox코드 실행을 위한 격리된 환경
Backend에이전트 실행을 관리하는 인프라

일반 Agent vs Deep Agent

항목일반 AgentDeep Agent
실행 시간초~분분~시간
실행 환경로컬 프로세스격리된 Sandbox
하위 작업도구 호출Subagent 생성
상태 관리체크포인터내장 Persistence
코드 실행제한적격리 환경에서 자유롭게
적합한 작업질문 답변, 검색코드 생성, 데이터 분석, 보고서 작성

Quickstart

from langgraph.prebuilt import create_react_agent
from langchain.chat_models import init_chat_model

llm = init_chat_model("gpt-4o", temperature=0)

# Deep Agent 스타일의 ReAct 에이전트 생성
agent = create_react_agent(
    model=llm,
    tools=tools,
    prompt="당신은 연구 보조 AI입니다. 주어진 도구를 활용하여 작업을 완수하세요.",
)

# 실행
result = agent.invoke({
    "messages": [HumanMessage(content="RAG 아키텍처 비교 보고서를 작성해줘")]
})

Skills (능력)

Skills는 에이전트에게 부여하는 도구와 능력의 집합입니다.
from langchain_core.tools import tool

@tool
def read_file(path: str) -> str:
    """파일을 읽어 내용을 반환합니다."""
    with open(path, "r") as f:
        return f.read()

@tool
def write_file(path: str, content: str) -> str:
    """파일에 내용을 작성합니다."""
    with open(path, "w") as f:
        f.write(content)
    return f"파일 저장 완료: {path}"

@tool
def run_python(code: str) -> str:
    """Python 코드를 실행합니다."""
    # 프로덕션에서는 Sandbox에서 실행
    import subprocess
    result = subprocess.run(
        ["python", "-c", code],
        capture_output=True, text=True, timeout=30,
    )
    return result.stdout or result.stderr

# Skills 구성
skills = [read_file, write_file, run_python, web_search]

Skill 카테고리

카테고리예시설명
정보 수집웹 검색, 문서 검색, API 호출외부 정보 획득
파일 조작읽기, 쓰기, 편집파일 시스템 작업
코드 실행Python, Shell계산, 데이터 처리
커뮤니케이션이메일, 슬랙외부 알림

Subagents (하위 에이전트)

복잡한 작업을 하위 에이전트에게 위임합니다.
from langgraph.prebuilt import create_react_agent

# 전문 하위 에이전트 생성
researcher = create_react_agent(
    model=llm,
    tools=[web_search, read_file],
    prompt="데이터 수집 전문가. 요청된 정보를 수집하세요.",
)

analyst = create_react_agent(
    model=llm,
    tools=[run_python],
    prompt="데이터 분석 전문가. 수집된 데이터를 분석하세요.",
)

# 메인 에이전트에서 하위 에이전트를 도구로 활용
@tool
def delegate_research(query: str) -> str:
    """연구 에이전트에게 정보 수집을 위임합니다."""
    result = researcher.invoke({
        "messages": [HumanMessage(content=query)]
    })
    return result["messages"][-1].content

Backends & Sandboxes

Deep Agent의 코드 실행은 격리된 Sandbox에서 수행됩니다.
Backend격리 수준속도적합한 환경
Docker높음보통프로덕션
E2B매우 높음빠름클라우드
Modal높음빠름GPU 작업
로컬없음매우 빠름개발
코드 실행 도구(run_python 등)는 프로덕션에서 반드시 격리된 Sandbox에서 실행하세요. 로컬 실행은 보안 위험이 있습니다.

사용 시나리오

시나리오Deep Agent 활용일반 Agent와 차이
코드 생성 + 실행Sandbox에서 안전한 코드 실행코드만 생성 (실행 불가)
데이터 분석 보고서수집 → 분석 → 시각화 → 보고서 자동화단순 질문 답변
멀티스텝 리서치Subagent로 병렬 조사 + 종합순차적 도구 호출
장기 실행 작업시간/일 단위 작업 지원시간 초과 위험
시작 추천: 먼저 create_react_agent로 기본 에이전트를 구축하세요. 작업이 복잡해지면 Subagent를 추가하고, 코드 실행이 필요하면 Sandbox를 연결합니다.

참고 자료

자료링크
LangGraph 공식 문서langchain-ai.github.io/langgraph
Deep Agents 가이드LangGraph Deep Agents
Agent 아키텍처Building Effective Agents