The Skill Selector service provides a list of selected skills to generate a response for a dialogue. It is a part of the main Dream distribution, built on the DeepPavlov Agent framework.
The Skill Selector service is part of the pipeline that includes the following components:
The Skill Selector forms a list of the most relevant skills based on the dialogue context. It considers fallback and open-domain skills by default. Closed-domain skills are selected if specific triggers are detected, such as topics, entities, intents, or regular expressions. To avoid resource overload, the number of selected skills is controlled.
The Skill Selector is a rule-based algorithm integrated into the Agent’s container. This design decision minimizes information loss during container transfers and optimizes resource usage.
The Skill Selector algorithm follows these steps:
For more details, refer to the DeepPavlov Agent framework documentation.
Note: The restrictions on sensitive topics may be removed in the future due to improved toxicity classification.
When creating a new distribution with existing skills, there is no need to modify the Skill Selector. The Agent will automatically call only the skills specified in the pipeline file. However, if desired, you can create a custom Skill Selector that receives dialogues and returns batches of skill lists.
We are actively working on simplifying the Skill Selector: currently, the Skill Selector is a rule-based algorithm that selects both open-domain and closed-domain skills based on user utterances and their annotations.
To add a custom closed-domain skill, utilize triggers defined in
SKILL_TRIGGERS from dream/common/skills_turn_on_topics_and_patterns.py.
For more information, refer to the Skill Selector documentation in the DeepPavlov Agent documentation.