Metadata-Version: 2.4
Name: aifactory
Version: 3.0.4
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, 직접 입력 순으로 찾습니다 |
| `--server URL` | 선택 | 백엔드 주소. 생략하면 환경변수 `AIF_SERVER`, 없으면 `https://api.aifactory.space` |

## 제출물 구성

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

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

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

## 참여 키

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