For the complete documentation index, see llms.txt. This page is also available as Markdown.

블록을 플러그인으로 번들링

워크플로우 블록을 플러그인으로 패키징하는 방법: 필요한 인터페이스, 종류, 초기화기, 직렬화기, 로딩.

Workflows 생태계를 효율적으로 관리하려면 블록을 빌드하고 배포하는 표준화된 방법이 필수적입니다. 이를 통해 사용자는 자신의 블록을 만들고 이를 Workflow 플러그인으로 묶을 수 있습니다. Workflow 플러그인은 본질적으로 정의된 인터페이스를 구현하는 Python 라이브러리이며, 여러 방식으로 구조화될 수 있습니다.

이 페이지는 필수 인터페이스 요구사항을 설명하고, 다음과 일치하는 블록 구조를 제안합니다. Workflows 버전 관리 지침입니다.

플러그인의 제안 구조

플러그인에 대해 다음 구조를 제안합니다:

.
├── requirements.txt   # 요구 사항이 담긴 파일
├── setup.py           # 원한다면 다른 패키지 생성 방법을 사용하세요
├── {plugin_name}
│   ├── __init__.py    # 로더를 포함하는 मुख्य 모듈
│   ├── kinds.py       # 선택 사항 - 사용자 정의 kind의 정의
│   ├── {block_name}   # 블록용 패키지
│   │   ├── v1.py      # 블록의 버전 1
│   │   ├── ...        # ... 다음 버전들
│   │   └── v5.py      # 블록의 버전 5
│   └── {block_name}   # 다른 블록용 패키지
└── tests              # 블록 테스트

필수 인터페이스

플러그인은 다음에 대해 몇 가지 확장만 제공하면 됩니다: __init__.py 표준 Python 라이브러리와 비교했을 때 메인 패키지의:

  • load_blocks() 블록 클래스 목록을 제공하는 함수(필수)

  • 모든 사용자 정의 플러그인이 정의한 항목(선택 사항) kinds 플러그인이 정의한 것(선택 사항)

  • REGISTERED_INITIALIZERS 블록 초기화 매개변수 이름을 기본값 또는 해당 값을 생성하는 매개변수 없는 함수에 매핑하는 딕셔너리인 모듈 속성 - 선택 사항

load_blocks() 함수

이 함수는 플러그인 내 모든 블록을 나열해야 합니다. 각 블록은 한 번만 정의할 수 있습니다.

예시:

모든 사용자 정의 함수

모든 사용자 정의 플러그인이 정의한 모든 사용자 정의 kind를 반환하는 함수입니다. 블록에 사용자 정의 kind가 필요하지 않을 수 있으므로 선택 사항입니다.

예시:

REGISTERED_INITIALIZERS 딕셔너리

이미 알고 있듯이 Workflows Compiler를 설명하는 문서에서 그리고 블록 개발 가이드Workflow 블록은 컴파일 중에 동적으로 초기화되며 생성자 매개변수가 필요할 수 있습니다. 이러한 매개변수는 다음에 등록된 값으로 기본값을 지정할 수 있습니다. REGISTERED_INITIALIZERS 사전. 블록의 초기화 매개변수에 기본값을 제공하려면 초기화 매개변수 이름과 그 값(또는 해당 값을 생성하는 함수)을 사전에 등록하기만 하면 됩니다. 이는 플러그인 인터페이스의 선택 사항이며, 모든 블록에 생성자가 필요한 것은 아닙니다.

예시:

다음에 대한 직렬화기와 역직렬화기 Kinds

사용자 정의 직렬화기와 역직렬화기에 대한 지원은 Execution Engine에서 도입되었습니다 v1.3.0. 해당 버전부터는 Execution Engine이 어떤 것이라도 직렬화 및 역직렬화할 때 사용할 사용자 정의 함수를 지정할 수 있습니다. 종류.

역직렬화기는 전송된 입력을 블록에서 사용하는 내부 데이터 표현으로 어떻게 디코딩할지 결정합니다. 반면 직렬화기는 Workflow 결과를 전송해야 할 때 유용합니다.

아래에서 임의의 kind에 대해 직렬화기와 역직렬화기를 추가하는 예시를 확인할 수 있습니다. 코드는 메인 __init__.py 플러그인에 넣어야 합니다:

팁과 요령

  • 각 직렬화기는 직렬화할 값을 받아 직렬화된 값(기본 Python JSON 인코더가 허용하는 값)을 반환하는 함수여야 합니다

  • 각 역직렬화기는 두 개의 매개변수를 받는 함수여야 합니다. 즉, 역직렬화할 Workflow 입력의 이름과 역직렬화할 값입니다. 이 함수의 목적은 입력 데이터를 기대되는 내부 표현과 일치시키는 것입니다

  • Kinds 다음에서 roboflow_core 플러그인에는 이미 적절한 직렬화기와 역직렬화기가 있습니다

  • 다음에서 데이터가 직렬화되는 방식이 마음에 들지 않는다면 roboflow_core 플러그인에서 다음에 대한 직렬화 메서드를 자유롭게 수정하세요 kinds, 함수만 플러그인에 등록하고 Execution Engine에 로드하면 됩니다. 마지막으로 정의된 serializer/deserializer가 사용됩니다.

Workflows 생태계에서 플러그인 활성화하기

플러그인을 로드하려면 다음이 필요합니다:

  • Workflows를 실행하는 환경에 플러그인이 포함된 Python 패키지를 설치합니다

  • 다음 이름의 환경 변수를 내보냅니다 WORKFLOWS_PLUGINS 로드하려는 플러그인 이름을 쉼표로 구분한 목록으로 설정합니다.

    • 예: 두 개의 플러그인을 로드하려면 plugin_aplugin_b, 다음을 실행해야 합니다 export WORKFLOWS_PLUGINS="plugin_a,plugin_b"

마지막 업데이트

도움이 되었나요?