-
Notifications
You must be signed in to change notification settings - Fork 83
Formatters
Formatters are the functions that allow converting the input and output API of services into Agent's API. These functions are written in Python.
These functions should accept a single parameter: dialog (in dict form), and return a list of tasks for service processing. Each task should be in a format which is correct for associated service. From a dict form of a dialog you can extract data on:
- Human -
dialog['human'] - Bot -
dialog['bot'] - List of all utterances -
dialog['utterances'] - List of only human utterances -
dialog['human_utterances'] - List of only bot utterances -
dialog['bot_utterances']
Each utterance (both bot and human) has a number of same parameters:
- Text -
utterance['text'] - Annotations -
utterance['annotations'] - User (human or bot, depending on type of utterance) -
utterance['user']
Human utterance has additional parameters:
- List of hypotheses -
utterance['hypotheses'] - Additional attributes -
utterance['attributes']
Bot utterance also has additional attributes:
- Active skill name (skill, which provided actual response) -
utterance['active_skill'] - Response confidence -
utterance['confidence'] - Original response text (not modified by postprocessors) -
utterance['orig_text']
These functions should accept one sample of skill response, and re-format it, making further processing available. These formatters are optional.
TBD
To use a formatter you simply should specify its name in the config of your Skill, Annotator, or Response Selector, like this:
"harvesters_maintenance_skill": {
"connector": {
"protocol": "http",
"url": "http://harvesters_maintenance_skill:3002/respond"
},
"dialog_formatter": "dp_formatters:full_dialog",
"response_formatter": "dp_formatters:base_skill_formatter",
"state_manager_method": "add_hypothesis",
"previous_services": ["annotators"]
},
Here, both dialog_formatter and response_formatter are used.
- State Formatters @ ReadTheDocs