코드 인터프리터는 격리된 단기 실행 작업(스크립트 실행, 결과 반환, 모든 것 폐기)을 처리합니다. 에이전트 런타임은 영구 상태, 도구 접근, 브라우저 제어, 파일 I/O 또는 장기 실행 세션이 필요한 다단계 워크플로우를 처리합니다. 올바른 선택은 제품이 스스로를 설명하는 레이블이 아닌 워크로드에 달려 있습니다.
코드 인터프리터가 실제로 하는 일
코드 인터프리터는 언어 모델이 코드를 실행하고 출력을 확인할 수 있는 방법을 제공합니다. 모델이 Python 스크립트를 작성하면 인터프리터가 이를 격리된 환경에서 실행하고 결과를 텍스트, 파일 또는 렌더링된 차트로 반환합니다. 세션이 종료되면(또는 일부 구현에서는 턴 사이에도) 환경이 초기화됩니다. 아무것도 유지되지 않습니다.
이러한 설계는 의도적입니다. 코드 인터프리터는 연속성보다 안전성과 단순성을 우선시합니다. 격리 경계가 엄격한 이유는 필요한 작업이 오직 '이 코드를 실행하고, 이 결과를 반환하는 것’뿐이기 때문입니다.
실제 사용 범위는 작습니다: 샌드박스 처리된 Python(또는 유사) 런타임, 세션 범위의 파일 시스템, 필요한 경우 라이브러리나 외부 데이터를 가져올 수 있는 네트워크 접근, 그리고 아티팩트를 반환하는 메커니즘. 세션은 30초에서 10분 정도 지속될 수 있지만, 앱은 이를 근본적으로 일시적인 것으로 취급합니다.
이는 몇 가지 고가치 워크로드에 깔끔하게 매핑됩니다:
- 단일 스크립트 실행: 사용자가 모델에 계산을 요청하고 결과를 숫자, 표 또는 파일로 반환받습니다.
- 데이터 분석: CSV를 업로드하고 요약을 생성하며 차트를 만듭니다. 작업은 하나의 상호작용 내에서 시작되고 완료됩니다.
- 빠른 계산: 수학, 데이터 변환, 형식 변환 등 단일 코드 블록에 적합한 작업.
- 교육 환경: 각 연습이 격리되어 있고 세션 연속성에 대한 기대가 없는 경우.
코드 인터프리터가 잘 처리하지 못하는 것은 환경이 무언가를 기억하거나, 샌드박스 외부에서 조치를 취하거나, 사용자가 지켜보지 않는 동안에도 작업을 계속해야 하는 모든 것입니다.
에이전트 런타임이 추가하는 것
에이전트 런타임은 여러 단계에 걸쳐 있고, 외부 도구를 포함하며, 초 단위가 아닌 분 또는 시간 단위로 소요될 수 있는 작업을 위해 설계된 실행 환경입니다. 세션은 단계 사이에 폐기되지 않습니다. 에이전트가 목표를 향해 구축해 나가는 작업 공간입니다.
단순한 인터프리터에 비해 실질적으로 추가되는 기능은 상당합니다:
영구 작업 공간: 한 단계에서 작성된 파일은 다음 단계에도 그대로 있습니다. 코딩 에이전트는 브랜치를 만들고, 파일을 편집하고, 테스트를 실행하고, 실패를 수정하고, 커밋을 푸시할 수 있습니다. 모든 작업이 하나의 세션 내에서 처음부터 다시 시작하지 않고 이루어집니다.
설치된 패키지 및 시스템 도구: 에이전트 런타임은 일반적으로 종속성 설치, 셸 명령 실행, CLI 호출, 백그라운드 프로세스 시작, 그리고 잠긴 Python 샌드박스가 아닌 실제 개발 환경에서 작업하는 것을 지원합니다.
브라우저 및 웹 접근: 문서를 읽거나, 웹 앱과 상호작용하거나, 양식을 작성하거나, 워크플로우를 자동화해야 하는 에이전트는 실행 환경에 브라우저가 필요합니다. 코드 인터프리터는 지속적인 브라우저 세션이라는 개념이 없습니다.
파일 저장 및 아티팩트 지속성: 단일 실행보다 오래 지속되어야 하는 출력물(생성된 코드, 중간 데이터, 다운로드된 파일, 스크린샷)은 단계 간에, 경우에 따라 세션 간에 지속되는 파일 시스템이 필요합니다.
장기 실행 세션: 일부 에이전트 작업은 20분이 소요됩니다. 더 오래 걸리는 경우도 있습니다. 에이전트 런타임은 각 함수 호출에 대해 생성 및 제거되는 것이 아니라 워크플로우 기간 동안 활성 상태를 유지하도록 설계되었습니다.
다중 도구 오케스트레이션: 실제 에이전트 워크플로우는 여러 도구를 순차적으로 호출해야 합니다. 웹 검색 후 파일 편집, 테스트 실행, git 푸시. 에이전트 런타임은 이 체인을 안정적으로 조정하도록 구축되었습니다.
트레이드오프는 분명합니다: 에이전트 런타임은 운영이 더 복잡하고, 세션당 비용이 가벼운 인터프리터보다 높으며, 신중한 정책 구성이 필요한 더 넓은 공격 표면을 노출합니다. 인터프리터 모델에 적합한 워크로드에 이러한 모든 복잡성을 추가하는 것은 낭비입니다.
주요 결정 차원
아래 표는 실용적인 결정 기준을 보여줍니다. 대부분의 앱은 한쪽에 명확하게 속합니다. 하이브리드 패턴은 다음 섹션에서 다룹니다.
| 차원 | 코드 인터프리터 | 에이전트 런타임 |
|---|---|---|
| 세션 수명 | 초~분, 일시적 | 분~시간, 지속적 |
| 단계 간 상태 | 폐기 또는 제한적 | 유지 |
| 도구 접근 | 코드 실행만 | CLI, 브라우저, 파일 I/O, API, 하위 프로세스 |
| 패키지 설치 | 고정 이미지 또는 제한적 | 동적, 정책 제어 포함 |
| 브라우저/웹 상호작용 | 불가능 | 지원 |
| 파일 저장 | 세션 범위로만 제한 | 단계 간 지속 |
| 세션당 비용 | 낮음 | 높음 |
| 인프라 복잡성 | 낮음 | 높음 |
| 인간 개입 체크포인트 | 일반적이지 않음 | 일반적 — 배포, 병합, 외부 조치 전 승인 |
| 동시성 모델 | 많은 병렬 짧은 세션 | 적은 수의 긴 세션 |
세션 수명과 상태 요구 사항이 가장 빠른 필터입니다. 워크로드가 턴 사이에 초기화된다면 인터프리터를 사용하세요. 워크로드가 여러 턴에 걸쳐 목표를 향해 구축된다면 런타임을 사용하세요.
도구의 폭이 두 번째 필터입니다. 브라우저 제어, git 작업, CLI 도구, 외부 API 호출에는 런타임이 필요합니다. 유일한 도구가 코드 실행이라면 인터프리터로 충분합니다.
인간 개입 체크포인트는 거의 항상 런타임을 나타냅니다. 승인을 기다리기 위해 세션을 일시 중지한 후 재개하려면 지속 상태와 재개 가능한 세션이 필요합니다. 인터프리터는 이를 위해 설계되지 않았습니다.
코드 인터프리터가 가장 적합한 경우
코드 인터프리터는 실행이 제한적이고 자체적으로 완결될 때 올바른 선택입니다. 가장 강력한 사용 사례:
데이터 분석 도우미: 사용자가 파일을 업로드하고 질문을 하면 차트와 요약을 반환합니다. 모델이 출력을 반환하면 작업이 완료됩니다. 이전 단계의 기억에 의존하는 다음 단계가 없습니다.
수학 및 계산 도구: 계산기, 단위 변환기, 통계 분석, 수치 시뮬레이션. 이들은 단일 패스입니다. 입력이 들어가면 출력이 나옵니다.
자동화된 보고: 데이터 소스에서 보고서를 생성하고 이메일로 보내거나 저장하는 예약된 작업. 작업이 실행되고 아티팩트를 생성한 후 종료됩니다.
차트 및 시각화 생성: 모델이 matplotlib 또는 유사 코드를 작성하고 인터프리터가 실행하면 사용자는 이미지를 얻습니다. 지속적인 환경이 필요하지 않습니다.
샌드박스 처리된 LLM 도구 사용: 모델이 데이터 추론, 계산 검증, 출력 형식 지정 등을 위해 code_interpreter 도구가 필요하고 다른 것은 필요하지 않은 경우, 코드 인터프리터는 API가 설계된 그대로입니다.
이러한 시나리오에서 인터프리터의 매력은 실용적입니다. 세션당 비용이 저렴하고, 운영이 쉬우며, 보안이 간단합니다. 관리할 지속 상태가 없고, 추적할 세션 생애 주기가 없으며, 코드가 한 번 실행되고 환경이 사라지기 때문에 공격 표면이 좁습니다.
에이전트 런타임이 가장 적합한 경우
에이전트 런타임은 작업이 시간이 지남에 따라 여러 도구를 조정하고, 단계 간 상태를 유지하며, 코드 실행 샌드박스 외부에서 조치를 취해야만 완료될 수 있을 때 올바른 선택입니다.
코딩 에이전트: 코드베이스를 읽고, 변경 사항을 작성하고, 테스트 스위트를 실행하고, 실패를 수정하고, 풀 리퀘스트를 여는 에이전트는 git, 터미널, 파일 시스템이 있는 지속적인 작업 공간이 필요합니다. 이는 일시적인 인터프리터와 아키텍처적으로 호환되지 않습니다.
브라우저 및 웹 자동화 에이전트: 동적 콘텐츠 스크래핑, 양식 작성, 다단계 웹 플로우 탐색, 시각적 인터페이스에서 구조화된 데이터 추출 — 이 모든 것은 워크플로우를 완료할 수 있을 만큼 오래 지속되는 실제 브라우저 세션이 필요합니다.
연구 및 데이터 수집 파이프라인: 여러 소스에서 문서를 검색하고, 정보를 상호 참조하고, 중간 결과를 디스크에 쓰고, 최종 종합 출력을 생성하는 에이전트는 이러한 모든 단계에 걸쳐 지속되는 작업 공간이 필요합니다.
평가 및 RL 워크로드: 각각 자체 상태를 유지하고, 점수를 추적하며, 체크포인트를 쓰는 여러 에이전트 에피소드를 병렬로 실행하려면 대규모 동시성 및 세션 격리를 위해 설계된 런타임이 필요합니다.
장기 실행 인프라 에이전트: 리소스를 프로비저닝하고, 배포를 실행하고, 출력을 모니터링하며, 수 분에서 수 시간에 걸친 변화에 반응하는 에이전트는 일시 중지, 재개 및 체크포인트가 가능한 세션 모델이 필요합니다.
에이전트 코딩 도구: Codex 스타일 에이전트 또는 IDE 연결 에이전트가 실제 프로젝트에서 조치를 취하려면 샌드박스 처리된 인터프리터가 아닌 전체 개발 환경 표면이 필요합니다.
런타임의 비용은 대안이 상태 관리, 도구 조정, 세션 지속성을 직접 수동으로 연결하는 것일 때 정당화됩니다. 런타임은 해당 인프라를 제공합니다. 정책을 구성하면 됩니다.
하이브리드 패턴: 하나의 앱에서 둘 다 사용하기
많은 실제 애플리케이션은 두 패턴을 모두 내장합니다. 코딩 도우미는 전체 세션(저장소 컨텍스트 유지, 변경된 파일 추적, 브랜치 관리)에 에이전트 런타임을 사용하면서, 테스트 실행이나 사용자 제공 스크립트의 샌드박스 실행과 같이 더 큰 에이전트 워크플로우 내의 하위 작업으로 코드 인터프리터를 호출할 수 있습니다.
데이터 분석 제품은 전체 워크플로우(데이터 다운로드, 정리, 여러 소스 결합)를 오케스트레이션하기 위해 에이전트 런타임을 사용하고, 엄격한 샌드박싱이 중요하고 상태가 지속될 필요가 없는 개별 계산 단계에 대해 격리된 인터프리터 호출을 사용할 수 있습니다.
실제 패턴은 다음과 같습니다:
- 외부 계층은 에이전트 런타임입니다: 세션을 보유하고, 도구를 조정하며, 상태를 관리합니다.
- 엄격한 격리가 필요한 내부 작업은 여러 도구 중 하나로 단기 코드 인터프리터 호출을 사용합니다.
- 에이전트 런타임은 인터프리터를 호출할 시기, 전달할 입력, 출력으로 무엇을 할지 결정합니다.
이는 복잡한 아키텍처 패턴이 아닙니다. 각 계층을 설계된 대로 사용하는 것입니다. 에이전트 런타임은 워크플로우를 관리하고, 인터프리터는 필요할 때 샌드박스 실행을 처리합니다.
각 모델에 맞는 샌드박스 인프라 평가
관리형 샌드박스 제공자를 평가하든 직접 설계하든, 대답해야 할 질문은 구축 중인 모델에 따라 크게 다릅니다.
코드 인터프리터 워크로드 의 경우 평가 기준은 비교적 좁습니다:
- 시작 지연 시간은 얼마인가? 대화형 사용에는 1초 미만 시작이 중요합니다.
- 기본 이미지에서 사용 가능한 언어와 패키지는 무엇인가?
- 사용자가 추가 패키지를 설치할 수 있는가? 보안 모델에서 허용하는가?
- 리소스 제한(CPU, 메모리, 실행 시간)은 무엇인가?
- 세션 아티팩트는 어떻게 반환되는가? 동기 응답, 파일 다운로드 또는 사전 서명된 URL?
- 지속 파일 시스템 옵션이 있는가, 아니면 종료 시 모든 것이 폐기되는가?
에이전트 런타임 워크로드 의 경우 기준이 상당히 확장됩니다:
- 환경이 세션 내 단계 간에 생존하는 지속 파일 시스템을 지원하는가?
- 세션을 일시 중지하고 재개할 수 있는가? (인간 개입 워크플로우 또는 비용 관리)
- 브라우저 지원이 있는가? 어떻게 구성되는가?
- 어떤 셸 도구와 CLI를 사용할 수 있는가?
- 네트워크 접근은 어떻게 제어되는가? 이그레스 정책, DNS 필터링, 아웃바운드 허용 목록?
- 세션 동시성 모델은 무엇이며, 어떻게 확장되는가?
- 시크릿은 어떻게 주입되고 범위가 지정되는가?
- 어떤 관찰 기능이 있는가? 명령 로그, 파일 변경 추적, 리소스 메트릭?
- 플랫폼은 일반적인 요청-응답 주기를 초과하는 장기 실행 세션을 어떻게 처리하는가?
Novita Agent Sandbox는 에이전트 런타임 워크로드(코딩 에이전트, 브라우저 자동화, 데이터 분석 파이프라인, 지속 상태, 도구 접근, 세션 제어가 필요한 평가/RL 워크로드)를 위해 설계되었습니다. 마이크로VM 격리를 사용하고, Pause/Resume을 지원하며, Novita의 모델 API 플랫폼과 통합되어 Novita를 LLM 추론에 사용하는 팀이 동일한 플랫폼에서 샌드박스 워크로드를 실행할 수 있습니다. 에이전트 워크플로우를 위한 샌드박스 인프라를 평가하는 팀은 Novita Agent Sandbox 문서에서 격리 모델, 생애 주기 API, 리소스 구성을 확인할 수 있습니다.
진정으로 인터프리터 전용(단일 스크립트, 일시적, 상태 비저장) 워크로드의 경우, 전체 에이전트 런타임은 필요하지 않은 오버헤드입니다. 더 간단한 도구를 사용하세요.
실용적인 테스트: 모델의 모든 턴 사이에 실행 환경이 파괴되고 재구축되어도 워크플로우가 올바르게 완료될 수 있습니까? 예라면 인터프리터로 충분합니다. 아니요 — 상태, 도구 접근 또는 세션 연속성이 중요하다면 — 런타임이 필요합니다.
FAQ
코드 인터프리터와 에이전트 런타임의 주요 차이점은 무엇인가요?
코드 인터프리터는 샌드박스 환경에서 코드를 실행하고 세션이 종료되면 환경을 폐기합니다. 에이전트 런타임은 워크플로우의 여러 단계에 걸쳐 파일, 설치된 도구, 브라우저 접근, 세션 상태를 유지하는 지속적인 작업 공간을 유지합니다. 인터프리터는 "이 코드를 실행하고 결과를 반환"하는 반면, 런타임은 "필요한 만큼 많은 단계를 거쳐 이 목표를 향해 작업"합니다.
코드 인터프리터가 웹 검색이나 파일 접근과 같은 도구를 사용할 수 있나요?
일부 코드 인터프리터 구현은 제한된 도구 사용(파일 업로드, 샌드박스 내 네트워크 호출, 아티팩트 반환)을 지원합니다. 그러나 턴 간에 상태를 전달하는 지속적인 작업 공간이나 단일 함수 호출보다 오래 지속되는 브라우저 세션은 지원하지 않습니다. 앱이 웹 페이지를 읽고, 파일을 쓰고, 나중 단계에서 해당 파일을 참조해야 한다면 런타임이 필요합니다.
에이전트 런타임이 항상 코드 인터프리터보다 비싼가요?
세션당 그렇습니다. 에이전트 런타임은 더 많은 인프라(지속 파일 시스템, 더 오래 지속되는 프로세스, 브라우저 또는 CLI 접근)를 포함하며, 이러한 구성 요소는 단기 인터프리터 샌드박스보다 비용이 더 듭니다. 진정으로 다단계 조정이 필요한 워크로드의 경우 런타임 비용이 정당화됩니다. 단일 패스 작업의 경우 오버헤드입니다.
동일한 애플리케이션에서 둘 다 사용해야 하는 경우는 언제인가요?
외부 워크플로우에 지속 상태가 필요하지만 개별 하위 작업은 엄격한 격리가 유리할 때입니다. 테스트 스위트를 샌드박스 처리된 인터프리터에서 실행하는 코딩 에이전트, 또는 계산 단계를 일시적인 인터프리터에 위임하면서 오케스트레이션 계층이 전체 상태를 유지하는 데이터 파이프라인은 모두 일반적인 하이브리드 패턴입니다.
Novita Agent Sandbox는 두 모델을 모두 지원하나요?
Novita Agent Sandbox는 에이전트 런타임 워크로드(지속 작업 공간, Pause/Resume, 브라우저 접근, 다단계 세션 제어)를 위해 설계되었습니다. 격리된 일시적인 인터프리터 호출의 경우 사용 사례에 따라 더 가벼운 실행이 더 적합할 수 있습니다. 현재 기능에 대한 자세한 내용은 Novita Agent Sandbox 문서를 참조하세요.
내 워크로드가 런타임을 필요로 하는지 어떻게 알 수 있나요?
실용적인 테스트: 모델의 모든 턴 사이에 실행 환경이 파괴되고 재구축되어도 워크플로우가 올바르게 완료될 수 있습니까? 예라면 인터프리터로 충분합니다. 아니요 — 상태, 도구 접근, 브라우저 제어 또는 세션 연속성이 중요하기 때문이라면 — 런타임이 필요합니다.
