Dataiku Python API : create a plugin recipe

MGad
Level 3
Dataiku Python API : create a plugin recipe

Hello ๐Ÿ™‚

 

I started looking into Dataiku API, to create predefined subflows triggered via a macro (previous discussion here : https://community.dataiku.com/t5/Plugins-Extending-Dataiku-DSS/Automatically-create-predefined-flows...)

I found this documentation section on python methods to create recipes : https://doc.dataiku.com/dss/latest/python-api/rest-api-client/reference.html#recipes

However, it seems to be limited to native Dataiku recipes.

Can I create a custom recipe, from a plugin, using Dataiku's python API ?

 

Thx for your help

0 Kudos
1 Reply
Andrey
Dataiker Alumni

Hi,

Yes, it's possible to create recipes using Python API even if they're defined in plugins. 

Here's an example:

    creator = dataikuapi.dss.recipe.DSSRecipeCreator("CustomCode_active-learning-query-sampler","query-sampler",p)
    creator.with_input(saved_model_id, role='saved_model')
    creator.with_input('j47pTfgK', role='unlabeled_samples')
    creator.with_output('image-queries', role='queries')

    creator.recipe_proto = {
      "type": "CustomCode_active-learning-query-sampler",
      "neverRecomputeExistingPartitions": False,
      "optionalDependencies": False,
      "params": {
        "customConfig": {
          "batch_size": 1,
          "confidence": 0.5,
          "gpu_allocation": 1,
          "list_gpu": "0",
          "record_missing": False,
          "strategy": "confidence",
          "should_use_gpu": True
        },
        "containerSelection": {
          "containerMode": "INHERIT"
        }
      },
      "customMeta": {
        "kv": {}
      },
      "redispatchPartitioning": False,
      "maxRunningActivities": 0,
      "inputs": {
        "saved_model": {
          "items": [
            {
              "ref": saved_model_id,
              "deps": []
            }
          ]
        },
        "unlabeled_samples": {
          "items": [
            {
              "ref": "j47pTfgK",
              "deps": []
            }
          ]
        }
      },
      "outputs": {
        "queries": {
          "items": [
            {
              "ref": "image-queries",
              "appendMode": False
            }
          ]
        }
      }
    }
    
    creator.set_raw_mode()
    creator.create()

 In order to obtain the correct recipe prototype you can first create a recipe manually, then call this snippet to obtain a list of recipes and take it from there :

import dataiku, dataikuapi
c = dataiku.api_client()
p = dataikuapi.dss.project.DSSProject(c, dataiku.Project().project_key)
p.list_recipes()

 

Regards 

Andrey Avtomonov
R&D Engineer @ Dataiku
0 Kudos