REST API

Each library component or skill can be easily made available for inference as a REST web service. The general method is:

python -m deeppavlov riseapi <config_path> [-d] [-p <port_number>]

(optional -d key is for dependencies download before service start)

Web service properties (host, port, model endpoint, GET request arguments) are provided in deeppavlov/utils/settings/server_config.json, but port can be overridden with the -p key in command line. Properties from common_defaults section are used by default unless they are overridden by component-specific properties, provided in model_defaults section of the server_config.json. Component-specific properties are bound to the component by server_utils label in metadata/labels section of the component config. Value of server_utils label from component config should match with properties key from model_defaults section of server_config.json.

For example, metadata/labels/server_utils tag from go_bot/gobot_dstc2.json references to the GoalOrientedBot section of server_config.json. Therefore, model_endpoint parameter in common_defaults will be will be overridden with the same parameter from model_defaults/GoalOrientedBot.

Model argument names are provided as list in model_args_names parameter, where arguments order corresponds to component API. When inferencing model via REST api, JSON payload keys should match component arguments names from model_args_names. Default argument name for one argument components is “context”. Here are POST requests examples for some of the library components:

Component POST request JSON payload example
One argument components
NER component {“context”:[“Elon Musk launched his cherry Tesla roadster to the Mars orbit”]}
Intent classification component {“context”:[“I would like to go to a restaurant with Asian cuisine this evening”]}
Automatic spelling correction component {“context”:[“errror”]}
Ranking component {“context”:[“What is the average cost of life insurance services?”]}
(Seq2seq) Goal-oriented bot {“context”:[“Hello, can you help me to find and book a restaurant this evening?”]}
Multiple arguments components
Question Answering component
{“context”:[“After 1765, growing philosophical and political differences strained the relationship between Great Britain and its colonies.”],
 “question”:[“What strained the relationship between Great Britain and its colonies?”]}

Flasgger UI for API testing is provided on <host>:<port>/apidocs when running a component in riseapi mode.