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

Blocks को plugin में bundling करना

Workflow blocks को plugin के रूप में पैकेज करें: आवश्यक interface, kinds, initializers, serializers, और loading।

वर्कफ़्लोज़ इकोसिस्टम को कुशलतापूर्वक प्रबंधित करने के लिए, ब्लॉक्स को बनाने और वितरित करने की एक मानकीकृत विधि आवश्यक है। इससे उपयोगकर्ता अपने स्वयं के ब्लॉक्स बना सकते हैं और उन्हें Workflow plugins में बंडल कर सकते हैं। एक Workflow plugin मूलतः एक Python library है जो एक परिभाषित interface को लागू करती है और विभिन्न तरीकों से संरचित की जा सकती है।

यह पृष्ठ अनिवार्य interface आवश्यकताओं को रेखांकित करता है और ब्लॉक्स के लिए एक ऐसी संरचना सुझाता है जो Workflows versioning दिशानिर्देशों के अनुरूप हो।

Plugin की प्रस्तावित संरचना

हम plugin के लिए निम्नलिखित संरचना प्रस्तावित करते हैं:

.
├── requirements.txt   # आवश्यकताओं वाली फ़ाइल
├── setup.py           # यदि चाहें तो पैकेज बनाने की अलग विधि उपयोग करें
├── {plugin_name}
│   ├── __init__.py    # मुख्य मॉड्यूल जिसमें loaders होते हैं
│   ├── kinds.py       # वैकल्पिक रूप से - custom kinds की परिभाषाएँ
│   ├── {block_name}   # आपके block के लिए package
│   │   ├── v1.py      # आपके block का version 1
│   │   ├── ...        # ... अगले versions
│   │   └── v5.py      # आपके block का version 5
│   └── {block_name}   # किसी अन्य block के लिए package
└── tests              # blocks के लिए tests

अनिवार्य interface

Plugin को केवल कुछ extensions प्रदान करने चाहिए __init__.py मुख्य package में मानक Python library की तुलना में:

  • load_blocks() blocks की classes की सूची प्रदान करने के लिए function (आवश्यक)

  • load_kinds() सभी custom kinds जो plugin परिभाषित करता है (वैकल्पिक)

  • REGISTERED_INITIALIZERS module property, जो block init parameter के नाम को default value या उस value को बनाने वाले parameter-free function से map करने वाला dict है - वैकल्पिक

load_blocks() function

Function का उद्देश्य plugin में सभी blocks को सूचीबद्ध करना है - एक block को एक बार परिभाषित करना अनुमत है।

उदाहरण:

load_kinds() function

load_kinds() Function plugin द्वारा परिभाषित सभी custom kinds लौटाने के लिए है। यह वैकल्पिक है क्योंकि आपके blocks को custom kinds की आवश्यकता नहीं भी हो सकती।

उदाहरण:

REGISTERED_INITIALIZERS शब्दकोश

जैसा कि आप Workflows Compiler का वर्णन करने वाले docs से जानते हैं और blocks विकास मार्गदर्शिका, Workflow blocks compilation के दौरान गतिशील रूप से initialize होते हैं और उन्हें constructor parameters की आवश्यकता हो सकती है। उन parameters के लिए default मान REGISTERED_INITIALIZERS dictionary में registered values से लिए जा सकते हैं। अपने block के init parameter के लिए default value उपलब्ध कराने के लिए - बस init param का नाम और उसका value (या value उत्पन्न करने वाला function) dictionary में register करें। यह plugin interface का वैकल्पिक हिस्सा है, क्योंकि हर block को constructor की आवश्यकता नहीं होती।

उदाहरण:

के लिए serializers और deserializers Kinds

Custom serializers और deserializers के लिए समर्थन Execution Engine में पेश किया गया था v1.3.0. उस version के बाद से custom functions की ओर संकेत करना संभव है जिन्हें Execution Engine किसी भी प्रकार.

को serialize और deserialize करने के लिए उपयोग करे। Deserializers यह निर्धारित करेंगे कि wire के माध्यम से भेजे गए inputs को blocks द्वारा उपयोग की जाने वाली आंतरिक data representation में कैसे decode किया जाए। दूसरी ओर, Serializers तब उपयोगी होते हैं जब Workflow results को wire के माध्यम से भेजना हो।

नीचे आप देख सकते हैं कि किसी arbitrary kind के लिए serializer और deserializer कैसे जोड़ें। Code को आपके plugin के मुख्य __init__.py में रखा जाना चाहिए:

Tips And Tricks

  • प्रत्येक serializer एक function होना चाहिए जो serialize किए जाने वाले value को ले और serialized value लौटाए (जो default Python JSON encoder द्वारा स्वीकार्य हो)

  • प्रत्येक deserializer एक function होना चाहिए जो दो parameters स्वीकार करे - deserialized किए जाने वाले Workflow input का नाम और deserialized किए जाने वाला value - function का उद्देश्य input data को अपेक्षित आंतरिक representation के अनुरूप बनाना है

  • Kinds से roboflow_core plugin में पहले से ही उचित serializers और deserializers हैं

  • यदि आपको data के serialize होने का तरीका पसंद नहीं है roboflow_core plugin में, तो आप serialization methods को बदल सकते हैं kinds, बस अपने plugin में function को register करके और उसे Execution Engine में load करके - आख़िरी परिभाषित serializer/deserializer उपयोग में रहेगा।

अपने Workflows ecosystem में plugin सक्षम करना

Plugin लोड करने के लिए आपको यह करना होगा:

  • उस environment में plugin वाला Python package install करें जहाँ आप Workflows चलाते हैं

  • नाम का एक environment variable export करें WORKFLOWS_PLUGINS जिसमें उन plugins के नामों की comma-separated सूची हो जिन्हें आप load करना चाहते हैं।

    • उदाहरण: दो plugins लोड करने के लिए plugin_a और plugin_b, आपको यह चलाना होगा export WORKFLOWS_PLUGINS="plugin_a,plugin_b"

अंतिम अपडेट

क्या यह उपयोगी था?