AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

딥 에이전트 구축

MongoDB Atlas Agent Engine SDK는 딥 에이전트 구축을 위한 개발자 대면 표면을 제공합니다. 딥 에이전트는 파일 시스템 작업, 셸 실행 및 다단계 추론이 가능한 AI 에이전트로, 모든 입력과 출력은 플랫폼의 감사를 거친 보안 계층을 통해 라우팅됩니다.

팁

딥 에이전트에 대해 자세히 학습 LangChain 문서에서 딥 에이전트 개요를 참조하세요.

에이전트 작성자는 세 가지 프라이머리 SDK 구성 요소와 상호 작용 .

딥 에이전트 빌드 전에 pyproject.toml 파일 에 deepagents 종속성을 추가하고 agent.yaml 파일 에서 딥 에이전트 기능을 활성화 해야 합니다.

딥 에이전트 생성하려면 프로젝트의 pyproject.toml 파일 에 deepagents 패키지 추가합니다.

dependencies = [
"deepagents==0.5.3",
... # other dependencies
]

deepagents 패키지 agent-engine-sdk-langgraph 패키지 의 선택적 종속성입니다. SDK는 앱 App.deep_agent() 함수를 호출할 때만 deepagents 패키지 가져오므로, 프로젝트 에서 명시적으로 선언해야 합니다.

agent.yaml 파일 에 다음 플래그를 추가하여 agent.yaml에서 심층 에이전트 기능을 활성화합니다.

features:
deep_agent: true
... # other features

이 플래그는 도구 샌드박스에 딥 에이전트가 의존하는 내장 파일 시스템 및 셸 핸들러를 등록하도록 지시합니다.

참고

TypeScript 에이전트는 동일한 features.deep_agent: true 설정이 필요한 동등한 app.deepAgent() 팩토리 메서드를 사용하여 딥 에이전트를 빌드 . 이 페이지의 예제에서는 Python 사용합니다.

App.deep_agent() 메서드는 에이전트 작성자의 프라이머리 진입 점 입니다. 플랫폼의 gRPC 및 SSE 스트리밍 경로, MongoDB 지원 체크포인트, 샌드박스 도구 실행을 위한 AgentEngineToolSandboxBackend 클래스와 통합되는 컴파일된 LangChain 그래프 생성합니다.

이 메서드는 다음 작업을 자동으로 수행합니다.

  • AgentEngineToolSandboxBackend 클래스를 기본값 샌드박스로 사용합니다.

  • SecureWrappedLLM 클래스의 최상위 LLM 및 모든 SubAgent 모델을 래핑하여 플랫폼의 감사된 LLM 경로를 시행하다 .

  • 지속형 실행 상태 위한 MongoDB 체크포인터를 스레드합니다.

  • 기존 gRPC/SSE 스트리밍 경로 및 POST /api/v1/executions/{execution_id}/resume API 요청 과 호환되는 컴파일된 그래프 반환합니다.

App.deep_agent() 메서드는 다음 매개 변수를 허용합니다:

Parameter
유형
필수 사항
설명

llm

LLM

예

에이전트의 프라이머리 모델로 사용할 언어 모델 인스턴스 . 플랫폼은 이를 SecureWrappedLLM 클래스에 자동으로 래핑합니다.

tools

목록

No

에이전트 에서 사용할 수 있는 LangChain 호환 도구 객체의 목록입니다. LangChain 도구에 대한 자세한 학습 은 LangChain 설명서를 참조하세요.

subagents

목록

No

SubAgent 클래스 인스턴스 목록. 각 SubAgent.model 속성은 문자열이 아닌 LLM 인스턴스 여야 합니다. 문자열 기반 모델 참조는 SecureWrappedLLM 클래스를 우회하며 유효성 검사 검사 시 거부됩니다.

skills

list[str]

No

스킬 디렉토리 경로 목록입니다. 각 디렉토리 유효한 SKILL.md 파일 포함되어 있어야 합니다. 각 경로는 pathlib.Path 객체 아닌 str이어야 합니다. SKILL.md 파일에 대해 자세히 학습 스킬 매니페스트 섹션을 참조하세요.

system_prompt

문자열

No

딥 에이전트 에 대한 사용자 지정 시스템 지침입니다. 생략하면 에이전트 deepagents 라이브러리의 기본값 프롬프트를 사용합니다.

middleware

목록

No

추가 미들웨어는 SDK의 기본값 중단 복구 및 지속형 중첩 미들웨어 이후에 실행됩니다.

checkpointer

any

No

상태 지속성을 위한 LangGraph 체크포인터. 기본값은 app.checkpointer()입니다. None을 전달하여 체크포인트를 비활성화하거나 BaseCheckpointSaver 인스턴스 전달하여 사용자 지정 체크포인트를 사용합니다.

store

any

No

스킬 및 기타 공유 데이터에 사용되는 LangGraph 저장 .

backend

any

No

파일 시스템 및 셸 작업을 위한 백엔드입니다. 기본값은 AgentEngineToolSandboxBackend 클래스입니다. 사용자 지정 백엔드 플랫폼의 감사된 I/O 경로를 우회합니다. 자세한 학습 은 도구 샌드박스 백엔드를 참조하세요.

스킬을 호출하는 딥 에이전트 생성하려면 App.deep_agent() 메서드의 skills 매개변수에 스킬 디렉토리 경로 목록을 전달합니다.

다음 예시 @app.entrypoint-decorated 함수를 수정하여 단일 도구와 스킬 디렉토리 가진 딥 에이전트 생성합니다.

from agent_engine_sdk_langgraph import App
app = App()
@app.entrypoint
def build_agent():
return app.deep_agent(
llm=my_llm,
tools=[my_tool],
subagents=[],
skills=["skills/security-review"],
)

중요

LLM 인스턴스 app.deep_agent() 메서드에 전달하기 전에 app.llm() 메서드로 래핑하지 마세요. deep_agent() 메서드는 내부적으로 SecureWrappedLLM 클래스의 LLM을 래핑합니다. app.llm() 메서드를 먼저 호출하면 __default__ LLM ID 가 두 번 등록되고 에이전트 시작되지 않습니다.

초기화 시 App.deep_agent() 메서드는 다음 검사를 실행하고 둘 중 하나가 실패하면 오류를 발생시킵니다.

  • SubAgent 클래스에서 문자열 모델 참조 확인: 각 SubAgent.model 속성은 문자열이 아닌 LLM 인스턴스 여야 합니다. 문자열 모델 이름은 SecureWrappedLLM 클래스를 우회하며 플랫폼은 에이전트 거부합니다. 이 메서드는 최대 10 수준의 중첩을 확인합니다.

  • 수동으로 제공한 backend 매개변수를 확인합니다: 플랫폼은 샌드박스를 소유하고 AgentEngineToolSandboxBackend 클래스를 백엔드 로 적용합니다. 사용자 지정 백엔드 제공하면 플랫폼의 샌드박스를 우회하고 플랫폼은 백엔드 거부합니다.

참고

App.deep_agent() 메서드는 LangChain deepagents 라이브러리가 에이전트 그래프 컴파일하기 전에 앞의 검사를 실행합니다. 두 가지 검사 중 하나라도 실패하면 에이전트 시작되지 않습니다.

이러한 검사 외에도 App.deep_agent() 메서드는 deepagents 라이브러리가 그래프 를 컴파일하기 전에 llm 매개변수에 전달된 LLM 인스턴스 와 SecureWrappedLLM 클래스의 모든 SubAgent.model 속성을 자동으로 래핑합니다.

스킬은 딥 에이전트 에 제공하는 재사용 가능한 지침 세트입니다. 각 스킬 자체 하위 디렉토리에 있으며 YAML 프론트매터가 포함된 SKILL.md 파일 로 설명됩니다. 이 플랫폼은 에이전트 스타트업 시 전면 자료를 읽고 스킬 검증하고 LLM에 노출합니다.

스킬은 다음 디렉토리 구조 내에 있으며, 여기서 디렉토리 이름은 프런트매터의 name 필드 일치합니다.

<workspace-directory>/
└── skills/
└── <skill-name>/
└── SKILL.md

skills 매개변수에 전달된 스킬 경로는 에이전트의 작업 공간 디렉토리 agent.yaml 파일 포함된 디렉토리 기준으로 합니다.

유효한 SKILL.md 파일 YAML 프론트매터로 시작해야 합니다. 다음 예시 는 유효한 SKILL.md 파일 의 템플릿입니다.

---
name: <skill-name>
description: <one-sentence description for LLM discovery>
---
# Skill Title
Detailed instructions or reference material for the agent...

YAML 프런트매터에 다음 필드를 포함해야 합니다.

필드
필수 사항
설명

name

예

스킬 의 이름입니다. 상위 디렉토리 이름과 정확히 일치해야 합니다.

description

예

LLM은 이 짧은 설명을 사용하여 스킬 호출할 시기를 결정합니다. description 이 누락된 스킬은 플랫폼에서 에이전트 스타트업 시 경고와 함께 건너 에이전트 사용할 수 없습니다.

참고

SKILL.md 파일 유효한 UTF-8 문자만 포함되어야 합니다. 플랫폼에서 UTF-8로 읽을 수 없는 파일은 에이전트 스타트업 시 충돌을 일으키지 않고 건너뜁니다.

다음 예시 스킬 디렉토리 경로 목록을 App.deep_agent() 메서드에 전달합니다:

agent = app.deep_agent(
llm=my_llm,
tools=[],
skills=["skills/security-review", "skills/style-guide"],
)

AgentEngineToolSandboxBackend 클래스는 SandboxBackendProtocol 프로토콜 구현합니다. 백엔드 SecureToolWrapper 클래스를 사용하여 플랫폼의 도구 샌드박스 핸들러를 통해 딥 에이전트 그래프 의 모든 파일 시스템 및 셸 도구 호출을 라우팅합니다. App.deep_agent() 메서드가 자동으로 삽입하므로 AgentEngineToolSandboxBackend 클래스를 직접 인스턴스화하거나 구성할 필요가 없습니다.

참고

AgentEngineToolSandboxBackend 클래스는 선택적 종속성이며 패키지 루트에서 다시 내보내지지 않습니다. 직접 참조해야 하는 경우 명시적으로 가져옵니다. 다음 예시 클래스를 가져오는 방법을 보여 줍니다.

from agent_engine_sdk_langgraph.backends.tool_sandbox import AgentEngineToolSandboxBackend

AgentEngineToolSandboxBackend 클래스 작업은 런타임 시 에이전트 에 의해 자동으로 호출되며 에이전트 작성자가 직접 호출하지 않습니다. AgentEngineToolSandboxBackend 클래스는 다음 작업을 지원하며, 각 작업은 해당 filesystem_* 또는 shell_execute 도구로 LLM에 노출됩니다.

작업
설명

ls

지정된 경로에 있는 파일 및 디렉토리를 나열합니다.

read

파일 의 내용을 읽습니다.

write

파일 에 콘텐츠 쓰기

edit

기존 파일 에 편집 내용을 적용합니다.

glob

glob 패턴 과 일치하는 파일 찾기

grep

파일 내에서 패턴 검색

execute

샌드박스에서 셸 명령을 실행합니다.

download_files

샌드박스에서 호출자에게 파일 다운로드

백엔드 모든 오류를 분류한 후 에이전트 그래프 에 표시하여 에이전트 작업을 다시 시도할지 여부를 결정할 수 있도록 합니다. 다음 표에는 가능한 오류 분류와 그 원인이 나와 있습니다.

분류
원인 예시

재시도 가능

일시적인 네트워크 또는 ConnectionError, OSError 또는 TimeoutError와 같은 입력 및 출력 오류입니다.

재시도 불가능

PolicyDeniedException: 플랫폼의 보안 정책에 따라 작업이 거부되었습니다. 에이전트 작업을 다시 시도할 수 없습니다.

RuntimeError: 백엔드 로컬 스크립트 나 테스트와 같은 유효한 에이전트 샌드박스 컨텍스트 외부에서 사용되었습니다. 이 오류는 잘못된 구성으로 인한 무한 재시도 루프를 방지합니다.

플랫폼은 오류 메시지가 에이전트 에 표시되기 전에 모든 내부 작업 공간 경로를 제거합니다.

딥 에이전트는 샌드박스 파일 시스템 내에서 작동합니다. 샌드박스에는 다음과 같은 계층이 포함되어 있습니다.

  • 쓰기 가능한 작업 공간(WORKSPACE_DIR): 기본값은 /tmp/agent-workspace 디렉토리 입니다. 에이전트 샌드박스 세션 중에 샌드박스는 WORKSPACE_DIR/.sessions/<session-hash>/ 경로에 대한 에이전트의 액세스 제한하여 동시 세션이 격리된 상태로 유지되도록 합니다. 생성된 파일에 대해 상대 경로 또는 /tmp 디렉토리 아래의 경로를 사용하세요.

  • 읽기 전용 리소스 루트(READONLY_RESOURCE_ROOTS): AGENTIC_AGENT_WORKDIR 환경 변수와 skills/ 디렉토리 로 채워집니다. 이 계층을 통해 에이전트 세션별 작업 공간 내부 및 외부의 SKILL.md 파일을 읽을 수 있으므로 필요에 따라 스킬 콘텐츠를 로드할 수 있습니다.

중요

WORKSPACE_DIR 환경 변수를 에이전트 소스 디렉토리(예: /app 디렉토리) 로 설정하다 하지 마세요. WORKSPACE_DIR 변수를 에이전트 소스 디렉토리 로 설정하다 하면 에이전트 런타임에 스킬 파일에 액세스할 수 없게 만들고 Path escapes workspace sandbox 오류를 발생시킵니다.

작업 공간 디렉토리 변경하려면 AGENTIC_AGENT_WORKDIR 환경 변수를 대신 설정하다 :

# .env
AGENTIC_AGENT_WORKDIR=/app
# Do NOT add: WORKSPACE_DIR=/app