Metadata-Version: 2.4
Name: aifactory
Version: 3.1.0
Summary: 대회 제출용 명령줄 도구
Author-email: aifactory <contact@aifactory.page>
License: MIT
Project-URL: Homepage, https://aifactory.space
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: requests
Requires-Dist: ipynbname
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"

# aifactory

대회에 노트북을 제출하는 명령줄 도구입니다. 노트북과 `assets/` 폴더를 zip 으로 묶어 올리면 채점이 자동으로 시작됩니다.

## 사용법

노트북 마지막 셀에 아래 세 줄을 넣고 실행합니다.

```
%pip install -q --upgrade aifactory
%load_ext aifactory
%aifactory submit --model-name my-model
```

세 줄 모두 `%` 로 시작하므로 채점 환경에서는 실행되지 않습니다.

터미널에서도 같은 명령을 쓸 수 있습니다.

```
aifactory submit --model-name my-model --notebook predict.ipynb
```

### 옵션

| 옵션 | 필수 | 설명 |
|---|---|---|
| `--model-name NAME` | 필수 | 모델명. 128자 이하 |
| `--notebook PATH` | 선택 | 제출할 노트북 파일. 생략하면 자동으로 찾습니다 (Colab, VS Code, Jupyter) |
| `--api-key KEY` | 선택 | 참여 키. 생략하면 환경변수 `AIF_API_KEY`, Colab Secrets, 직접 입력 순으로 찾습니다 |
| `--debug` | 선택 | 디버그 제출. 공개 디버그 데이터로 실행하고 실행 로그를 남깁니다 (아래 "디버그 제출") |
| `--server URL` | 선택 | 백엔드 주소. 생략하면 환경변수 `AIF_SERVER`, 없으면 `https://api.aifactory.space` |

## 제출물 구성

노트북을 실행하는 폴더(cwd)를 기준으로 아래와 같이 묶입니다.

```
predict.ipynb     노트북. 원래 파일명과 무관하게 항상 이 이름으로 담깁니다
requirements.txt  cwd 에 있으면 담깁니다
assets/...        cwd 의 assets 폴더. 폴더 이름과 내부 구조가 그대로 보존됩니다
```

- 모델 가중치 등 동봉할 파일은 전부 `assets/` 아래에 두고, 노트북에서 `./assets/...` 상대경로로 읽습니다.
  채점 환경에서도 zip 최상위가 작업 폴더가 되므로 같은 경로가 그대로 동작합니다.
- 담을 폴더를 고르는 옵션은 없습니다. `assets/` 가 없거나 비어 있으면 노트북만 제출됩니다.
- 업로드 전에 담기는 파일 목록과 합계 용량이 출력됩니다.
- 제출에 쓰는 zip 은 임시 위치에 만들어지고 끝나면 지워집니다. 작업 폴더에는 아무 파일도 남지 않습니다.

## 디버그 제출

제출한 코드가 채점 환경에서 왜 실패하는지 확인할 때 씁니다.

```
aifactory submit --model-name my-model --debug
```

- 비공개 채점 데이터가 아니라 **운영자가 올려둔 공개 디버그 데이터** 위에서 일반 제출과 같은 순서로 실행됩니다.
- **결과와 실행 로그(마지막 부분)는 태스크 페이지의 제출 이력에서 확인합니다.** 실패한 지점과 트레이스백을 여기서 봅니다.
  공개 데이터로 실행한 것이라 로그를 그대로 볼 수 있습니다.
- 리더보드·제출 횟수에는 반영되지 않습니다. 함께 나오는 점수도 디버그 데이터 기준이라 순위와 무관합니다.
- 하루 10회까지 쓸 수 있습니다(기본값, 한국시간 자정에 초기화). 태스크에 따라 다를 수 있습니다.
- 운영자가 디버그 데이터를 올려둔 태스크에서만 쓸 수 있습니다.

## 참여 키

참여 키는 태스크 페이지에서 발급받습니다. 키는 화면에 출력되지 않고 어디에도 저장되지 않습니다.
Colab 이면 Secrets 에 `AIF_API_KEY` 이름으로 넣어두면 입력 없이 제출할 수 있습니다.
