step3. 파일 편집하기
플러그인 개발 중 편집하는 config.yaml, requirements.txt, 로직 구현 파일 설명
플러그인 개발 중 주로 편집하는 파일과 각 파일의 역할을 확인합니다.
진행 순서
- 플러그인 프로젝트의 기본 구조를 확인합니다.
config.yaml에서 플러그인 정보와 액션 실행 방식을 선언합니다.requirements.txt에 필요한 Python 의존성을 추가합니다.plugin/<action>.py파일에서 플러그인 로직을 구현합니다.- 상태 보고 API로 진행률과 실행 로그를 남깁니다.
1. 플러그인 구조 확인하기
플러그인 개발 중 주로 편집하는 파일은 세 개입니다.
plugin/
├── plugin/<action>.py # ① 로직 구현 (upload.py / export.py / inference.py …)
├── config.yaml # ② 플러그인 정보와 액션 선언
└── requirements.txt # ③ 파이썬 의존성| No. | 파일 | 역할 | 수정 시점 |
|---|---|---|---|
| ① | plugin/<action>.py | 실제 플러그인 로직을 구현합니다. | 데이터 변환, 학습, 추론 등 처리 로직을 작성할 때 |
| ② | config.yaml | 플러그인 정보와 액션 실행 방식을 선언합니다. | 이름, 버전, 카테고리, entrypoint, 실행 방식을 바꿀 때 |
| ③ | requirements.txt | 플러그인이 사용하는 외부 Python 라이브러리를 정의합니다. | 외부 패키지를 추가하거나 버전을 고정할 때 |
2. config.yaml 작성하기
config.yaml 작성하기config.yaml은 플러그인의 명세 파일입니다.
플러그인을 게시할 때 이 파일을 기준으로 이름, 코드, 버전, 카테고리, 액션 정보가 등록됩니다.
name: My Export # 화면 표시 이름
code: my-export # 고유 식별자 (변경 금지)
version: 0.1.0 # 게시 버전 — 게시할 때마다 이 값이 기준
category: export
description: 우리 회사 포맷 익스포트
actions:
export:
entrypoint: plugin.export.MyExportAction # 실행할 클래스 위치
method: job주요 설정 항목
| 항목 | 설명 |
|---|---|
| version | 값이 곧 게시 버전입니다. 새 버전을 게시하려면 이 값을 올린 뒤 게시합니다. |
| entrypoint | plugin.<파일명>.<클래스명> 형식으로 작성합니다. 클래스 이름을 바꾸면 entrypoint도 함께 수정해야 합니다. |
| ui_schema | 사용자에게 추가 입력 폼을 보여주려면 액션에 선언합니다. 입력값은 실행 시 코드로 전달됩니다. 자세한 예시는 2.6 Upload 예시에서 확인합니다. |
3. requirements.txt 작성하기
requirements.txt 작성하기requirements.txt는 플러그인이 사용하는 외부 라이브러리 목록입니다.
첫 줄의 synapse-sdk는 지우지 마세요. 실행 환경에 자동 설치되므로, IDE에서만 설치하고 requirements.txt에 빠뜨리면 실제 실행에서 ImportError가 발생할 수 있습니다.
synapse-sdk
pandas
opencv-python
의존성 관리 기준코드에서 import하는 외부 패키지는 반드시
requirements.txt에 추가하세요.코드 서버에서 테스트가 성공하더라도, 실행 환경에 의존성이 설치되지 않으면 Agent 실행 단계에서 실패할 수 있습니다.
4. 로직 구현 파일 작성하기
로직 구현 파일에서는 카테고리마다 SDK가 제공하는 베이스 클래스를 상속하고, 정해진 메서드만 구현합니다.
데이터 조회, 파일 전송, 진행률 집계 같은 공통 처리는 SDK가 담당합니다. 개발자는 변환/처리 로직에 집중하면 됩니다.
상태 보고 API 사용하기
구현 중 상태 보고는 다음 API를 사용합니다. 이 값이 사용자 화면의 진행률과 로그로 표시됩니다.
...set_progress(현재, 전체, step=...) # 진행률
...log_message('처리 중입니다') # 사용자에게 보이는 로그
...log_dev_event(msg, data={...}) # 개발자용 상세 로그 (문제 추적용)| API | 용도 | 사용자 화면 반영 |
|---|---|---|
set_progress | 현재 처리량과 전체 처리량을 보고합니다. | 진행률로 표시됩니다. |
log_message | 사용자가 확인할 수 있는 로그를 남깁니다. | 실행 로그에 표시됩니다. |
log_dev_event | 문제 추적을 위한 개발자용 상세 로그를 남깁니다. | 디버깅과 원인 분석에 활용합니다. |
구현 기준플러그인 코드는 모든 처리를 직접 구현하는 구조가 아닙니다.
SDK가 공통 처리를 맡고, 개발자는 플러그인의 목적에 맞는 변환/처리 로직을 작성합니다. 진행률과 로그를 적절히 보고하면 사용자가 실행 상태를 더 쉽게 확인할 수 있습니다.
Updated 27 days ago
