KeiStory

반응형

[Deep Agents] 4. backend - Sandbox

 

이번 시간은 직접 코드를 실행하게 만들수 있는 Sandbox 에 대해서 알아봅니다.

 

왜 Sandbox가 필요한가?

지금까지 만든 에이전트는 질문 답변, 검색, 분석등의 기능 보조를 했습니다.

Sandbox 를 이용하면  코드 생성 후 실행, 파일 생성, 테스트 실행, 자동 프로젝트 구성 등이 가능해집니다.

즉, 단순히 “생각하는 AI”가 아니라 실제로 작업을 수행하는 AI 가 됩니다.

에이전트가 직접 실행하는 게 아니라, Sandbox를 통해 실행하게됩니다.

 

modal

이번 예제에서는 modal 을 이용합니다. modal 을 코드만 작성하면 서버, GPU, 배포까지 자동으로 해주는 서버리스 AI 실행 플랫폼입니다.

아래 명령으로 설치후 

pip install langchain-modal

아래 명령으로 token 을 발급받습니다.

modal token new

위 명령을 실행하면 modal.com 사이트로 이동하는데 구글 계정으로가입하면됩니다.

가입이 끝나면 아래 명령으로 token 정보가 표시되면 됩니다.

modal token info

 

추가 패키지 설치

pip install deepagents tavily-python
pip install langchain-openai
pip install python-dotenv

 

예시코드

# 필요한 패키지 설치
# pip install deepagents tavily-python 
# pip install langchain-openai
# pip install python-dotenv
# pip install langchain-modal

import modal  # Modal 샌드박스 실행용
from deepagents import create_deep_agent  # Deep Agent 생성 함수
from dotenv import load_dotenv  # .env 파일 로드
from langchain_modal import ModalSandbox  # Modal 샌드박스를 agent backend로 사용하기 위한 클래스

# .env 파일에 저장된 환경변수 불러오기
# 예: OPENAI_API_KEY 등
load_dotenv()

# Modal 앱 조회
# "your-app" 이름의 앱이 없으면 새로 생성
app = modal.App.lookup("your-app", create_if_missing=True)

# 코드 실행용 Modal 샌드박스 생성
modal_sandbox = modal.Sandbox.create(app=app)

# 생성한 샌드박스를 Deep Agent가 사용할 backend 형태로 감싸기
backend = ModalSandbox(sandbox=modal_sandbox)

# Deep Agent 생성
agent = create_deep_agent(
    model="openai:gpt-5.4",  # 사용할 모델 지정
    system_prompt="You are a Python coding assistant with sandbox access.",  # 에이전트 역할 설명
    backend=backend,  # 코드 실행/파일 생성 등을 수행할 샌드박스 backend 연결
)

try:
    # 에이전트에게 사용자 요청 전달
    # 여기서는 "작은 Python 패키지를 만들고 pytest 실행" 요청
    result = agent.invoke(
        {
            "messages": [
                {
                    "role": "user",
                    "content": "Create a small Python package and run pytest",
                }
            ]
        }
    )

    # 에이전트의 마지막 응답 출력
    print(result["messages"][-1].content)

    # 샌드박스 내부에서 생성된 파일 목록 확인
    # /root/smallpkg 디렉터리 아래 최대 3단계까지 파일 검색 후 정렬
    proc = modal_sandbox.exec(
        "bash", "-lc",
        "find /root/smallpkg -maxdepth 3 -type f | sort"
    )

    # 위 명령의 출력 결과 표시
    print(proc.stdout.read())

finally:
    # 예외 발생 여부와 관계없이 샌드박스 종료
    # 사용한 리소스를 정리하기 위한 마무리 작업
    modal_sandbox.terminate()

위 코드를 보면 알수 있듯이 modal 을 backend 로 정의해서 backend 에서 코드가 실행되게 됩니다.

"Create a small Python package and run pytest"

위 질문은 코드를 만들어 실행하라고 했습니다.

내부 흐름은 아래와 같습니다.

1. 에이전트가 요청 해석
2. 코드 구조 설계
3. 파일 생성
4. 테스트 코드 작성
5. pytest 실행
6. 결과 확인
 
 

결과

pytest 결과 분석 : Result: 3 passed in 0.05s

  • 테스트 3개 실행됨
  • 전부 성공 (FAIL 없음)
  • 실행 시간 매우 짧음

테스트 코드도 정상적으로 작성됐다는 뜻입니다.

modal.com 에 가보면 app 이 하나 생성된 걸 알수 있습니다.

 

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band