Order Rasa to train a new model through HTTP API

Hello,

I have some questions about training a new model through HTTP API. In the document, it shows the request samples: application/json

{
    "domain": "intents:\n  - greet\n  - goodbye\n  - affirm\n  - deny\n  - mood_great\n  - mood_unhappy\n\nactions:\n  - utter_greet\n  - utter_cheer_up\n  - utter_did_that_help\n  - utter_happy\n  - utter_goodbye\n\ntemplates:\n  utter_greet:\n  - text: \"Hey! How are you?\"\n\n  utter_cheer_up:\n  - text: \"Here is something to cheer you up:\"\n    image: \"https://i.imgur.com/nGF1K8f.jpg\"\n\n  utter_did_that_help:\n  - text: \"Did that help you?\"\n\n  utter_happy:\n  - text: \"Great carry on!\"\n\n  utter_goodbye:\n  - text: \"Bye\"",
    "config": "language: en\npipeline: supervised_embeddings\npolicies:\n  - name: MemoizationPolicy\n  - name: KerasPolicy",
    "nlu": "## intent:greet\n- hey\n- hello\n- hi\n## intent:goodbye\n- bye\n- goodbye\n- have a nice day\n- see you\n## intent:affirm\n- yes\n- indeed\n## intent:deny\n- no\n- never\n## intent:mood_great\n- perfect\n- very good\n- great\n## intent:mood_unhappy\n- sad\n- not good\n- unhappy",
    "stories": "## happy path\n* greet\n\n  - utter_greet\n\n* mood_great\n\n  - utter_happy\n\n## sad path 1\n* greet\n\n  - utter_greet\n\n* mood_unhappy\n\n  - utter_cheer_up\n\n  - utter_did_that_help\n\n* affirm\n\n  - utter_happy\n\n## sad path 2\n* greet\n\n  - utter_greet\n\n* mood_unhappy\n\n  - utter_cheer_up\n\n  - utter_did_that_help\n\n* deny\n\n  - utter_goodbye\n\n## say goodbye\n* goodbye\n\n  - utter_goodbye",
    "force": false,
    "save_to_default_model_directory": true
}

So if i understand correctly, the source has to store the domain, config, nlu,… files and read their content, pass it to the request body and send it to Rasa ? What if i want to keep those files at Rasa side, can i send the request to tell Rasa to train a new model with default paths to those files like it normally does ? I intent to update the nlu files at Rasa side. Which approach is better ?:

  • Store training files and update them at the source, read their content and pass it to the request like above.
  • Store training files and update them at Rasa side, send the request to tell Rasa to train a new model with default file paths (if possible).

What if i want to keep those files at Rasa side, can i send the request to tell Rasa to train a new model with default paths to those files like it normally does ?

You can do that with Rasa X. The normal Rasa server does not manage training data - you have to supply it.

Store training files and update them at Rasa side, send the request to tell Rasa to train a new model with default file paths (if possible).

Security wise I think that’s not a good approach. You could tell the server to process any file at the OS and potentially embed that in the model.

So if you don’t use Rasa X to manage the training data, I’d suggest the first approach.

1 Like