실행 모델
OpenAI는 에이전트 루프를 실행하고, 대화 컨텍스트를 관리하며, 위임 도구를 제공합니다. CoreWeave는 실행기와 에이전트가 작성한 프로그램을 실행합니다. 샌드박스 프로비저닝, 파일 전송, 정리 작업은 애플리케이션에서 관리합니다. 코디네이터와 서브에이전트는 하나의 샌드박스와 파일 시스템을 공유합니다. 서브에이전트를 생성해도 별도의 CoreWeave 샌드박스가 만들어지지는 않습니다. 각 전문 에이전트에는 자체 출력 파일을 할당하고, 최종 보고서는 코디네이터가 맡도록 하세요. 이러한 파일 할당은 쓰기 충돌을 피하기 위한 관례일 뿐, 액세스 제어 기능이 아닙니다. 자세한 내용은 OpenAI의 멀티 에이전트 가이드를 참조하세요.요구 사항
예제를 실행하기 전에 다음 요구 사항을 충족해야 합니다.- Forge API 키 또는
SANDBOX_USER액션이 부여된 CoreWeave API 액세스 토큰, 그리고 CPU 샌드박스 1개를 실행할 수 있는 용량. 사용자 인증 정보 선택을 참고하세요. - Agents API 액세스 권한과 선택한 모델에 대한 액세스 권한이 있는 OpenAI 프로젝트.
- Python 및
uv(함께 제공되는 레시피에 명시된 버전과 lockfile 사용). api.openai.com에 대한 아웃바운드 HTTPS 액세스 및codex-cloud-environments.chatgpt.com에 대한 보안 WebSocket 액세스. 이미지를 설정할 때는 실행기와 런타임 의존성을 설치하는 데 사용하는 패키지 레지스트리에 대한 액세스도 필요합니다.
애플리케이션과 실행기의 사용자 인증 정보 분리하기
이 예제에서는 샌드박스 사용자 인증 정보 하나와 OpenAI 키 두 개, 총 세 가지 사용자 인증 정보를 사용합니다. 각 사용자 인증 정보는 하나의 컴포넌트에만 속하므로 애플리케이션 액세스 권한이 샌드박스에 노출되지 않습니다.
레시피는 기본적으로 CoreWeave 인증을 사용합니다. Forge API 키를 사용하려면
--sandbox-auth wandb를 전달하세요. 이 레시피에서 Forge 인증을 사용하려면 환경 변수 이름이 정확히 WANDB_API_KEY여야 하며, FORGE_API_KEY는 읽지 않습니다. 샌드박스 사용자 인증 정보는 선택한 것만 있으면 되지만,
OpenAI 키는 어느 모드에서든 두 개 모두 필요합니다. 애플리케이션이 선택한
모드를 기록해 두므로 정리 작업에도 동일한 공급자 사용자 인증 정보가 사용됩니다.
OpenAI 애플리케이션 키에는 api.agents.read, api.agents.write,
api.responses.write 권한이 필요합니다. 별도의 환경 키는
Agents > Environments > Keys에서 생성하세요.
이 키는 세션과 조직, 프로젝트, 사용자 또는 서비스 계정 소유권이 모두
같아야 합니다. 관련 없는 권한은 None으로 설정하세요.
레시피는 제한된 실행기 키를 SDK의 environment_variables
인수로 전달하며, 시크릿 저장소는 설정하지 않습니다.
작업 입력만 업로드하세요. 애플리케이션 사용자 인증 정보, 로컬 설정,
검증기는 샌드박스 밖에 두세요. 자세한 내용은
OpenAI 인증 안내를 따르세요.
에이전트 세션 연결
실행 가능한 레시피는 OpenAI 및 CoreWeave SDK로 다음 단계를 구현합니다.- 자체 호스팅 Agents API 세션을 생성하고 세션 ID와 환경
ID를 저장하세요. 실행기를 시작할 때는 반환된
remote_url을 그대로 사용하세요. - 최대 수명을 명시적으로 지정하고 Python과 Node가 모두 포함된 CoreWeave 샌드박스를 생성하세요.
- 반환된 환경 ID와 원격 URL을 변경 없이 사용해
codex exec-server를 시작하세요. 제한된 실행기 키만CODEX_API_KEY로 주입하세요. - 합성 입력과 작업 지침을 업로드한 다음 환경 연결을 확인하세요. 작업을 제출하고 결과를 확인하세요.
- 정리 작업 전에 생성된 아티팩트와 API 활동 기록을 조회하세요.
client.beta.agents.sessions.create()에 전달합니다.
--require-exit-codes 검사를 사용하면 모든 전문 에이전트에 대해 종료 코드가 숫자 0이라는 증거가 있어야 합니다. started_at과 completed_at 구간이 겹치면
서브에이전트 턴이 동시에 실행되었음을 의미합니다. 다만 이 타임스탬프는 초 단위 정밀도이므로,
셸 프로세스가 동시에 실행되었다거나 순차 run보다 속도가 빨라졌다는 것까지 증명하지는 않습니다.
예제 실행하기
레시피 설정 및 실행 단계를 따르세요. 레시피에는 원본 합성 데이터, 작업 사양, 애플리케이션, 독립 검증기가 포함되어 있습니다. 다운로드한 보고서를 검증기의 발견 사항과 함께 검토하세요. 세션이 유지되는 동안에는 OpenAI Logs > Agents에서 세션 턴과 도구 호출을 확인할 수도 있습니다. 해당하는 조직과 프로젝트를 선택하세요. 이 예제는 채팅 UI를 제공하지 않으며, ChatGPT 또는 Codex 앱과의 연속성도 지원하지 않습니다. 기존 명령줄 인터페이스(CLI) 워크플로를 사용하려면 cws-agent의 OpenAI Agents API를 참조하세요. 이 레시피는 SDK를 직접 사용하므로 해당 CLI가 필요하지 않습니다.세션, 샌드박스, 파일 수명
무엇을 보존할지 선택할 때는 대화, 컴퓨팅, 워크스페이스 파일을 각각 따로 관리하세요.
컴퓨팅 수명은 명시적으로 지정하세요. 이 레시피는 최대 수명을 20분으로
설정합니다. 최대 수명은 상한선일 뿐, 프롬프트를 보낼 때마다 초기화되는 비활성 타이머가 아닙니다.
실행기를 실행 중인 동일한 샌드박스에 다시 연결하면 워크스페이스가 그대로 유지됩니다. 반면
같은 환경 ID로 대체 컴퓨팅을 시작하더라도 파일은 복원되지 않습니다.
컴퓨팅을 중지하기 전에 아티팩트를 다운로드하거나 CoreWeave 영구 저장 기능을 사용하세요.
이 레시피는 아티팩트를 다운로드한 뒤 리소스를 삭제합니다. 자동 복구나
스냅샷 및 복원 기능은 구현되어 있지 않습니다.
샌드박스를 중지해도 API 대화는 삭제되지 않으며, 대화를 삭제해도
샌드박스는 중지되지 않습니다. 두 정리 작업을 모두 시도하고, 실패한 작업은 각각 보고하세요.
실패 처리
실패 원인을 조사할 때는 다음 지침을 참고하세요.- 실행기가 연결되지 않는 경우: 환경 키 소유권, 아웃바운드 네트워크 액세스, 실행기 호환성, OpenAI가 반환한 정확한 원격 URL을 확인하세요.
- OpenAI에서 사용량 또는 결제 한도 초과를 알리는 경우: 재시도하기 전에 OpenAI 조직 및 프로젝트의 결제 한도를 확인하세요. 실행기가 연결되었다고 해서 모델 턴을 실행할 수 있다는 보장은 없습니다.
- 스트림 연결이 끊기거나 클라이언트에서 timeout이 발생하는 경우: 입력을 재시도하기 전에 세션 상태와 저장된 이벤트를 확인하세요. timeout이 발생했다고 해서 클라우드 작업이 취소되지는 않습니다.
- 위임 또는 병렬 실행이 확인되지 않는 경우: 저장된 활동 기록을 조회하세요. 보고서 내용이 올바르다는 것만으로는 멀티 에이전트 run이 병렬로 실행되었다는 증거가 되지 않습니다.
- OpenAI 환경이 만료된 경우: 재시도하기 전에 해당 환경의 상태를 확인하세요. 레시피는 즉시 실패하지 않고 작업 기한까지 대기할 수 있습니다.
- 샌드박스가 만료된 경우: 가능하면 저장된 아티팩트를 복구하세요. 대체 샌드박스를 사용하려면 파일 복원 정책을 명시적으로 지정해야 합니다.
- 애플리케이션이 중단된 경우: 레시피에 저장된 리소스 저널과 정리 명령어를 사용하세요. 최대 샌드박스 수명은 안전장치일 뿐이며, API 세션 삭제를 대신하지 않습니다.