코드 인터프리터는 격리된 단기 실행 작업을 처리합니다. 스크립트를 실행하고 결과를 반환한 다음 모든 것을 폐기합니다. 에이전트 런타임은 지속적인 상태, 도구 액세스, 브라우저 제어, 파일 I/O, 또는 장기 실행 세션이 필요한 다단계 워크플로를 처리합니다. 올바른 선택은 제품이 스스로를 설명하는 라벨이 아니라 워크로드에 따라 달라집니다.
일반적인 앱 아키텍처 결정보다는 범위가 정해진 자동화 워크플로가 목표라면 AI로 작업을 자동화하는 방법을 참조하세요.
코드 인터프리터가 실제로 하는 일
코드 인터프리터는 언어 모델이 코드를 실행하고 출력을 확인할 수 있는 방법을 제공합니다. 모델이 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 워크로드 — 를 위해 설계되었습니다. microVM 격리를 사용하고, Pause/Resume을 지원하며, Novita의 모델 API 플랫폼과 통합되어 LLM 추론에 Novita를 사용하는 팀이 동일한 플랫폼에서 샌드박스 워크로드를 실행할 수 있습니다. 에이전트 워크플로를 위한 샌드박스 인프라를 평가하는 팀을 위해 Novita Agent Sandbox 문서에서 격리 모델, 수명 주기 API, 리소스 구성을 다룹니다.
진정으로 인터프리터 전용 워크로드 — 단일 스크립트, 일시적, 무상태 — 에는 완전한 에이전트 런타임은 필요 없는 오버헤드입니다. 더 간단한 도구를 사용하세요.
실용적인 테스트: 모델 턴 사이마다 실행 환경이 파괴되고 재구축되어도 워크플로가 올바르게 완료될 수 있습니까? 그렇다면 인터프리터로 충분할 가능성이 높습니다. 아니라면 — 상태, 도구 액세스, 또는 세션 연속성이 중요하기 때문 — 런타임이 필요합니다.
자주 묻는 질문
코드 인터프리터와 에이전트 런타임의 주요 차이점은 무엇인가요?
코드 인터프리터는 샌드박스 환경에서 코드를 실행하고 세션이 끝나면 환경을 폐기합니다. 에이전트 런타임은 파일, 설치된 도구, 브라우저 액세스, 세션 상태를 포함한 지속적인 워크스페이스를 워크플로의 여러 단계에 걸쳐 유지합니다. 인터프리터는 "이 코드를 실행하고 결과를 반환하라"에 답하고, 런타임은 "필요한 만큼 많은 단계를 거쳐 이 목표를 향해 작업하라"에 답합니다.
코드 인터프리터가 웹 검색이나 파일 액세스 같은 도구를 사용할 수 있나요?
일부 코드 인터프리터 구현은 제한된 도구 사용 — 파일 업로드, 샌드박스 내 네트워크 호출, 또는 아티팩트 반환 — 을 지원합니다. 지원하지 않는 것은 턴 간 상태를 유지하는 지속적인 워크스페이스나 단일 함수 호출보다 오래 지속되는 브라우저 세션입니다. 앱이 웹 페이지를 읽고, 파일을 작성한 다음, 이후 단계에서 해당 파일을 참조해야 한다면 런타임이 필요합니다.
에이전트 런타임이 코드 인터프리터보다 항상 더 비싼가요?
세션당으로는 그렇습니다. 에이전트 런타임은 더 많은 인프라 — 지속적인 파일시스템, 더 오래 유지되는 프로세스, 브라우저 또는 CLI 액세스 — 를 포함하며, 이러한 구성 요소는 단기 인터프리터 샌드박스보다 비용이 더 듭니다. 진정으로 다단계 조정이 필요한 워크로드에는 런타임 비용이 정당화됩니다. 단일 패스 작업에는 오버헤드입니다.
하나의 애플리케이션에서 둘 다 사용해야 하는 경우는 언제인가요?
외부 워크플로가 지속적인 상태를 요구하지만 개별 하위 작업은 엄격한 격리로 이득을 볼 때입니다. 샌드박스 처리된 인터프리터에서 테스트 스위트를 실행하는 코딩 에이전트, 또는 오케스트레이션 계층이 전체 상태를 유지하면서 계산 단계를 일시적 인터프리터에 위임하는 데이터 파이프라인은 모두 일반적인 하이브리드 패턴입니다.
Novita Agent Sandbox는 두 모델을 모두 지원하나요?
Novita Agent Sandbox는 에이전트 런타임 워크로드 — 지속적인 워크스페이스, Pause/Resume, 브라우저 액세스, 다단계 세션 제어 — 를 위해 설계되었습니다. 격리된 일시적 인터프리터 호출의 경우 사용 사례에 따라 더 가벼운 실행이 더 적합할 수 있습니다. 현재 기능 세부 정보는 Novita Agent Sandbox 문서를 참조하세요.
내 워크로드에 런타임이 필요한지 어떻게 알 수 있나요?
실용적인 테스트: 모델 턴 사이마다 실행 환경이 파괴되고 재구축되어도 워크플로가 올바르게 완료될 수 있습니까? 그렇다면 인터프리터로 충분합니다. 아니라면 — 상태, 도구 액세스, 브라우저 제어, 또는 세션 연속성이 중요하기 때문 — 런타임이 필요합니다.
