notice
This is documentation for Rasa Documentation v2.x, which is no longer actively maintained.
For up-to-date documentation, see the latest version (3.x).
Rasa Open Source Change Log
All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning starting with version 1.0.
[2.8.34] - 2022-12-22 No significant changes.
[2.8.33] - 2022-08-30
Bugfixes
- #11395: Fixes a bug that lead to initial slot values being incorporated into all rules by default, thus breaking most rules when the slot value changed from its initial value
[2.8.32] - 2022-08-15 No significant changes.
[2.8.31] - 2022-07-12
Bugfixes
- #11322: Bump the required version of uvloop to accommodate Sanic version 21.12.1.
[2.8.30] - 2022-07-05
Bugfixes
- #11131: Responses with two newlines will now be split correctly to separate messages if buttons are present, so that buttons will be sent with the last message.
- #11293: Make YAML sequence indent configurable via env var "DEFAULT_YAML_SEQUENCE_INDENT_ENV_VAR
Miscellaneous internal changes
[2.8.29] - 2022-06-23
Miscellaneous internal changes
[2.8.28] - 2022-05-19
Improvements
- #10482: Adds a new optional config argument
prefix_suffix_case_sensitivewhich can be set toFalseto ignore cases in prefix and suffix functions. - #11122: Added flag
use_gputoTEDPolicyandUnexpecTEDIntentPolicythat can be used to enable training on CPU even when a GPU is available.
[2.8.27] - 2022-04-05
Deprecations and Removals
- #11048: Removed Python 3.6 support as it reached its end of life in December 2021.
[2.8.26] - 2022-03-15
Bugfixes
- #10675: Fix broken conversion from Rasa JSON NLU data to Rasa YAML NLU data.
[2.8.25] - 2022-02-11
Bugfixes
- #10808: Fix the importing of retrieval intents when using a multidomain file with entity roles and groups.
[2.8.24] - 2022-02-10
Improvements
#10394: Allow single tokens in rasa end-to-end test files to be annotated with multiple entities.
Some entity extractors (s.a.
RegexEntityExtractor) can generate multiple entities from a single expression. Before this change,rasa testwould fail in this case, because test stories could not be annotated correctly. New annotation option isstories:- story: Some storysteps:- user: |cancel my [iphone][{"entity":"iphone", "value":"iphone"},{"entity":"smartphone", "value":"true"}{"entity":"mobile_service", "value":"true"}]intent: cancel_contract
[2.8.23] - 2022-02-01
Bugfixes
- #10728: Use
tf.functionfor model prediction to improve inference speed. - #10743: Fix
rasa test coreerror from running test story that contains an entity but no user utterance text. - #10768: Merge domain entities as lists of dicts, not lists of lists to support entity roles and groups across multiple domains.
Miscellaneous internal changes
[2.8.22] - 2022-01-19
Bugfixes
- #10606: Fix
max_historytruncation inAugmentedMemoizationPolicyto preserve the most recentUserUtteredevent. Previously,AugmentedMemoizationPolicyfailed to predict next action after long sequences of actions (longer thanmax_history) because the policy did not have access to the most recent user message.
[2.8.21] - 2022-01-07
Bugfixes
- #10634: Add
RASA_ENVIRONMENTheader in Kafka only if the environmental variable is set.
Miscellaneous internal changes
[2.8.20] - 2022-01-05
Improvements
- #10621: Make
rasa data validatecheck for duplicated intents, forms, responses and slots when using domains split between multiple files.
Bugfixes
- #10623: Add an option to specify
--domainforrasa test nluCLI command.
[2.8.19] - 2021-12-28
Bugfixes
- a small bugfix to domain merging.
[2.8.18] - 2021-12-27
Bugfixes
#10137: Fixes Domain loading when domain config uses multiple yml files.
Previously not all configured attributes were necessarily known when merging Domains, and in the case of
entities` were not being properly assigned tointents``.
[2.8.17] - 2021-12-21
Bugfixes
- #10741: Fix load method of LexicalSyntacticFeaturizer to make the class inheritable.
- #7645: Do not print warning when subintent actions have response.
[2.8.16] - 2021-12-09
Improvements
- #10413: The value of the
RASA_ENVIRONMENTenvironmental variable is sent as a header in messages logged byKafkaEventBroker. This value was previously only made available byPikaEventConsumer.
Bugfixes
- #10458: Make
action_metadatajson serializable and make it available on the tracker. This is a backport of a fix in 3.0.0.
[2.8.15] - 2021-11-25
Bugfixes
- #10381: Validate regular expressions in nlu training data configuration.
[2.8.14] - 2021-11-18
Bugfixes
[2.8.13] - 2021-11-11
Bugfixes
- #9949: Fixed new intent creation in
rasa interactivecommand. Previously, this failed with 500 from the server due toUnexpecTEDIntentPolicytrying to predict with the new intent not in domain. - #9982: Install mitie library when preparing test runs. This step was missing before
and tests were thus failing as we have many tests which rely on mitie library.
Previously,
make install-fullwas required.
Miscellaneous internal changes
[2.8.12] - 2021-10-21
Bugfixes
#9771: Fixed a bug where
rasa test --fail-on-prediction-errorswould raise aWrongPredictionExceptionfor entities which were actually predicted correctly.This happened in two ways:
- if for a user message some entities were extracted multiple times (by multiple entity extractors) but listed only once in the test story,
- if the order in which entities from a message were extracted didn't match the order in which they were listed in the test story.
Improved Documentation
- #9691: Improve the documentation for training
TEDPolicywith data augmentation.
[2.8.11] - 2021-10-20
Bugfixes
#9858: Updates dependency on
sanic-jwt(1.5.0 -> ">=1.6.0, <1.7.0")This removes the need to pin the version of
pyjwtas the newer version ofsanic-jwtmanages this properly.
[2.8.10] - 2021-10-14
Bugfixes
#5657: Add List handling in the
send_custom_jsonmethod onchannels/facebook.py. Bellow are some examples that could cause en error before.Example 1: when the whole json is a List
[{"blocks": {"type": "progression_bar","text": {"text": "progression 1", "level": "1"},}},{"sender": {"id": "example_id"}},]Example 2: instead of being a Dict, blocks is a List when there are 2 type keys under it
{"blocks": [{"type": "title", "text": {"text": "Conversation progress"}},{"type": "progression_bar","text": {"text": "Look how far we are...", "level": "1"},},]}#7676: Fixed bug when using wit.ai training data to train. Training failed with an error similarly to this:
File "./venv/lib/python3.8/site-packages/rasa/nlu/classifiers/diet_classifier.py", line 803, in trainself.check_correct_entity_annotations(training_data)File "./venv/lib/python3.8/site-packages/rasa/nlu/extractors/extractor.py", line 418, in check_correct_entity_annotationsentities_repr = [File "./venv/lib/python3.8/site-packages/rasa/nlu/extractors/extractor.py", line 422, in <listcomp>entity[ENTITY_ATTRIBUTE_VALUE],KeyError: 'value'#9851: Fix CVE-2021-41127
[2.8.9] - 2021-10-08
Improvements
#7619: Bump TensorFlow version to 2.6.
This update brings some security benefits (see TensorFlow release notes for details). However, internal experiments suggest that it is also associated with increased train and inference time, as well as increased memory usage.
You can read more about why we decided to update TensorFlow, and what the expected impact is here.
If you experience a significant increase in train time, inference time, and/or memory usage, please let us know in the forum.
Users can no longer set
TF_DETERMINISTIC_OPS=1if they are using GPU(s) because atf.errors.UnimplementedErrorwill be thrown by TensorFlow (read more here).caution
This breaks backward compatibility of previously trained models. It is not possible to load models trained with previous versions of Rasa Open Source. Please re-train your assistant before trying to use this version.
[2.8.8] - 2021-10-06
Improvements
- #7250: Added a function to display the actual text of a Token when inspecting a Message in a pipeline, making it easier to debug.
Improved Documentation
- #9780: Removing the experimental feature warning for
conditional response variationsfrom the Rasa docs. The behaviour of the feature remains unchanged. - #9782: Updates quick install documentation with optional venv step, better pip install instructions, & M1 warning
[2.8.7] - 2021-09-20
Bugfixes
- #9678: Explicitly set the upper limit for currently compatible TensorFlow versions.
[2.8.6] - 2021-09-09
Bugfixes
- #9302: Fix rules not being applied when a featurised categorical slot has as one of its allowed
values
none,NoNe,Noneor a similar value.
[2.8.5] - 2021-09-06
Bugfixes
- #9476: AugmentedMemoizationPolicy is accelerated for large trackers
- #9542: Bump tensorflow to 2.3.4 to address security vulnerabilities
[2.8.4] - 2021-09-02
Improvements
- #5546: Increase speed of augmented lookup for
AugmentedMemoizationPolicy
Bugfixes
- #7362: Fix
--databeing treated as if non-optional on sub-commands ofrasa data convert - #9490: Fixes bug where
hide_rule_turnwas defaulting toNonewhen ActionExecuted was deserialised.
Miscellaneous internal changes
[2.8.3] - 2021-08-19
Bugfixes
- #7695: Ignore checking that intent is in domain for E2E story utterances when running
rasa data validate. Previously data validation would fail on E2E stories.
[2.8.2] - 2021-08-04
Bugfixes
#9203: Fixes a bug which caused training of
UnexpecTEDIntentPolicyto crash when end-to-end training stories were included in the training data.Stories with end-to-end training data will now be skipped for the training of
UnexpecTEDIntentPolicy.
Improved Documentation
- #8024: Removing the experimental feature warning for the
story validationtool from the rasa docs. The behaviour of the feature remains unchanged. - #8791: Removing the experimental feature warning for
entity roles and groupsfrom the rasa docs, and from the code where it previously appeared as a print statement. The behaviour of the feature remains otherwise unchanged.
[2.8.1] - 2021-07-22
Improvements
#9085: Add support for
cafileparameter inendpoints.yaml. This will load a custom local certificate file and use it when making requests to that endpoint.For example:
action_endpoint:url: https://localhost:5055/webhookcafile: ./cert.pemThis means that requests to the action server
localhost:5055will use the certificatecert.pemlocated in the current working directory.
Bugfixes
- #9182: Fixes wrong overriding of
epochsparameter whenTEDPolicyorUnexpecTEDIntentPolicyis not loaded in finetune mode.
[2.8.0] - 2021-07-12
Deprecations and Removals
#9045: The option
model_confidence=linear_normis deprecated and will be removed in Rasa Open Source3.0.0.Rasa Open Source
2.3.0introducedlinear_normas a possible value formodel_confidenceparameter in machine learning components such asDIETClassifier,ResponseSelectorandTEDPolicy. Based on user feedback, we have identified multiple problems with this option. Therefore,model_confidence=linear_normis now deprecated and will be removed in Rasa Open Source3.0.0. If you were usingmodel_confidence=linear_normfor any of the mentioned components, we recommend to revert it back tomodel_confidence=softmaxand re-train the assistant. After re-training, we also recommend to re-tune the thresholds for fallback components.#9091: The fallback mechanism for spaCy models has now been removed in Rasa
3.0.0.Rasa Open Source
2.5.0introduced support for spaCy 3.0. This introduced a breaking feature because models would no longer be manually linked. To make the transition smooth Rasa would rely on thelanguageparameter in theconfig.ymlto fallback to a medium spaCy model if no model was configured for theSpacyNLPcomponent. In Rasa Open Source3.0.0and onwards theSpacyNLPcomponent will require the model name (like"en_core_web_md") to be passed explicitly.
Features
#8724: Added
sasl_mechanismas an optional configurable parameters for the Kafka Producer.#8913: Introduces a new policy called
UnexpecTEDIntentPolicy.UnexpecTEDIntentPolicyhelps you review conversations and also allows your bot to react to unexpected user turns in conversations. It is an auxiliary policy that should only be used in conjunction with at least one other policy, as the only action that it can trigger is the special and newly introducedaction_unlikely_intentaction.The auto-configuration will include
UnexpecTEDIntentPolicyin your configuration automatically, but you can also include it yourself in thepoliciessection of the configuration:policies:- name: UnexpecTEDIntentPolicyepochs: 200max_history: 5As part of the feature, it also introduces:
IntentMaxHistoryTrackerFeaturizerto featurize the trackers forUnexpecTEDIntentPolicy.MultiLabelDotProductLossto supportUnexpecTEDIntentPolicy's multi-label training objective.- A new default action called
action_unlikely_intent.
rasa test command has also been adapted to UnexpecTEDIntentPolicy:
- If a test story contains
action_unlikely_intentand the policy ensemble does not trigger it, this leads to a test error (wrongly predicted action) and the corresponding story will be logged infailed_test_stories.yml. - If the story does not contain
action_unlikely_intentand Rasa Open Source does predict it then the prediction ofaction_unlikely_intentwill be ignored for the evaluation (and hence not lead to a prediction error) but the story will be logged in a file calledstories_with_warnings.yml.
The rasa data validate command will warn if action_unlikely_intent is
included in the training stories. Accordingly, YAMLStoryWriter and MarkdownStoryWriter have been updated to not dump action_unlikely_intent when writing stories to a file.
:::caution The introduction of a new default action breaks backward compatibility of previously trained models. It is not possible to load models trained with previous versions of Rasa Open Source. Please re-train your assistant before trying to use this version.
:::
Improvements
#8127: Added detailed json schema validation for
UserUttered,SlotSet,ActionExecutedandEntitiesAddedevents both sent and received from the action server, as well as covered at high-level the validation of the rest of the 20 events. In case the events are invalid, aValidationErrorwill be raised.#8232: Users don't need to specify an additional buffer size for sparse featurizers anymore during incremental training.
Space for new sparse features are created dynamically inside the downstream machine learning models -
DIETClassifier,ResponseSelector. In other words, no extra buffer is created in advance for additional vocabulary items and space will be dynamically allocated for them inside the model.This means there's no need to specify
additional_vocabulary_sizeforCountVectorsFeaturizerornumber_additional_patternsforRegexFeaturizer. These parameters are now deprecated.Before
pipeline:- name: "WhitespaceTokenizer"- name: "RegexFeaturizer"number_additional_patterns: 100- name: "CountVectorsFeaturizer"additional_vocabulary_size: {text: 100, response: 20}Now
pipeline:- name: "WhitespaceTokenizer"- name: "RegexFeaturizer"- name: "CountVectorsFeaturizer"Also, all custom layers specifically built for machine learning models -
RasaSequenceLayer,RasaFeatureCombiningLayerandConcatenateSparseDenseFeaturesnow inherit fromRasaCustomLayerso that they support flexible incremental training out of the box.#8295: Speed up the contradiction check of the
RulePolicyby a factor of 3.#8801: Change the confidence score assigned by
FallbackClassifierto fallback intent to be the same as the fallback threshold.#8926: Issue a UserWarning if a specified domain folder contains files that look like YML files but cannot be parsed successfully. Only invoked if user specifies a folder path in
--domainparamater. Previously those invalid files in the specified folder were silently ignored.
Does not apply to individually specified domain YAML files, e.g.--domain /some/path/domain.yml, those being invalid will still raise an exception.
Bugfixes
- #8711: Fix for unnecessary retrain and duplication of folders in the model
Miscellaneous internal changes
[2.7.1] - 2021-06-16
Bugfixes
#7286: Best model checkpoint allows for metrics to be equal to previous best if at least one metric improves, rather than strict improvement for each metric.
#8200: Fixes a bug where multiple plots overlap each other and are rendered incorrectly when comparing performance across multiple NLU pipelines.
#8812: Don't evaluate entities if no entities present in test data.
Also, catch exception in
plot_paired_histogramwhen data is empty.
[2.7.0] - 2021-06-03
Improvements
- #7691: Changed the default config to train the
RulePolicybefore theTEDPolicy. This means that conflicting rule/stories will be identified before a potentially slow training of theTEDPolicy. - #7799: Updated validator used by
rasa data validateto verify that actions used in stories and rules are present in the domain and that form slots match domain slots. - #7912: Rename
plot_histogramtoplot_paired_histogramand fix missing bars in the plot. - #8225: Changed --data option type in the ``rasa data validate``` command to allow more than one path to be passed.
Bugfixes
- #8152: The file
failed_test_stories.yml(generated byrasa test) now also includes the wrongly predicted entity as a comment next to the entity of a user utterance. Additionally, the comment printed next to the intent of a user utterance is printed only if the intent was wrongly predicted (irrelevantly if there was a wrongly predicted entity or not in the specific user utterance). - #8309: Added check in PikaEventBroker constructor: if port cannot be cast to integer, raise RasaException
- #8388: Fixed bug where missing intent warnings appear when running
rasa test - #8611: Update
should_retrainfunction to return the correct fingerprint comparison result even when there is a problem with model unpacking. - #8719: Handle correctly Telegram edited message.
Miscellaneous internal changes
[2.6.3] - 2021-05-28
Bugfixes
- #8046:
ResponseSelectorcan now be trained with the transformer enabled (i.e. when a positivenumber_of_transformer_layersis provided) even if one doesn't specify the transformer's size. Previously, not specifyingtransformer_sizeled to an error. - #8386: Return
EntityEvaluationResultduring evaluation of test stories only ifparsed_messageis notNone. - #8546: Ignore
OSErrorin Sentry reporting. - #8547: Replaced
ValueErrorwithRasaExceptionin TED model_check_datamethod. - #8639: Changed import to fix agent creation in Jupyter.
Miscellaneous internal changes
[2.6.2] - 2021-05-18
Bugfixes
#8364: Fixed a bug where
ListSlots were filled with single items in case only one matching entity was extracted for this slot.Values applied to
ListSlots will be converted to aListin case they aren't one.#8581: Fix bug with false rule conflicts
This essentially reverts PR 8446, except for the tests. The PR is redundant due to PR 8646.
#8590: Handle
AttributeErrorthrown by empty slot mappings in domain form through refactoring.#8631: Fixed incorrect
The action 'utter_<response selector intent>' is used in the stories, but is not a valid utterance actionerror when runningrasa data validatewith response selector responses in the domain file.
Improved Documentation
- #8079: Added a note to clarify best practice for resetting all slots after form deactivation.
Miscellaneous internal changes
[2.6.1] - 2021-05-11
Bugfixes
#7908: Made
SchemaErrormessage available to validator so that the reason why reason schema validation fails duringrasa data validateis displayed when responsetextvalue isnull. Added warning message when deprecated MappingPolicy format is used in the domain.#8623: When there are multiple entities in a user message, they will get sorted when creating a representation of the current dialogue state.
Previously, the ordering was random, leading to inconsistent state representations. This would sometimes lead to memoization policies failing to recall a memorised action.
[2.6.0] - 2021-05-06
Deprecations and Removals
- #261: In forms, the keyword
required_slotsshould always precede the definition of slot mappings and the lack of it is deprecated. Please see the migration guide for more information. - #8428:
rasa.data.get_test_directory,rasa.data.get_core_nlu_directories, andrasa.shared.nlu.training_data.training_data.TrainingData::get_core_nlu_directoriesare deprecated and will be removed in Rasa Open Source 3.0.0. - #8498: Update the minimum compatible model version to "2.6.0". This means all models trained with an earlier version will have to be retrained.
Features
#8103: Feature enhancement enabling JWT authentication for the Socket.IO channel. Users can define
jwt_keyandjwt_methodas parameters in their credentials file for authentication.#8180: Allows a Rasa bot to be connected to a Twilio Voice channel. More details in the Twilio Voice docs
#8532: Conditional response variations are supported in the
domain.ymlwithout requiring users to write custom actions code.A condition can be a list of slot-value mapping constraints.
Improvements
#261: Added an optional
ignored_intentsparameter in forms.- To use it, add the
ignored_intentsparameter in yourdomain.ymlfile after the forms name and provide a list of intents to ignore. Please see Forms for more information. - This can be used in case the user never wants to fill any slots of a form with the specified intent, e.g. chitchat.
- To use it, add the
#5786: Add function to carry
max_historyto featurizer#7589: Improved the machine learning models' codebase by factoring out shared feature-processing logic into three custom layer classes:
ConcatenateSparseDenseFeaturescombines multiple sparse and dense feature tensors into one.RasaFeatureCombiningLayeradditionally combines sequence-level and sentence-level features.RasaSequenceLayeris used for attributes with sequence-level features; it additionally embeds the combined features with a transformer and facilitates masked language modeling.
#7685: Added the following usability improvements with respect to entities getting extracted multiple times:
- Added warnings for competing entity extractors at training time and for overlapping entities at inference time
- Improved docs to help users handle overlapping entity problems.
#7999: Replace
weight_sparsitywithconnection_densityin all transformer-based models and add guarantees about internal layers.We rename
DenseWithSparseWeightsintoRandomlyConnectedDense, and guarantee that even at density zero the output is dense and every input is connected to at least one output. The formerweight_sparsityparameter of DIET, TED, and the ResponseSelector, is now roughly equivalent to1 - connection_density, except at very low densities (high sparsities).All layers and components that used to have a
sparsityargument (Ffnn,TransformerRasaModel,MultiHeadAttention,TransformerEncoderLayer,TransformerEncoder) now have adensityargument instead.#8074: Rasa test now prints a warning if the test stories contain bot utterances that are not part of the domain.
#8263: Updated
asyncio.Task.all_taskstoasyncio.all_tasks, with a fallback for python 3.6, which raises an AttributeError forasyncio.all_tasks. This removes the deprecation warning for theTask.all_tasksusage.#8461: Change variable name from
itoarray_2D#8560: Implement a new interface
run_inferenceinsideRasaModelwhich performs batch inferencing through tensorflow models.rasa_predictinsideRasaModelhas been made a private method now by changing it to_rasa_predict.
Bugfixes
- #7005: Fixed a bug for plotting trackers with non-ascii texts during interactive training by enforcing utf-8 encoding
- #7589: Fix masked language modeling in DIET to only apply masking to token-level (sequence-level) features. Previously, masking was applied to both token-level and sentence-level features.
- #8300: Make it possible to use
nullentities in stories. - #8333: Introduce a
skip_validationflag in order to speed up reading YAML files that were already validated. - #8341: Fixed a bug in interactive training that lead to crashes for long Chinese, Japanese, or Korean user or bot utterances.
[2.5.2] - 2021-06-16
Features
- #8892: Added
sasl_mechanismas an optional configurable parameters for the Kafka Producer.
[2.5.1] - 2021-04-28
Bugfixes
- #8446: Fixed prediction for rules with multiple entities.
- #8545: Mitigated Matplotlib backend issue using lazy configuration and added a more explicit error message to guide users.
[2.5.0] - 2021-04-12
Deprecations and Removals
- #8141: The following import abbreviations were removed:
rasa.core.train: Please userasa.core.train.traininstead.rasa.core.visualize: Please userasa.core.visualize.visualizeinstead.rasa.nlu.train: Please userasa.nlu.train.traininstead.rasa.nlu.test: Please userasa.nlu.test.run_evaluationinstead.rasa.nlu.cross_validate: Please userasa.nlu.test.cross_validateinstead.
Features
#7869: Upgraded Rasa to be compatible with spaCy 3.0.
This means that we can support more features for more languages but there are also a few changes.
SpaCy 3.0 deprecated the
spacy link <language model>command so that means that from now on the full model name needs to be used in theconfig.ymlfile.Before
Before you could run
spacy link en en_core_web_mdand then we would be able to pick up the correct model from thelanguageparameter.language: enpipeline:- name: SpacyNLPNow
This behavior will be deprecated and instead you'll want to be explicit in
config.yml.language: enpipeline:- name: SpacyNLPmodel: en_core_web_mdFallback
To make the transition easier, Rasa will try to fall back to a medium spaCy model when-ever a compatible language is configured for the entire pipeline in
config.ymleven if you don't specify amodel. This fallback behavior is temporary and will be deprecated in Rasa 3.0.0.We've updated our docs to reflect these changes. All examples now show a direct link to the correct spaCy model. We've also added a warning to the SpaCyNLP docs that explains the fallback behavior.
Improvements
#4280: Improved CLI startup time.
#4596: Add
augmentationandnum_threadsarguments to APIPOST /model/trainFix boolean casting issue for
force_trainingandsave_to_default_model_directoryarguments#7477: Add minimum compatible version to --version command
#7660: Updated warning for unexpected slot events during prediction time to Rasa Open Source 2.0 YAML training data format.
#7701: Hide dialogue turns predicted by
RulePolicyin the tracker states for ML-only policies likeTEDPolicyif those dialogue turns only appear as rules in the training data and do not appear in stories.Add
set_shared_policy_states(...)method to all policies. This method sets_rule_only_datadict with keys:rule_only_slots: Slot names, which only occur in rules but not in stories.rule_only_loops: Loop names, which only occur in rules but not in stories.
This information is needed for correct featurization to hide dialogue turns that appear only in rules.
#8208: Faster reading of YAML NLU training data files.
#8335: Added partition_by_sender flag to Kafka Producer to optionally associate events with Kafka partition based on sender_id.
Bugfixes
#7260: Fixed the 'loading model' message which was logged twice when using
rasa run.#7379: Change training data validation to only count nlu training examples.
#7450: Rule tracker states no longer include the initial value of slots. Rules now only require slot values when explicitly stated in the rule.
#7640:
rasa test,rasa test coreandrasa test nluno longer show temporary paths in case there are issues in the test files.#7690: Resolved memory problems with dense features and
CRFEntityExtractor#7916: Handle empty intent and entity mapping in the
domain.There is now an InvalidDomain exception raised if in the
domain.ymlfile there are empty intent or entity mappings. An example of empty intent and entity mappings is the following :intents:- greet:- goodbye:entities:- cuisine:- number:#8102: Fixed a bug in a form where slot mapping doesn't work if the predicted intent name is substring for another intent name.
#8114: Fixes bug where stories could not be retrieved if entities had no start or end.
#8178: Catch ChannelNotFoundEntity exception coming from the pika broker and raise as ConnectionException.
#8337: Fix bug with NoReturn throwing an exception in Python 3.7.0 when running
rasa train#8382: Throw
RasaExceptioninstead ofValueErrorin situations when environment variables specified in YAML cannot be expanded.#8343: Updated python-engineio version for compatibility with python-socketio
Miscellaneous internal changes
[2.4.3] - 2021-03-26
Bugfixes
- #8114: Fixes bug where stories could not be retrieved if entities had no start or end.
[2.4.2] - 2021-03-25
Bugfixes
- #7835: Fix
UnicodeExceptioninis_key_in_yaml. - #8258: Fixed the bug that events from previous conversation sessions would be re-saved in the
SQLTrackerStoreorMongoTrackerStorewhenretrieve_events_from_previous_conversation_sessionswas true.
[2.4.1] - 2021-03-23
Bugfixes
- #8194: Fix
TEDPolicytraining e2e entities when no entities are present in the stories but there are entities in the domain. - #8198: Fixed missing model configuration file validation.
- #8223: In Rasa 2.4.0, support for using
templateinutter_messagewhen handling a custom action was wrongly deprecated. Bothtemplateandresponseare now supported, though note thattemplatewill be deprecated at Rasa 3.0.0.
[2.4.0] - 2021-03-11
Deprecations and Removals
#6484: NLG Server
- Changed request format to send
responseas well astemplateas a field. Thetemplatefield will be removed in Rasa Open Source 3.0.0.
rasa.core.agent- The terminology
templateis deprecated and replaced byresponse. Support fortemplatefrom the NLG response will be removed in Rasa Open Source 3.0.0. Please see here for more details.
rasa.core.nlg.generatorgenerate()now takes inutter_actionas a parameter.- The terminology
templateis deprecated and replaced byresponse. Support fortemplatein theNaturalLanguageGeneratorwill be removed in Rasa Open Source 3.0.0.
rasa.shared.core.domain- The property
templatesis deprecated. Useresponsesinstead. It will be removed in Rasa Open Source 3.0.0. retrieval_intent_templateswill be removed in Rasa Open Source 3.0.0. Please useretrieval_intent_responsesinstead.is_retrieval_intent_templatewill be removed in Rasa Open Source 3.0.0. Please useis_retrieval_intent_responseinstead.check_missing_templateswill be removed in Rasa Open Source 3.0.0. Please usecheck_missing_responsesinstead.
Response Selector
- Changed request format to send
Improvements
#7022: The following endpoints now require the existence of the conversation for the specified conversation ID, raising an exception and returning a 404 status code.
GET /conversations/<conversation_id:path>/storyPOST /conversations/<conversation_id:path>/executePOST /conversations/<conversation_id:path>/predict
#7438: Simplify our training by overwriting
train_stepinstead offitfor our custom models.This allows us to use the build-in callbacks from Keras, such as the Tensorboard Callback, which offers more functionality compared to what we had before.
:::warning If you want to use Tensorboard for
DIETClassifier,ResponseSelector, orTEDPolicyand log metrics after every (mini)batch, please use 'batch' instead of 'minibatch' as 'tensorboard_log_level'.#7578: When
TEDis configured to extract entitiesrasa testnow evaluates them against the labels in the test stories. Results are saved in/resultsalong with the results for the NLU components that extract entities.#7680: We're now running integration tests for Rasa Open Source, with initial coverage for
SQLTrackerStore(with PostgreSQL),RedisLockStore(with Redis) andPikaEventBroker(with RabbitMQ). The integration tests are now part of our CI, and can also be ran locally usingmake test-integration(see Rasa Open Source README for more information).#7763: Allow tests to be located anywhere, not just in
testsdirectory.#7893: Model configuration files are now validated whether they match the expected schema.
#7952: Speed up
YAMLStoryReader.is_key_in_yamlfunction by making it to check if key is in YAML without actually parsing the text file.#7953: Speed up YAML parsing by reusing parsers, making the process of environment variable interpolation optional, and by not adding duplicating implicit resolvers and YAML constructors to
ruamel.yaml#7955: Drastically improved finger printing time for large story graphs
#8000: Remove console logging of conversation level F1-score and precision since these calculations were not meaningful.
Add conversation level accuracy to core policy results logged to file in
story_report.jsonafter runningrasa test coreorrasa test.#8100: Improved the lock store debug log message when the process has to queue because other messages have to be processed before this item.
Bugfixes
#4612: Fixed the bug that OR statements in stories would break the check whether a model needs to be retrained
#7063: Update the spec of
POST /model/test/intentsand add tests for cases when JSON is provided.Fix the incorrect temporary file extension for the data that gets extracted from the payload provided in the body of
POST /model/test/intentsrequest.#7113: Fix for the cli command
rasa data convert configwhen migrating Mapping Policy and no rules.Making
rasa data convert configmigrate correctly the Mapping Policy when no rules are available. It updates theconfig.ymlfile by removing theMappingPolicyand adding theRulePolicyinstead. Also, it creates thedata/rules.ymlfile even if empty in the case of no available rules.#7470: Allow to have slots with values that result to a dictionary under the key
slot_was_set(instories.ymlfile).An example would be to have the following story step in
stories.yml:- slot_was_set:- some_slot:some_key: 'some_value'other_key: 'other_value'This would be allowed if the
some_slotis also set accordingly in thedomain.ymlwith typeany.#7662: Update the fingerprinting function to recognize changes in lookup files.
#7932: Fixed a bug when interpolating environment variables in YAML files which included
$in their value. This led to the following stack trace:ValueError: Error when trying to expand the environment variables in '${PASSWORD}'. Please make sure to also set these environment variables: '['$qwerty']'.(13 additional frame(s) were not displayed)...File "rasa/utils/endpoints.py", line 26, in read_endpoint_configcontent = rasa.shared.utils.io.read_config_file(filename)File "rasa/shared/utils/io.py", line 527, in read_config_filecontent = read_yaml_file(filename)File "rasa/shared/utils/io.py", line 368, in read_yaml_filereturn read_yaml(read_file(filename, DEFAULT_ENCODING))File "rasa/shared/utils/io.py", line 349, in read_yamlreturn yaml_parser.load(content) or {}File "rasa/shared/utils/io.py", line 314, in env_var_constructor" variables: '{}'.".format(value, not_expanded)#7949: The REQUESTED_SLOT always belongs to the currently active form.
Previously it was possible that after form switching, the REQUESTED_SLOT was for the previous form.
#96: Update the
LanguageModelFeaturizertests to reflect new default model weights forbert, and skip allberttests with default model weights on CI, runberttests withbert-base-uncasedon CI instead.
Improved Documentation
- #8080: Update links to Sanic docs in the documentation.
- #8109: Update Rasa Playground to correctly use
tracking_idwhen calling API methods.
Miscellaneous internal changes
[2.3.5] - 2021-06-16
Features
- #8860: Added
sasl_mechanismas an optional configurable parameters for the Kafka Producer.
Improvements
- #7955: Drastically improved finger printing time for large story graphs
- #8100: Improved the lock store debug log message when the process has to queue because other messages have to be processed before this item.
Bugfixes
- #4612: Fixed the bug that OR statements in stories would break the check whether a model needs to be retrained
- #8649: Updated
python-engineiodependency version for compatibility withpython-socketio.
Improved Documentation
- #8080: Update links to Sanic docs in the documentation.
[2.3.4] - 2021-02-26
Bugfixes
#8014: Setting
model_confidence=cosineinDIETClassifier,ResponseSelectorandTEDPolicyis deprecated and will no longer be available. This was introduced in Rasa Open Source version2.3.0but post-release experiments suggest that using cosine similarity as model's confidences can change the ranking of predicted labels which is wrong.model_confidence=inneris deprecated and is replaced bymodel_confidence=linear_normas the former produced an unbounded range of confidences which broke the logic of assistants in various other places.We encourage you to try
model_confidence=linear_normwhich will produce a linearly normalized version of dot product similarities with each value in the range[0,1]. This can be done with the following config:- name: DIETClassifiermodel_confidence: linear_normconstrain_similarities: TrueThis should ease up tuning fallback thresholds as confidences for wrong predictions are better distributed across the range
[0, 1].If you trained a model with
model_confidence=cosineormodel_confidence=innersetting using previous versions of Rasa Open Source, please re-train by either removing themodel_confidenceoption from the configuration or setting it tolinear_norm.model_confidence=cosineis removed from the configuration generated by auto-configuration.
[2.3.3] - 2021-02-25
Bugfixes
- #8001: Fixed bug where the conversation does not lock before handling a reminder event.
[2.3.2] - 2021-02-22
Bugfixes
- #7972: Fix a bug where, if a user injects an intent using the HTTP API, slot auto-filling is not performed on the entities provided.
[2.3.1] - 2021-02-17
Bugfixes
- #7970: Fixed a YAML validation error which happened when executing multiple validations concurrently. This could e.g. happen when sending concurrent requests to server endpoints which process YAML training data.
[2.3.0] - 2021-02-11
Improvements
#5673: Expose diagnostic data for action and NLU predictions.
Add
diagnostic_datafield to the Message and Prediction objects, which contain information about attention weights and other intermediate results of the inference computation. This information can be used for debugging and fine-tuning, e.g. with RasaLit.For examples of how to access the diagnostic data, see here.
#5986: Using the
TrainingDataImporterinterface to load the data inrasa test core.Failed test stories are now referenced by their absolute path instead of the relative path.
#7292: Improve error handling and Sentry tracking:
- Raise
MarkdownExceptionwhen training data in Markdown format cannot be read. - Raise
InvalidEntityFormatExceptionerror instead ofjson.JSONDecodeErrorwhen entity format is in valid in training data. - Gracefully handle empty sections in endpoint config files.
- Introduce
ConnectionExceptionerror and raise it whenTrackerStoreandEventBrokercannot connect to 3rd party services, instead of raising exceptions from 3rd party libraries. - Improve
rasa.shared.utils.common.class_from_module_pathfunction by making sure it always returns a class. The function currently raises a deprecation warning if it detects an anomaly. - Ignore
MemoryErrorandasyncio.CancelledErrorin Sentry. rasa.shared.utils.validation.validate_training_datanow raises aSchemaValidationErrorwhen validation fails (this error inheritsjsonschema.ValidationError, ensuring backwards compatibility).
- Raise
#7303: Allow
PolicyEnsemblein cases where calling individual policy'sloadmethod returnsNone.#7420: User message metadata can now be accessed via the default slot
session_started_metadataduring the execution of a customaction_session_start.from typing import Any, Text, Dict, Listfrom rasa_sdk import Action, Trackerfrom rasa_sdk.events import SlotSet, SessionStarted, ActionExecuted, EventType
class ActionSessionStart(Action): def name(self) -> Text: return "action_session_start"
Once the assistant is re-trained with the above configuration, users should also tune fallback confidence thresholds.
Configuration option loss_type=softmax is now deprecated and will be removed in Rasa Open Source 3.0.0 . Use loss_type=cross_entropy instead.
The default auto-configuration is changed to use constrain_similarities=True and model_confidence=cosine in ML components so that new users start with the recommended configuration.
EDIT: Some post-release experiments revealed that using model_confidence=cosine is wrong as it can change the order of predicted labels. That's why this option was removed in Rasa Open Source version 2.3.3. model_confidence=inner is deprecated as it produces an unbounded range of confidences which can break the logic of assistants in various other places. Please use model_confidence=linear_norm which will produce a linearly normalized version of dot product similarities with each value in the range [0,1]. Please read more about this change under the notes for release 2.3.4.
- #7817: Use simple random uniform distribution of integers in negative sampling, because
negative sampling with
tf.while_loopand random shuffle inside creates a memory leak. - #7848: Added support to configure
exchange_namefor pika event broker. - #7867: If
MaxHistoryTrackerFeaturizeris used, invert the dialogue sequence before passing it to the transformer so that the last dialogue input becomes the first one and therefore always have the same positional encoding.
Bugfixes
#7420: Fixed an error when using the endpoint
GET /conversations/<conversation_id:path>/storywith a tracker which contained slots.#7707: Add the option to configure whether extracted entities should be split by comma (
",") or not to TEDPolicy. Fixes crash when this parameter is accessed during extraction.#7710: When switching forms, the next form will always correctly ask for the first required slot.
Before, the next form did not ask for the slot if it was the same slot as the requested slot of the previous form.
#7749: Fix the bug when
RulePolicyhandling loop predictions are overwritten by e2eTEDPolicy.#7751: When switching forms, the next form is cleanly activated.
Before, the next form was correctly activated, but the previous form had wrongly uttered the response that asked for the requested slot when slot validation for that slot had failed.
#7829: Fix a bug in incremental training when passing a specific model path with the
--finetuneargument.#7867: Fix the role of
unidirectional_encoderin TED. This parameter is only applied to transformers fortext,action_textandlabel_action_text.
Miscellaneous internal changes
[2.2.10] - 2021-02-08
Improvements
- #7069: Updated error message when using incompatible model versions.
Bugfixes
#7885: Limit
numpyversion to< 1.2astensorflowis not compatible withnumpyversions>= 1.2.pipversions<= 20.2don't resolve dependencies conflicts correctly which could result in an incompatiblenumpyversion and the following error:NotImplementedError: Cannot convert a symbolic Tensor (strided_slice_6:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported
[2.2.9] - 2021-02-02
Bugfixes
- #7861: Correctly include the
confused_withfield in the test report for thePOST /model/test/intentsendpoint.
[2.2.8] - 2021-01-28
Bugfixes
- #7764: Fixes a bug in forms where the next slot asked was not consistent after returning to a form from an unhappy path.
[2.2.7] - 2021-01-25
Improvements
- #7731: Add support for in
RasaYAMLWriterfor writing intent and example metadata back into NLU YAML files.
Bugfixes
- #4311: Fixed a bug with
Domain.is_domain_file()that could raise an Exception in case the potential domain file is not a valid YAML.
[2.2.6] - 2021-01-21
Bugfixes
#7717: Fix wrong warning
The method 'EventBroker.close' was changed to be asynchronouswhen theEventBroker.closewas actually asynchronous.#7720: Fix incremental training for cases when training data does not contain entities but
DIETClassifieris configured to perform entity recognition also.Now, the instance of
RasaModelDatainsideDIETClassifierdoes not containentitiesas a feature for training if there is no training data present for entity recognition.
[2.2.5] - 2021-01-12
Bugfixes
- #7603: Fixed key-error bug on
rasa data validate stories.
Miscellaneous internal changes
[2.2.4] - 2021-01-08
Improvements
- #7520: Improve the warning in case the RulePolicy or the deprecated
MappingPolicy are missing
from the model's
policiesconfiguration. Changed the info log to a warning as one of this policies should be added to the model configuration.
Bugfixes
- #7692: Explicitly specify the
cryptoextra dependency ofpyjwtto ensure that thecryptographydependency is installed.cryptographyis strictly required to be able to be able to verify JWT tokens.
[2.2.3] - 2021-01-06
Bugfixes
#7622: Correctly retrieve intent ranking from
UserUtteredeven during default affirmation action implementation.#7684: Fixed a problem when using the
POST /model/test/intentsendpoint together with a model server. The error looked as follows:ERROR rasa.core.agent:agent.py:327 Could not load model due to Detected inconsistent loop usage. Trying to schedule a task on a new event loop, but scheduler was created with a different event loop. Make sure there is only one event loop in use and that the scheduler is running on that one.This also fixes a problem where testing a model from a model server would change the production model.
[2.2.2] - 2020-12-21
Bugfixes
- #7592: Fixed incompatibility between Rasa Open Source 2.2.x and Rasa X < 0.35.
[2.2.1] - 2020-12-17
Bugfixes
#7557: Fixed a problem where a form wouldn't reject when the
FormValidationActionre-implementedrequired_slots.#7585: Fixed an error when using the SQLTrackerStore with a Postgres database and the parameter
login_dbspecified.The error was:
psycopg2.errors.SyntaxError: syntax error at end of inputrasa-production_1 | LINE 1: SELECT 1 FROM pg_catalog.pg_database WHERE datname = ?
[2.2.0] - 2020-12-16
Deprecations and Removals
#6410:
Domain.random_template_foris deprecated and will be removed in Rasa Open Source 3.0.0. You can alternatively use theTemplatedNaturalLanguageGenerator.Domain.action_namesis deprecated and will be removed in Rasa Open Source 3.0.0. Please useDomain.action_names_or_textsinstead.#7458: Interfaces for
Policy.__init__andPolicy.loadhave changed. See migration guide for details.#7495: Deprecate training and test data in Markdown format. This includes:
- reading and writing of story files in Markdown format
- reading and writing of NLU data in Markdown format
- reading and writing of retrieval intent data in Markdown format
Support for Markdown data will be removed entirely in Rasa Open Source 3.0.0.
Please convert your existing Markdown data by using the commands from the migration guide:
rasa data convert nlu -f yaml --data={SOURCE_DIR} --out={TARGET_DIR}rasa data convert nlg -f yaml --data={SOURCE_DIR} --out={TARGET_DIR}rasa data convert core -f yaml --data={SOURCE_DIR} --out={TARGET_DIR}#7529:
Domain.add_categorical_slot_default_value,Domain.add_requested_slotandDomain.add_knowledge_base_slotsare deprecated and will be removed in Rasa Open Source 3.0.0. Their internal versions are now called during the Domain creation. Calling them manually is no longer required.
Features
#6971: Incremental training of models in a pipeline is now supported.
If you have added new NLU training examples or new stories/rules for dialogue manager, you don't need to train the pipeline from scratch. Instead, you can initialize the pipeline with a previously trained model and continue finetuning the model on the complete dataset consisting of new training examples. To do so, use
rasa train --finetune. For more detailed explanation of the command, check out the docs on incremental training.Added a configuration parameter
additional_vocabulary_sizetoCountVectorsFeaturizerandnumber_additional_patternstoRegexFeaturizer. These parameters are useful to configure when using incremental training for your pipelines.#7408: Add the option to use cross-validation to the
POST /model/test/intentsendpoint. To use cross-validation specify the query parametercross_validation_foldsin addition to the training data in YAML format.Add option to run NLU evaluation (
POST /model/test/intents) and model training (POST /model/train) asynchronously. To trigger asynchronous processing specify a callback URL in the query parametercallback_urlwhich Rasa Open Source should send the results to. This URL will also be called in case of errors.#7496: Make TED Policy an end-to-end policy. Namely, make it possible to train TED on stories that contain intent and entities or user text and bot actions or bot text. If you don't have text in your stories, TED will behave the same way as before. Add possibility to predict entities using TED.
Here's an example of a dialogue in the Rasa story format:
stories:- story: collect restaurant booking info # name of the story - just for debuggingsteps:- intent: greet # user message with no entities- action: utter_ask_howcanhelp # action that the bot should execute- intent: inform # user message with entitiesentities:- location: "rome"- price: "cheap"- bot: On it # actual text that bot can output- action: utter_ask_cuisine- user: I would like [spanish](cuisine). # actual text that user input- action: utter_ask_num_peopleSome model options for
TEDPolicygot renamed. Please update your configuration files using the following mapping:Old model option New model option transformer_size dictionary “transformer_size” with keys “text”, “action_text”, “label_action_text”, “dialogue” number_of_transformer_layers dictionary “number_of_transformer_layers” with keys “text”, “action_text”, “label_action_text”, “dialogue” dense_dimension dictionary “dense_dimension” with keys “text”, “action_text”, “label_action_text”, “intent”, “action_name”, “label_action_name”, “entities”, “slots”, “active_loop”
Improvements
#3998: Added a message showing the location where the failed stories file was saved.
#7232: Add support for the top-level response keys
quick_replies,attachmentandelementsrefered to inrasa.core.channels.OutputChannel.send_reponse, as well asmetadata.#7257: Changed the format of the histogram of confidence values for both correct and incorrect predictions produced by running
rasa test.#7284: Run
banditchecks on pull requests. Introducemake static-checkscommand to run all static checks locally.#7397: Add
rasa train --dry-runcommand that allows to check if training needs to be performed and what exactly needs to be retrained.#7408:
POST /model/test/intentsnow returns thereportfield forintent_evaluation,entity_evaluationandresponse_selection_evaluationas machine-readable JSON payload instead of string.#7436: Make
rasa data validate storieswork for end-to-end.The
rasa data validate storiesfunction now considers the tokenized user text instead of the plain text that is part of a state. This is closer to what Rasa Core actually uses to distinguish states and thus captures more story structure problems.
Bugfixes
- #6804: Rename
language_listtosupported_language_listforJiebaTokenizer. - #7244: A
floatslot returns unambiguous values -[1.0, <value>]if successfully converted,[0.0, 0.0]if not. This makes it possible to distinguish an empty float slot from a slot set to0.0.caution
This change is model-breaking. Please retrain your models.
- #7306: Fix an erroneous attribute for Redis key prefix in
rasa.core.tracker_store.RedisTrackerStore: 'RedisTrackerStore' object has no attribute 'prefix'. - #7407: Remove token when its text (for example, whitespace) can't be tokenized by LM tokenizer (from
LanguageModelFeaturizer). - #7408: Temporary directories which were created during requests to the HTTP API are now cleaned up correctly once the request was processed.
- #7422: Add option
use_word_boundariesforRegexFeaturizerandRegexEntityExtractor. To correctly process languages such as Chinese that don't use whitespace for word separation, the user needs to add theuse_word_boundaries: Falseoption to those two components. - #7529: Correctly fingerprint the default domain slots. Previously this led to the issue
that
rasa train corewould always retrain the model even if the training data hasn't changed.
Improved Documentation
- #7313: Return the "Migrate from" entry to the docs sidebar.
Miscellaneous internal changes
[2.1.3] - 2020-12-04
Improvements
#7426: Removed
multidictfrom the project dependencies.multidictcontinues to be a second order dependency of Rasa Open Source but will be determined by the dependencies which use it instead of by Rasa Open Source directly.This resolves issues like the following:
sanic 20.9.1 has requirement multidict==5.0.0, but you'll have multidict 4.6.0 which is incompatible.
Bugfixes
#7316:
SingleStateFeaturizerchecks whether it was trained withRegexInterpreteras nlu interpreter. If that is the case,RegexInterpreteris used during prediction.#7390: Make sure the
responsesare synced between NLU training data and the Domain even if there're no retrieval intents in the NLU training data.#7417: Categorical slots will have a default value set when just updating nlg data in the domain.
Previously this resulted in
InvalidDomainbeing thrown.#7418: - Preserve
domainslot ordering while dumping it back to the file.- Preserve multiline
textexamples ofresponsesdefined indomainandNLUtraining data.
- Preserve multiline
[2.1.2] - 2020-11-27
Bugfixes
#7235: Slots that use
initial_valuewon't cause rule contradiction errors whenconversation_start: trueis used. Previously, two rules that differed only in their use ofconversation_startwould be flagged as contradicting when a slot usedinitial_value.In checking for incomplete rules, an action will be required to have set only those slots that the same action has set in another rule. Previously, an action was expected to have set also slots which, despite being present after this action in another rule, were not actually set by this action.
#7345: Fixed Rasa Open Source not being able to fetch models from certain URLs.
[2.1.1] - 2020-11-23
Bugfixes
- #7338: Sender ID is correctly set when copying the tracker and sending it to the action server (instead of sending the
defaultvalue). This fixes a problem where the action server would only retrieve trackers with asender_iddefault.
[2.1.0] - 2020-11-17
Deprecations and Removals
#7136: The
Policyinterface was changed to return aPolicyPredictionobject whenpredict_action_probabilitiesis called. Returning a list of probabilities directly is deprecated and support for this will be removed in Rasa Open Source 3.0.You can adapt your custom policy by wrapping your probabilities in a
PolicyPredictionobject:from rasa.core.policies.policy import Policy, PolicyPrediction# ... other importsdef predict_action_probabilities(self,tracker: DialogueStateTracker,domain: Domain,interpreter: NaturalLanguageInterpreter,**kwargs: Any,) -> PolicyPrediction:probabilities = ... # an action prediction of your policyreturn PolicyPrediction(probabilities, "policy_name", policy_priority=self.priority)The same change was applied to the
PolicyEnsembleinterface. Instead of returning a tuple of action probabilities and policy name, it is now returning aPolicyPredictionobject. Support for the oldPolicyEnsembleinterface will be removed in Rasa Open Source 3.0.caution
This change is model-breaking. Please retrain your models.
#7263: The Pika Event Broker no longer supports the environment variables
RABBITMQ_SSL_CA_FILEandRABBITMQ_SSL_KEY_PASSWORD. You can alternatively specifyRABBITMQ_SSL_CA_FILEin the RabbitMQ connection URL as described in the RabbitMQ documentation.event_broker:type: pikaurl: "amqps://user:password@host?cacertfile=path_to_ca_cert&password=private_key_password"queues:- my_queueSupport for
RABBITMQ_SSL_KEY_PASSWORDwas removed entirely.The method
Event Broker.closewas changed to be asynchronous. Support for synchronous implementations will be removed in Rasa Open Source 3.0.0. To adapt your implementation add theasynckeyword:from rasa.core.brokers.broker import EventBrokerclass MyEventBroker(EventBroker):async def close(self) -> None:# clean up event broker resources
Features
- #7136: Policies can now return obligatory and optional events as part of their prediction. Obligatory events are always applied to the current conversation tracker. Optional events are only applied to the conversation tracker in case the policy wins.
Improvements
#4341: Changed
Agent.loadmethod to supportpathlibpaths.#5715: If you are using the feature Entity Roles and Groups, you should now also list the roles and groups in your domain file if you want roles and groups to influence your conversations. For example:
entities:- city:roles:- from- to- name- topping:groups:- 1- 2- size:groups:- 1- 2Entity roles and groups can now influence dialogue predictions. For more information see the section Entity Roles and Groups influencing dialogue predictions.
#6285: Predictions of the
FallbackClassifierare ignored when evaluating the NLU model Note that theFallbackClassifierpredictions still apply to test stories.#6474: Adapt the training data reader and emulator for wit.ai to their latest format. Update the instructions in the migrate from wit.ai documentation to run Rasa Open Source in wit.ai emulation mode.
#6498: Adding configurable prefixes to Redis Tracker and Lock Stores so that a single Redis instance (and logical DB) can support multiple conversation trackers and locks. By default, conversations will be prefixed with
tracker:...and all locks prefixed withlock:.... Additionally, you can add an alphanumeric-onlyprefix: valueinendpoints.ymlsuch that keys in redis will take the formvalue:tracker:...andvalue:lock:...respectively.#6571: Log the model's relative path when using CLI commands.
#6852: Adds the option to configure whether extracted entities should be split by comma (
",") or not. The default behaviour isTrue- i.e. split any list of extracted entities by comma. This makes sense for a list of ingredients in a recipie, for example"avocado, tofu, cauliflower", however doesn't make sense for an address such as"Schönhauser Allee 175, 10119 Berlin, Germany".In the latter case, add a new option to your config, e.g. if you are using the
DIETClassifierthis becomes:...- name: DIETClassifiersplit_entities_by_comma: False...in which case, none of the extracted entities will be split by comma. To switch it on/off for specific entity types you can use:
...- name: DIETClassifiersplit_entities_by_comma:address: Trueingredient: False...where both
addressandingredientare two entity types.This feature is also available for
CRFEntityExtractor.#6860: Fetching test stories from the HTTP API endpoint
GET /conversations/<conversation_id>/storyno longer triggers an update of the conversation session.Added a new boolean query parameter
all_sessions(default:false) to the HTTP API endpoint for fetching test stories (GET /conversations/<conversation_id>/story).When setting
?all_sessions=true, the endpoint returns test stories for all conversation sessions forconversation_id. When setting?all_sessions=all_sessions, or when omitting theall_sessionsparameter, a single test story is returned forconversation_id. In cases where multiple conversation sessions exist, only the last story is returned.Specifying the
retrieve_events_from_previous_conversation_sessionskwarg for the Tracker Store class is deprecated and will be removed in Rasa Open Source 3.0. Please use theretrieve_full_tracker()method instead.#6865: Improve the
rasa data convert nlgcommand and introduce therasa data convert responsescommand to simplify the migration from pre-2.0 response selector format to the new format.#6966: Added warning for when an option is provided for a component that is not listed as a key in the defaults for that component.
#6977: Forms no longer reject their execution before a potential custom action for validating / extracting slots was executed. Forms continue to reject in two cases automatically:
- A slot was requested to be filled, but no slot mapping applied to the latest user message and there was no custom action for potentially extracting other slots.
- A slot was requested to be filled, but the custom action for validating / extracting slots didn't return any slot event.
Additionally you can also reject the form execution manually by returning a
ActionExecutionRejectedevent within your custom action for validating / extracting slots.#7027: Remove dependency between
ConveRTTokenizerandConveRTFeaturizer. TheConveRTTokenizeris now deprecated, and theConveRTFeaturizercan be used with any otherTokenizer.Remove dependency between
HFTransformersNLP,LanguageModelTokenizer, andLanguageModelFeaturizer. BothHFTransformersNLPandLanguageModelTokenizerare now deprecated.LanguageModelFeaturizerimplements the behavior of the stack and can be used with any otherTokenizer.#7061: Gray out "Download" button in Rasa Playground when the project is not yet ready to be downloaded.
#7068: Slot mappings for Forms in the domain are now optional. If you do not provide any slot mappings as part of the domain, you need to provide custom slot mappings through a custom action. A form without slot mappings is specified as follows:
forms:my_form:# no mappingsThe action for forms can now be overridden by defining a custom action with the same name as the form. This can be used to keep using the deprecated Rasa Open Source
FormActionwhich is implemented within the Rasa SDK. Note that it is not recommended to override the form action for anything else than using the deprecated Rasa SDKFormAction.#7102: Changed the default model weights loaded for
HFTransformersNLPcomponent.Use a language agnostic sentence embedding model as the default model. These model weights should help improve performance on intent classification and response selection.
#7122: Add validations for slot mappings. If a slot mapping is not valid, an
InvalidDomainerror is raised.#7132: Adapt the training data reader and emulator for LUIS to their latest format and add support for roles. Update the instructions in the "Migrate from LUIS" documentation page to reflect the recent changes made to the UI of LUIS.
#7160: Adapt the training data reader and emulator for DialogFlow to their latest format and add support for regex entities.
#7263: The Pika Event Broker was reimplemented with the
[aio-pikalibrary[(https://aio-pika.readthedocs.io/en/latest/). Messages will now be published to RabbitMQ asynchronously which improves the prediction performance.#7278: The confidence of the
FallbackClassifierpredictions is set to1 - top intent confidence.
Bugfixes
#5974:
ActionRestartwill now triggerActionSessionStartas a followup action.#6582: Fixed a bug with
rasa data split nluwhich caused the resulting train / test ratio to sometimes differ from the ratio specified by the user or by default.The splitting algorithm ensures that every intent and response class appears in both the training and the test set. This means that each split must contain at least as many examples as there are classes, which for small datasets can contradict the requested training fraction. When this happens, the command issues a warning to the user that the requested training fraction can't be satisfied.
#6721: Fixed bug where slots with
influence_conversation=falseaffected the action prediction if they were set manually using thePOST /conversations/<conversation_id/tracker/eventsendpoint in the HTTP API.#6760: Update Pika event broker to be a separate process and make it use a
multiprocessing.Queueto send and process messages. This change should help avoid situations when events stop being sent after a while.#6973: Ignore rules when validating stories
#6986: - Updated Slack Connector for new Slack Events API
#7001: Update Rasa Playground "Download" button to work correctly depending on the current chat state.
#7002: Test stories can now contain both: normal intents and retrieval intents. The
failed_test_stories.yml, generated byrasa test, also specifies the full retrieval intent now. Previouslyrasa testwould fail on test stories that specified retrieval intents.#7031: The converter tool is now able to convert test stories that contain a number as entity type.
#7034: The converter tool now converts test stories and stories that contain full retrieval intents correctly. Previously the response keys were deleted during conversion to YAML.
#7204: The slack connector requires a configuration for
slack_signing_secretto make the connector more secure. The configuration value needs to be added to yourcredentials.ymlif you are using the slack connector.#7246: Fixed model fingerprinting - it should avoid some more unecessary retrainings now.
#7253: Fixed a problem when slots of type
textorlistwere referenced by name only in the training data and this was treated as an empty value. This means that the two following stories are equivalent in case the slot type istext:stories:- story: Story referencing slot by namesteps:- intent: greet- slot_was_set:- name- story: Story referencing slot with name and valuesteps:- intent: greet- slot_was_set:- name: "some name"Note that you still need to specify values for all other slot types as only
textandlistslots are featurized in a binary fashion.
Improved Documentation
- #6973: Correct data validation docs
Miscellaneous internal changes
[2.0.8] - 2020-11-26
Bugfixes
#7235: Slots that use
initial_valuewon't cause rule contradiction errors whenconversation_start: trueis used. Previously, two rules that differed only in their use ofconversation_startwould be flagged as contradicting when a slot usedinitial_value.In checking for incomplete rules, an action will be required to have set only those slots that the same action has set in another rule. Previously, an action was expected to have set also slots which, despite being present after this action in another rule, were not actually set by this action.
[2.0.7] - 2020-11-24
Bugfixes
#5974:
ActionRestartwill now triggerActionSessionStartas a followup action.#7317: Fixed Rasa Open Source not being able to fetch models from certain URLs.
This addresses an issue introduced in 2.0.3 where
rasa-productioncould not use the models fromrasa-xin Rasa X server mode.#7316:
SingleStateFeaturizerchecks whether it was trained withRegexInterpreteras NLU interpreter. If that is the case,RegexInterpreteris used during prediction.
[2.0.6] - 2020-11-10
Bugfixes
- #6629: Fixed a bug that occurred when setting multiple Sanic workers in combination with a custom Lock Store. Previously, if the number was set higher than 1 and you were using a custom lock store, it would reject because of a strict check to use a Redis Lock Store.
- #7176: Fixed a bug in the
TwoStageFallbackaction which reverted too many events after the user successfully rephrased.
[2.0.5] - 2020-11-10
Bugfixes
- #7200: Fix a bug because of which only one retrieval intent was present in
all_retrieval_intentkey of the output ofResponseSelectoreven if there were multiple retrieval intents present in the training data.
[2.0.4] - 2020-11-08
Bugfixes
- #7140: Fixed error when starting Rasa X locally without a proper git setup.
- #7186: Properly validate incoming webhook requests for the Slack connector to be authentic.
[2.0.3] - 2020-10-29
Bugfixes
#7089: Fix ConveRTTokenizer failing because of wrong model URL by making the
model_urlparameter ofConveRTTokenizermandatory.Since the ConveRT model was taken offline, we can no longer use the earlier public URL of the model. Additionally, since the licence for the model is unknown, we cannot host it ourselves. Users can still use the component by setting
model_urlto a community/self-hosted model URL or path to a local directory containing model files. For example:pipeline:- name: ConveRTTokenizermodel_url: <remote/local path to model>#7108: Update example formbot to use
FormValidationActionfor slot validation
[2.0.2] - 2020-10-22
Bugfixes
- #6691: Fix description of previous event in output of
rasa data validate stories - #7053: Fixed command line coloring for windows command lines running an encoding other than
utf-8.
Miscellaneous internal changes
[2.0.1] - 2020-10-20
Bugfixes
- #7018: Create correct
KafkaProducerforPLAINTEXTandSASL_SSLsecurity protocols. - #7033: - Fix
YAMLStoryReadernot being able to representORstatements in conversion mode.- Fix
MarkdownStoryWriternot being able to write stories withORstatements (when loaded in conversion mode).
- Fix
[2.0.0] - 2020-10-07
Deprecations and Removals
#5757: Removed previously deprecated packages
rasa_nluandrasa_core.Use imports from
rasa.coreandrasa.nluinstead.#5758: Removed previously deprecated classes:
- event brokers (
EventChannelandFileProducer,KafkaProducer,PikaProducer,SQLProducer) - intent classifier
EmbeddingIntentClassifier - policy
KerasPolicy
Removed previously deprecated methods:
Agent.handle_channelsTrackerStore.create_tracker_store
Removed support for pipeline templates in
config.ymlRemoved deprecated training data keys
entity_examplesandintent_examplesfrom json training data format.- event brokers (
#5834: Removed
restaurantbotexample as it was confusing and not a great way to build a bot.#6296:
LabelTokenizerSingleStateFeaturizeris deprecated. To replicateLabelTokenizerSingleStateFeaturizerfunctionality, add aTokenizerwithintent_tokenization_flag: TrueandCountVectorsFeaturizerto the NLU pipeline. An example of elements to be added to the pipeline is shown in the improvement changelog 6296`.BinarySingleStateFeaturizeris deprecated and will be removed in the future. We recommend to switch toSingleStateFeaturizer.#6354: Specifying the parameters
forceandsave_to_default_model_directoryas part of the JSON payload when training a model usingPOST /model/trainis now deprecated. Please use the query parametersforce_trainingandsave_to_default_model_directoryinstead. See the API documentation for more information.#6409: The conversation event
formwas renamed toactive_loop. Rasa Open Source will continue to be able to read and process oldformevents. Note that serialized trackers will no longer have theactive_formfield. Instead theactive_loopfield will contain the same information. Story representations in Markdown and YAML will useactive_loopinstead offormto represent the event.#6453: Removed support for
queueargument inPikaEventBroker(usequeuesinstead).Domain file:
- Removed support for
templateskey (useresponsesinstead). - Removed support for string
responses(use dictionaries instead).
NLU
Component:- Removed support for
providesattribute, it's not needed anymore. - Removed support for
requiresattribute (userequired_components()instead).
Removed
_guess_format()utils method fromrasa.nlu.training_data.loading(useguess_formatinstead).Removed several config options for TED Policy, DIETClassifier and ResponseSelector:
hidden_layers_sizes_pre_dialhidden_layers_sizes_botdropratedroprate_adroprate_bhidden_layers_sizes_ahidden_layers_sizes_bnum_transformer_layersnum_headsdense_dimembed_dimnum_negmu_posmu_neguse_max_sim_negC2C_embevaluate_every_num_epochsevaluate_on_num_examples
Please check the documentation for more information.
- Removed support for
#6463: The conversation event
form_validationwas renamed toloop_interrupted. Rasa Open Source will continue to be able to read and process oldform_validationevents.#6658:
SklearnPolicywas deprecated.TEDPolicyis the preferred machine-learning policy for dialogue models.#6809: Slots of type
unfeaturizedare now deprecated and will be removed in Rasa Open Source 3.0. Instead you should use the propertyinfluence_conversation: falsefor every slot type as described in the migration guide.#6934: Conversation sessions are now enabled by default if your Domain does not contain a session configuration. Previously a missing session configuration was treated as if conversation sessions were disabled. You can explicitly disable conversation sessions using the following snippet:
domain.ymlsession_config:# A session expiration time of `0`# disables conversation sessionssession_expiration_time: 0#6952: Using the default action
action_deactivate_formto deactivate the currently active loop / Form is deprecated. Please useaction_deactivate_loopinstead.
Features
#4745: Added template name to the metadata of bot utterance events.
BotUtteredevent contains atemplate_nameproperty in its metadata for any new bot message.#5086: Added a
--num-threadsCLI argument that can be passed torasa trainand will be used to train NLU components.#5510: You can now define what kind of features should be used by what component (see Choosing a Pipeline).
You can set an alias via the option
aliasfor every featurizer in your pipeline. Thealiascan be anything, by default it is set to the full featurizer class name. You can then specify, for example, on the DIETClassifier what features from which featurizers should be used. If you don't set the optionfeaturizersall available features will be used. This is also the default behavior. Check components to see what components have the optionfeaturizersavailable.Here is an example pipeline that shows the new option. We define an alias for all featurizers in the pipeline. All features will be used in the
DIETClassifier. However, theResponseSelectoronly takes the features from theConveRTFeaturizerand theCountVectorsFeaturizer(word level).pipeline:- name: ConveRTTokenizer- name: ConveRTFeaturizeralias: "convert"- name: CountVectorsFeaturizeralias: "cvf_word"- name: CountVectorsFeaturizeralias: "cvf_char"analyzer: char_wbmin_ngram: 1max_ngram: 4- name: RegexFeaturizeralias: "regex"- name: LexicalSyntacticFeaturizeralias: "lsf"- name: DIETClassifier:- name: ResponseSelectorepochs: 50featurizers: ["convert", "cvf_word"]- name: EntitySynonymMappercaution
This change is model-breaking. Please retrain your models.
#5837: Added
--portcommandline argument to the interactive learning mode to allow changing the port for the Rasa server running in the background.#5957: Add new entity extractor
RegexEntityExtractor. The entity extractor extracts entities using the lookup tables and regexes defined in the training data. For more information see RegexEntityExtractor.#5996: Introduced a new
YAMLformat for Core training data and implemented a parser for it. Rasa Open Source can now read stories in bothMarkdownandYAMLformat.#6020: You can now enable threaded message responses from Rasa through the Slack connector. This option is enabled using an optional configuration in the credentials.yml file
slack:slack_token:slack_channel:use_threads: TrueButton support has also been added in the Slack connector.
#6066: The NLU
interpreteris now passed to the Policies during training and inference time. Note that this requires an additional parameterinterpreterin the methodpredict_action_probabilitiesof thePolicyinterface. In case a customPolicyimplementation doesn't provide this parameter Rasa Open Source will print a warning and omit passing theinterpreter.#6088: Added the new dialogue policy RulePolicy which will replace the old “rule-like” policies Mapping Policy, Fallback Policy, Two-Stage Fallback Policy, and Form Policy. These policies are now deprecated and will be removed in the future. Please see the rules documentation for more information.
Added new NLU component FallbackClassifier which predicts an intent
nlu_fallbackin case the confidence was below a given threshold. The intentnlu_fallbackmay then be used to write stories / rules to handle the fallback in case of low NLU confidence.pipeline:- # Other NLU components ...- name: FallbackClassifier# If the highest ranked intent has a confidence lower than the threshold then# the NLU pipeline predicts an intent `nlu_fallback` which you can then be used in# stories / rules to implement an appropriate fallback.threshold: 0.5#6132: Added possibility to split the domain into separate files. All YAML files under the path specified with
--domainwill be scanned for domain information (e.g. intents, actions, etc) and then combined into a single domain.The default value for
--domainis stilldomain.yml.#6275: Add optional metadata argument to
NaturalLanguageInterpreter's parse method.#6354: The Rasa Open Source API endpoint
POST /model/trainnow supports training data in YAML format. Please specify the headerContent-Type: application/yamlwhen training a model using YAML training data. See the API documentation for more information.#6374: Added a YAML schema and a writer for 2.0 Training Core data.
#6404: Users can now use the
rasa data convert {nlu|core} -f yamlcommand to convert training data from Markdown format to YAML format.#6536: Add option
use_lemmatoCountVectorsFeaturizer. By default it is set toTrue.use_lemmaindicates whether the featurizer should use the lemma of a word for counting (if available) or not. If this option is set toFalseit will use the word as it is.
Improvements
#4536: Add support for Python 3.8.
#5368: Changed the project structure for Rasa projects initialized with the CLI (using the
rasa initcommand):actions.py->actions/actions.py.actionsis now a Python package (it contains a fileactions/__init__.py). In addition, the__init__.pyat the root of the project has been removed.#5481:
DIETClassifiernow also assigns a confidence value to entity predictions.#5637: Added behavior to the
rasa --versioncommand. It will now also list information about the operating system, python version andrasa-sdk. This will make it easier for users to file bug reports.#5743: Support for additional training metadata.
Training data messages now to support kwargs and the Rasa JSON data reader includes all fields when instantiating a training data instance.
#5748: Standardize testing output. The following test output can be produced for intents, responses, entities and stories:
- report: a detailed report with testing metrics per label (e.g. precision, recall, accuracy, etc.)
- errors: a file that contains incorrect predictions
- successes: a file that contains correct predictions
- confusion matrix: plot of confusion matrix
- histogram: plot of confidence distribution (not available for stories)
#5756: To avoid the problem of our entity extractors predicting entity labels for just a part of the words, we introduced a cleaning method after the prediction was done. We should avoid the incorrect prediction in the first place. To achieve this we will not tokenize words into sub-words anymore. We take the mean feature vectors of the sub-words as the feature vector of the word.
caution
This change is model breaking. Please, retrain your models.
#5759: Move option
case_sensitivefrom the tokenizers to the featurizers.- Remove the option from the
WhitespaceTokenizerandConveRTTokenizer. - Add option
case_sensitiveto theRegexFeaturizer.
- Remove the option from the
#5766: If a user sends a voice message to the bot using Facebook, users messages was set to the attachments URL. The same is now also done for the rest of attachment types (image, video, and file).
#5794: Creating a
DomainusingDomain.fromDictcan no longer alter the input dictionary. Previously, there could be problems when the input dictionary was re-used for other things after creating theDomainfrom it.#5805: The debug-level logs when instantiating an SQLTrackerStore no longer show the password in plain text. Now, the URL is displayed with the password hidden, e.g.
postgresql://username:***@localhost:5432.#5855: Shorten the information in tqdm during training ML algorithms based on the log level. If you train your model in debug mode, all available metrics will be shown during training, otherwise, the information is shorten.
#5913: Ignore conversation test directory
tests/when importing a project usingMultiProjectImporteranduse_e2eisFalse. Previously, any story data found in a project subdirectory would be imported as training data.#5985: Implemented model checkpointing for DIET (including the response selector) and TED. The best model during training will be stored instead of just the last model. The model is evaluated on the basis of
evaluate_every_number_of_epochsandevaluate_on_number_of_examples.Checkpointing is enabled iff the following is set for the models in the
config.ymlfile:checkpoint_model: Trueevaluate_on_number_of_examples > 0
The model is stored to whatever location has been specified with the
--outparameter when callingrasa train nlu/core ....#6024:
rasa data split nlunow makes sure that there is at least one example per intent and response in the test data.#6039: The method
ensure_consistent_bilou_taggingnow also considers the confidence values of the predicted tags when updating the BILOU tags.#6045: We updated the way how we save and use features in our NLU pipeline.
The message object now has a dedicated field, called
features, to store the features that are generated in the NLU pipeline. We adapted all our featurizers in a way that sequence and sentence features are stored independently. This allows us to keep different kind of features for the sequence and the sentence. For example, theLexicalSyntacticFeaturizerdoes not produce any sentence features anymore as our experiments showed that those did not bring any performance gain just quite a lot of additional values to store.We also modified the DIET architecture to process the sequence and sentence features independently at first. The features are concatenated just before the transformer.
We also removed the
__CLS__token again. Our Tokenizers will not add this token anymore.caution
This change is model-breaking. Please retrain your models.
#6052: Add endpoint kwarg to
rasa.jupyter.chatto enable using a custom action server while chatting with a model in a jupyter notebook.#6055: Support for rasa conversation id with special characters on the server side - necessary for some channels (e.g. Viber)
#6134: Log the number of examples per intent during training. Logging can be enabled using
rasa train --debug.#6237: Support for other remote storages can be achieved by using an external library.
#6273: Add
output_channelquery param to/conversations/<conversation_id>/tracker/eventsroute, along with booleanexecute_side_effectsto optionally schedule/cancel reminders, and forward bot messages to output channel.#6276: Allow Rasa to boot when model loading exception occurs. Forward HTTP Error responses to standard log output.
#6294: Rename
DucklingHTTPExtractortoDucklingEntityExtractor.#6296: * Modified functionality of
SingleStateFeaturizer.SingleStateFeaturizeruses trained NLUInterpreterto featurize intents and action names. This modifiedSingleStateFeaturizercan replicateLabelTokenizerSingleStateFeaturizerfunctionality. This component is deprecated from now on. To replicateLabelTokenizerSingleStateFeaturizerfunctionality, add aTokenizerwithintent_tokenization_flag: TrueandCountVectorsFeaturizerto the NLU pipeline. Please update your configuration file.For example:
```yamllanguage: enpipeline:- name: WhitespaceTokenizerintent_tokenization_flag: True- name: CountVectorsFeaturizer```Please train both NLU and Core (using
rasa train) to use a trained tokenizer and featurizer for core featurization.The new
SingleStateFeaturizerstores slots, entities and forms in sparse features for more lightweight storage.BinarySingleStateFeaturizeris deprecated and will be removed in the future. We recommend to switch toSingleStateFeaturizer.Modified
TEDPolicyto handle sparse features. As a result,TEDPolicymay require more epochs than before to converge.Default TEDPolicy featurizer changed to
MaxHistoryTrackerFeaturizerwith infinite max history (takes all dialogue turns into account).Default batch size for TED increased from [8,32] to [64, 256]
#6323: Response selector templates now support all features that domain utterances do. They use the yaml format instead of markdown now. This means you can now use buttons, images, ... in your FAQ or chitchat responses (assuming they are using the response selector).
As a consequence, training data form in markdown has to have the file suffix
.mdfrom now on to allow proper file type detection-#6457: Support for test stories written in yaml format.
#6466: Response Selectors are now trained on retrieval intent labels by default instead of the actual response text. For most models, this should improve training time and accuracy of the
ResponseSelector.If you want to revert to the pre-2.0 default behavior, add the
use_text_as_label=trueparameter to yourResponseSelectorcomponent.You can now also have multiple response templates for a single sub-intent of a retrieval intent. The first response template containing the text attribute is picked for training(if
use_text_as_label=True) and a random template is picked for bot's utterance just as how otherutter_templates are picked.All response selector related evaluation artifacts -
report.json, successes.json, errors.json, confusion_matrix.pngnow use the sub-intent of the retrieval intent as the target and predicted labels instead of the actual response text.The output schema of
ResponseSelectorhas changed -full_retrieval_intentandnamehave been deprecated in favour ofintent_response_keyandresponse_templatesrespectively. Additionally a keyall_retrieval_intentsis added to the response selector output which will hold a list of all retrieval intents(faq,chitchat, etc.) that are present in the training data.An example output looks like this -"response_selector": {"all_retrieval_intents": ["faq"],"default": {"response": {"id": 1388783286124361986, "confidence": 1.0, "intent_response_key": "faq/is_legit","response_templates": [{"text": "absolutely","image": "https://i.imgur.com/nGF1K8f.jpg"},{"text": "I think so."}],},"ranking": [{"id": 1388783286124361986,"confidence": 1.0,"intent_response_key": "faq/is_legit"},]An example bot demonstrating how to use the
ResponseSelectoris added to theexamplesfolder.#6472: Do not modify conversation tracker's
latest_input_channelproperty when usingPOST /trigger_intentorReminderScheduled.#6555: Do not set the output dimension of the
sparse-to-denselayers to the same dimension as the dense features.Update default value of
dense_dimensionandconcat_dimensionfortextinDIETClassifierto 128.#6591: Retrieval actions with
respond_prefix are now replaced with usual utterance actions withutter_prefix.If you were using retrieval actions before, rename all of them to start with
utter_prefix. For example,respond_chitchatbecomesutter_chitchat. Also, in order to keep the response templates more consistent, you should now add theutter_prefix to all response templates defined for retrieval intents. For example, a response templatechitchat/ask_namebecomesutter_chitchat/ask_name. Note that the NLU examples for this will still be underchitchat/ask_nameintent. The exampleresponseselectorbotshould help clarify these changes further.#6613: Added telemetry reporting. Rasa uses telemetry to report anonymous usage information. This information is essential to help improve Rasa Open Source for all users. Reporting will be opt-out. More information can be found in our telemetry documentation.
#6757: Update
extract_other_slotsmethod insideFormActionto fill a slot from an entity with a different name if corresponding slot mapping offrom_entitytype is unique.#6809: Slots of any type can now be ignored during a conversation. To do so, specify the property
influence_conversation: falsefor the slot.slot:a_slot:type: textinfluence_conversation: falseThe property
influence_conversationis set totrueby default. See the documentation for slots for more information.A new slot type
anywas added. Slots of this type can store any value. Slots of typeanyare always ignored during conversations.#6856: Improved exception handling within Rasa Open Source.
All exceptions that are somewhat expected (e.g. errors in file formats like configurations or training data) will share a common base class
RasaException.::warning Backwards Incompatibility Base class for the exception raised when an action can not be found has been changed from a
NameErrorto aValueError. ::Some other exceptions have also slightly changed:
- raise
YamlSyntaxExceptioninstead of YAMLError (from ruamel) when failing to load a yaml file with information about the line where loading failed - introduced
MissingDependencyExceptionas an exception raised if packages need to be installed
- raise
#6900: Debug logs from
matplotliblibraries are now hidden by default and are configurable with theLOG_LEVEL_LIBRARIESenvironment variable.#6943: Update
KafkaEventBrokerto supportSASL_SSLandPLAINTEXTprotocols.
Bugfixes
#3597: Fixed issue where temporary model directories were not removed after pulling from a model server.
If the model pulled from the server was invalid, this could lead to large amounts of local storage usage.
#5038: Fixed a bug in the
CountVectorsFeaturizerwhich resulted in the very first message after loading a model to be processed incorrectly due to the vocabulary not being loaded yet.#5135: Fixed Rasa shell skipping button messages if buttons are attached to a message previous to the latest.
#5385: Stack level for
FutureWarningupdated to level 2.#5453: If custom utter message contains no value or integer value, then it fails returning custom utter message. Fixed by converting the template to type string.
#5617: Don't create TensorBoard log files during prediction.
#5638: Fixed DIET breaking with empty spaCy model.
#5737: Pinned the library version for the Azure Cloud Storage to 2.1.0 since the persistor is currently not compatible with later versions of the azure-storage-blob library.
#5755: Remove
clean_up_entitiesfrom extractors that extract pre-defined entities. Just keep the clean up method for entity extractors that extract custom entities.#5792: Fixed issue where the
DucklingHTTPExtractorcomponent would not work if itsurlcontained a trailing slash.#5808: Changed to variable
CERT_URIinhangouts.pyto a string type#5850: Slots will be correctly interpolated for
buttonresponses.Previously this resulted in no interpolation due to a bug.
#5905: Remove option
token_patternfromCountVectorsFeaturizer. Instead all tokenizers now have the optiontoken_pattern. If a regular expression is set, the tokenizer will apply the token pattern.#5921: Allow user to retry failed file exports in interactive training.
#5964: Fixed a bug when custom metadata passed with the utterance always restarted the session.
#5998:
WhitespaceTokenizerdoes not remove vowel signs in Hindi anymore.#6042: Convert entity values coming from
DucklingHTTPExtractorto string during evaluation to avoid mismatches due to different types.#6053: Update
FeatureSignatureto store just the feature dimension instead of the complete shape. This change fixes the usage of the optionshare_hidden_layersin theDIETClassifier.#6087: Unescape the
\n, \t, \r, \f, \btokens on reading nlu data from markdown files.On converting json files into markdown, the tokens mentioned above are espaced. These tokens need to be unescaped on loading the data from markdown to ensure that the data is treated in the same way.
#6120: Fix the way training data is generated in rasa test nlu when using the
-Pflag. Each percentage of the training dataset used to be formed as a part of the last sampled training dataset and not as a sample from the original training dataset.#6143: Prevent
WhitespaceTokenizerfrom outputting empty list of tokens.#6198: Add
EntityExtractoras a required component forEntitySynonymMapperin a pipeline.#6222: Better handling of input sequences longer than the maximum sequence length that the
HFTransformersNLPmodels can handle.During training, messages with longer sequence length should result in an error, whereas during inference they are gracefully handled but a debug message is logged. Ideally, passing messages longer than the acceptable maximum sequence lengths of each model should be avoided.
#6231: When using the
DynamoTrackerStore, if there are more than 100 DynamoDB tables, the tracker could attempt to re-create an existing table if that table was not among the first 100 listed by the dynamo API.#6282: Fixed a deprication warning that pops up due to changes in numpy
#6291: Update
rasabasterto fix an issue with syntax highlighting on "Prototype an Assistant" page.Update default stories and rules on "Prototype an Assistant" page.
#6419: Fixed a bug in the
serialisemethod of theEvaluationStoreclass which resulted in a wrong end-to-end evaluation of the predicted entities.#6535: Forms with slot mappings defined in
domain.ymlmust now be a dictionary (with form names as keys). The previous syntax whereformswas simply a list of form names is still supported.#6577: Remove BILOU tag prefix from role and group labels when creating entities.
#6601: Fixed a bug in the featurization of the boolean slot type. Previously, to set a slot value to "true", you had to set it to "1", which is in conflict with the documentation. In older versions
true(without quotes) was also possible, but now raised an error during yaml validation.#6603: Fixed a bug in rasa interactive. Now it exports the stories and nlu training data as yml file.
#6711: Fixed slots not being featurized before first user utterance.
Fixed AugmentedMemoizationPolicy to forget the first action on the first going back
#6741: Fixed the remote URL of ConveRT model as it was recently updated by its authors.
#6755: Treat the length of OOV token as 1 to fix token align issue when OOV occurred.
#6757: Fixed the bug when entity was extracted even if it had a role or group but roles or groups were not expected.
#6803: Fixed the bug that caused
supported_language_listofComponentto not work correctly.To avoid confusion, only one of
supported_language_listandnot_supported_language_listcan be set to notNonenow#6897: Fixed issue where responses including
text: ""and nocustomkey would incorrectly fail domain validation.#6898: Fixed issue where extra keys other than
titleandpayloadinside ofbuttonsmade a response fail domain validation.#6919: Do not filter training data in model.py but on component side.
#6929: Check if a model was provided when executing
rasa test core. If not, print a useful error message and stop.#6805: Transfer only response templates for retrieval intents from domain to NLU Training Data.
This avoids retraining the NLU model if one of the non retrieval intent response templates are edited.
Improved Documentation
- #4441: Added documentation on
ambiguity_thresholdparameter in Fallback Actions page. - #4605: Remove outdated whitespace tokenizer warning in Testing Your Assistant documentation.
- #5640: Updated Facebook Messenger channel docs with supported attachment information
- #5675: Update
rasa shelldocumentation to explain how to recreate external channel session behavior. - #5811: Event brokers documentation should say
urlinstead ofhost. - #5952: Update
rasa initdocumentation to includetests/conversation_tests.mdin the resulting directory tree. - #6819: Update "Validating Form Input" section to include details about
how
FormValidationActionclass makes it easier to validate form slots in custom actions and how to use it. - #6823: Update the examples in the API docs to use YAML instead of Markdown
Miscellaneous internal changes
[1.10.26] - 2021-06-17
Features
- #8876: Added
sasl_mechanismas an optional configurable parameter for the Kafka Producer.
[1.10.25] - 2021-04-14
Features
- #8429: Added
partition_by_senderflag to Kafka Producer to optionally associate events with Kafka partition based on sender_id.
Improvements
- #8345: Improved the lock store debug log message when the process has to queue because other messages have to be processed before this item.
[1.10.24] - 2021-03-29
Bugfixes
- #8019: Added
group_idparameter back toKafkaEventBrokerto fix error when instantiating event broker with a config containing thegroup_idparameter which is only relevant to the event consumer
[1.10.23] - 2021-02-22
Bugfixes
- #7895: Fixed bug where the conversation does not lock before handling a reminder event.
[1.10.22] - 2021-02-05
Bugfixes
- #7772: Backported the Rasa Open Source 2
PikaEventBrokerimplementation to address problems when using it with multiple Sanic workers.
[1.10.21] - 2021-02-01
Improvements
- #7439: The
urloption now supports a list of serversurl: ['10.0.0.158:32803','10.0.0.158:32804']. Removedgroup_idbecause it is not a valid Kafka producer parameter.
Bugfixes
- #7638: Fixed a bug that occurred when setting multiple Sanic workers in combination with a custom Lock Store. Previously, if the number was set higher than 1 and you were using a custom lock store, it would reject because of a strict check to use a Redis Lock Store.
- #7722: Fix a bug where, if a user injects an intent using the HTTP API, slot auto-filling is not performed on the entities provided.
[1.10.20] - 2020-12-18
Bugfixes
- #7575: Fix scikit-learn crashing during evaluation of
ResponseSelectorpredictions.
[1.10.19] - 2020-12-17
Improvements
#6251: Kafka Producer connection now remains active across sends. Added support for group and client id. The Kafka producer also adds support for the
PLAINTEXTandSASL_SSLprotocols.DynamoDB table exists check fixed bug when more than 100 tables exist.
#6814: Replace use of
python-telegram-botpackage withpyTelegramBotAPI#7423: Use response selector keys (sub-intents) as labels for plotting the confusion matrix during NLU evaluation to improve readability.
[1.10.18] - 2020-11-26
Bugfixes
- #7340: Fixed an issues with the DynamoDB TrackerStore creating a new table entry/object for each TrackerStore update. The column
session_datehas been deprecated and should be removed manually in existing DynamoDB tables.
[1.10.17] - 2020-11-12
Bugfixes
- #7219: Prevent the message handling process in
PikaEventBrokerfrom being terminated.
[1.10.16] - 2020-10-15
Bugfixes
- #6703: Update Pika event broker to be a separate process and make it use a
multiprocessing.Queueto send and process messages. This change should help avoid situations when events stop being sent after a while.
[1.10.15] - 2020-10-09
Bugfixes
- #3597: Fixed issue where temporary model directories were not removed after pulling from a model server. If the model pulled from the server was invalid, this could lead to large amounts of local storage usage.
- #6755: Treat the length of OOV token as 1 to fix token align issue when OOV occurred.
- #6899: Fixed
MappingPolicynot predictingaction_listenafter the mapped action while runningrasa test.
Improvements
- #6900: Debug logs from
matplotliblibraries are now hidden by default and are configurable with theLOG_LEVEL_LIBRARIESenvironment variable.
[1.10.14] - 2020-09-23
Bugfixes
- #6741: Fixed the remote URL of ConveRT model as it was recently updated by its authors. Also made the remote URL configurable at runtime in the corresponding tokenizer's and featurizer's configuration.
[1.10.13] - 2020-09-22
Bugfixes
- #6577: Remove BILOU tag prefix from role and group labels when creating entities.
[1.10.12] - 2020-09-03
Bugfixes
- #6549: Fix slow training of
CRFEntityExtractorwhen using Entity Roles and Groups.
[1.10.11] - 2020-08-21
Improvements
#6044: Do not deepcopy slots when instantiating trackers. This leads to a significant speedup when training on domains with a large number of slots.
#6226: Added more debugging logs to the Lock Stores to simplify debugging in case of
connection problems.
Added a new parameter
socket_timeoutto theRedisLockStore. If Redis doesn't answer withinsocket_timeoutseconds to requests from Rasa Open Source, an error is raised. This avoids seemingly infinitely blocking connections and exposes connection problems early.
Bugfixes
- #5182: Fixed a bug where domain fields such as
store_entities_as_slotswere overridden with defaults and therefore ignored. - #6191: If two entities are separated by a comma (or any other symbol), extract them as two separate entities.
- #6340: If two entities are separated by a single space and uses BILOU tagging, extract them as two separate entities based on their BILOU tags.
[1.10.10] - 2020-08-04
Bugfixes
- #6280: Fixed
TypeError: expected string or bytes-like objectissue caused by integer, boolean, and null values in templates.
[1.10.9] - 2020-07-29
Improvements
- #6255: Rasa Open Source will no longer add
responsesto theactionssection of the domain when persisting the domain as a file. This addresses related problems in Rasa X when Integrated Version Control introduced big diffs due to the added utterances in theactionssection.
Bugfixes
- #6160: Consider entity roles/groups during interactive learning.
[1.10.8] - 2020-07-15
Bugfixes
- #6075: Add 'Access-Control-Expose-Headers' for 'filename' header
- #6137: Fixed a bug where an invalid language variable prevents rasa from finding training examples when importing Dialogflow data.
[1.10.7] - 2020-07-07
Features
#6150: Add
not_supported_language_listto component to be able to define languages that a component can NOT handle.WhitespaceTokenizeris not able to process languages which are not separated by whitespace.WhitespaceTokenizerwill throw an error if it is used with Chinese, Japanese, and Thai.
Bugfixes
- #6150:
WhitespaceTokenizeronly removes emoji if complete token matches emoji regex.
[1.10.6] - 2020-07-06
Bugfixes
- #6143: Prevent
WhitespaceTokenizerfrom outputting empty list of tokens.
[1.10.5] - 2020-07-02
Bugfixes
- #6119: Explicitly remove all emojis which appear as unicode characters from the output of
regex.subinsideWhitespaceTokenizer.
[1.10.4] - 2020-07-01
Bugfixes
#5998:
WhitespaceTokenizerdoes not remove vowel signs in Hindi anymore.#6031: Previously, specifying a lock store in the endpoint configuration with a type other than
redisorin_memorywould lead to anAttributeError: 'str' object has no attribute 'type'. This bug is fixed now.#6032: Fix
Interpreter parsed an intent ...warning when using the/model/parseendpoint with an NLU-only model.#6042: Convert entity values coming from any entity extractor to string during evaluation to avoid mismatches due to different types.
#6078: The assistant will respond through the webex channel to any user (room) communicating to it. Before the bot responded only to a fixed
roomIdset in thecredentials.ymlconfig file.
[1.10.3] - 2020-06-12
Improvements
- #3900: Reduced duplicate logs and warnings when running
rasa train.
Bugfixes
#5972: Remove the
clean_up_entitiesmethod from theDIETClassifierandCRFEntityExtractoras it let to incorrect entity predictions.#5976: Fix server crashes that occurred when Rasa Open Source pulls a model from a model server and an exception was thrown during model loading (such as a domain with invalid YAML).
[1.10.2] - 2020-06-03
Bugfixes
#5521: Responses used in ResponseSelector now support new lines with explicitly adding
\\nbetween them.#5758: Fixed a bug in
rasa export) which caused Rasa Open Source to only migrate conversation events from the last Session configuration.
[1.10.1] - 2020-05-15
Improvements
- #5794: Creating a
DomainusingDomain.fromDictcan no longer alter the input dictionary. Previously, there could be problems when the input dictionary was re-used for other things after creating theDomainfrom it.
Bugfixes
#5617: Don't create TensorBoard log files during prediction.
#5638: Fix: DIET breaks with empty spaCy model
#5755: Remove
clean_up_entitiesfrom extractors that extract pre-defined entities. Just keep the clean up method for entity extractors that extract custom entities.#5792: Fixed issue where the
DucklingHTTPExtractorcomponent would not work if its url contained a trailing slash.#5825: Fix list index out of range error in
ensure_consistent_bilou_tagging.
Miscellaneous internal changes
- #5788
[1.10.0] - 2020-04-28
Features
#3765: Add support for entities with roles and grouping of entities in Rasa NLU.
You can now define a role and/or group label in addition to the entity type for entities. Use the role label if an entity can play different roles in your assistant. For example, a city can be a destination or a departure city. The group label can be used to group multiple entities together. For example, you could group different pizza orders, so that you know what toppings goes with which pizza and what size which pizza has. For more details see Entities Roles and Groups.
To fill slots from entities with a specific role/group, you need to either use forms or use a custom action. We updated the tracker method
get_latest_entity_valuesto take an optional role/group label. If you want to use a form, you can add the specific role/group label of interest to the slot mapping functionfrom_entity(see Forms).note
Composite entities are currently just supported by the DIETClassifier and CRFEntityExtractor.
#5465: Update training data format for NLU to support entities with a role or group label.
You can now specify synonyms, roles, and groups of entities using the following data format: Markdown:
[LA]{"entity": "location", "role": "city", "group": "CA", "value": "Los Angeles"}JSON:
"entities": [{"start": 10,"end": 12,"value": "Los Angeles","entity": "location","role": "city","group": "CA",}]The markdown format
[LA](location:Los Angeles)is deprecated. To update your training data file just execute the following command on the terminal of your choice:sed -i -E 's/\\[([^)]+)\\]\\(([^)]+):([^)]+)\\)/[\\1]{"entity": "\\2", "value": "\\3"}/g' nlu.mdFor more information about the new data format see Training Data Format.
Improvements
#2224: Suppressed
pikalogs when establishing the connection. These log messages mostly happened when Rasa X and RabbitMQ were started at the same time. Since RabbitMQ can take a few seconds to initialize, Rasa X has to re-try until the connection is established. In case you suspect a different problem (such as failing authentication) you can re-enable thepikalogs by setting the log level toDEBUG. To run Rasa Open Source in debug mode, use the--debugflag. To run Rasa X in debug mode, set the environment variableDEBUG_MODEtotrue.#3419: Include the source filename of a story in the failed stories
Include the source filename of a story in the failed stories to make it easier to identify the file which contains the failed story.
#5544: Add confusion matrix and “confused_with” to response selection evaluation
If you are using ResponseSelectors, they now produce similiar outputs during NLU evaluation. Misclassfied responses are listed in a “confused_with” attribute in the evaluation report. Similiarily, a confusion matrix of all responses is plotted.
#5578: Added
socketioto the compatible channels for Reminders and External Events.#5595: Update
POST /model/trainendpoint to accept retrieval action responses at theresponseskey of the JSON payload.#5627: All Rasa Open Source images are now using Python 3.7 instead of Python 3.6.
#5635: Update dependencies based on the
dependabotcheck.#5636: Add dropout between
FFNNandDenseForSparselayers inDIETClassifier,ResponseSelectorandEmbeddingIntentClassifiercontrolled byuse_dense_input_dropoutconfig parameter.#5646:
DIETClassifieronly counts as extractor inrasa testif it was actually trained for entity recognition.#5669: Remove regularization gradient for variables that don't have prediction gradient.
#5672: Raise a warning in
CRFEntityExtractorandDIETClassifierif entities are not correctly annotated in the training data, e.g. their start and end values do not match any start and end values of tokens.#5690: Add
full_retrieval_intentproperty toResponseSelectorrankings#5717: Change default values for hyper-parameters in
EmbeddingIntentClassifierandDIETClassifierUse
scale_loss=FalseinDIETClassifier. Reduce the number of dense dimensions for sparse features of text from 512 to 256 inEmbeddingIntentClassifier.
Bugfixes
#5230: Fixed issue where posting to certain callback channel URLs would return a 500 error on successful posts due to invalid response format.
#5475: One word can just have one entity label.
If you are using, for example,
ConveRTTokenizerwords can be split into multiple tokens. Our entity extractors assign entity labels per token. So, it might happen, that a word, that was split into two tokens, got assigned two different entity labels. This is now fixed. One word can just have one entity label at a time.#5509: An entity label should always cover a complete word.
If you are using, for example,
ConveRTTokenizerwords can be split into multiple tokens. Our entity extractors assign entity labels per token. So, it might happen, that just a part of a word has an entity label. This is now fixed. An entity label always covers a complete word.#5574: Fixed an issue that happened when metadata is passed in a new session.
Now the metadata is correctly passed to the ActionSessionStart.
#5672: Updated Python dependency
ruamel.yamlto>=0.16. We recommend to use at least0.16.10due to the security issue CVE-2019-20478 which is present in in prior versions.
Miscellaneous internal changes
- #5556, #5587, #5614, #5631, #5633
[1.9.7] - 2020-04-23
Improvements
- #4606: The stream reading timeout for
rasa shell\is now configurable by using the environment variable ``RASA_SHELL_STREAM_READING_TIMEOUT_IN_SECONDS. This can help to fix problems when usingrasa shell` with custom actions which run 10 seconds or longer.
Bugfixes
#5709: Reverted changes in 1.9.6 that led to model incompatibility. Upgrade to 1.9.7 to fix
self.sequence_lengths_for(tf_batch_data[TEXT_SEQ_LENGTH][0]) IndexError: list index out of rangeerror without needing to retrain earlier 1.9 models.Therefore, all 1.9 models except for 1.9.6 will be compatible; a model trained on 1.9.6 will need to be retrained on 1.9.7.
[1.9.6] - 2020-04-15
Bugfixes
#5426: Fix rasa test nlu plotting when using multiple runs.
#5489: Fixed issue where
max_number_of_predictionswas not considered when running end-to-end testing.
Miscellaneous internal changes
- #5626
[1.9.5] - 2020-04-01
Improvements
#5533: Support for PostgreSQL schemas in SQLTrackerStore. The
SQLTrackerStoreaccesses schemas defined by thePOSTGRESQL_SCHEMAenvironment variable if connected to a PostgreSQL database.The schema is added to the connection string option's
-csearch_pathkey, e.g.-options=-csearch_path=<SCHEMA_NAME>(see the PostgreSQL docs for more details). As before, if noPOSTGRESQL_SCHEMAis defined, Rasa uses the database's default schema (public).The schema has to exist in the database before connecting, i.e. it needs to have been created with
CREATE SCHEMA schema_name;
Bugfixes
- #5547: Fixed ambiguous logging in
DIETClassifierby adding the name of the calling class to the log message.
[1.9.4] - 2020-03-30
Bugfixes
- #5529: Fix memory leak problem on increasing number of calls to
/model/parseendpoint.
[1.9.3] - 2020-03-27
Bugfixes
- #5505: Set default value for
weight_sparsityinResponseSelectorto0. This fixes a bug in the default behavior ofResponseSelectorwhich was accidentally introduced inrasa==1.8.0. Users should update to this version and re-train their models ifResponseSelectorwas used in their pipeline.
[1.9.2] - 2020-03-26
Improved Documentation
- #5497: Fix documentation to bring back Sara.
[1.9.1] - 2020-03-25
Bugfixes
- #5492: Fix an issue where the deprecated
queueparameter for the Pika Event Broker was ignored and Rasa Open Source published the events to therasa_core_eventsqueue instead. Note that this does not change the fact that thequeueargument is deprecated in favor of thequeuesargument.
[1.9.0] - 2020-03-24
Features
#5006: Channel
hangoutsfor Rasa integration with Google Hangouts Chat is now supported out-of-the-box.#5389: Add an optional path to a specific directory to download and cache the pre-trained model weights for HFTransformersNLP.
#5422: Add options
tensorboard_log_directoryandtensorboard_log_leveltoEmbeddingIntentClassifier,DIETClasifier,ResponseSelector,EmbeddingPolicyandTEDPolicy.By default
tensorboard_log_directoryisNone. If a valid directory is provided, metrics are written during training. After the model is trained you can take a look at the training metrics in tensorboard. Executetensorboard --logdir <path-to-given-directory>.Metrics can either be written after every epoch (default) or for every training step. You can specify when to write metrics using the variable
tensorboard_log_level. Valid values are 'epoch' and 'minibatch'.We also write down a model summary, i.e. layers with inputs and types, to the given directory.
Improvements
#4756: Make response timeout configurable.
rasa run,rasa shellandrasa xcan now be started with--response-timeout <int>to configure a response timeout of<int>seconds.#4826: Add full retrieval intent name to message data
ResponseSelectorwill now add the full retrieval intent name e.g.faq/which_versionto the prediction, making it accessible from the tracker.#5258: Added
PikaEventBroker(Pika Event Broker) support for publishing to multiple queues. Messages are now published to afanoutexchange with namerasa-exchange(see exchange-fanout for more information onfanoutexchanges).The former
queuekey is deprecated. Queues should now be specified as a list in theendpoints.ymlevent broker config under a new keyqueues. Example config:event_broker:type: pikaurl: localhostusername: usernamepassword: passwordqueues:- queue-1- queue-2- queue-3#5416: Change
rasa initto includetests/conversation_tests.mdfile by default.#5446: The endpoint
PUT /conversations/<conversation_id>/tracker/eventsno longer adds session start events (to learn more about conversation sessions, please see Session configuration) in addition to the events which were sent in the request payload. To achieve the old behavior send aGET /conversations/<conversation_id>/trackerrequest before appending events.#5482: Make
scale_lossfor intents behave the same way as in versions below1.8, but only scale if some of the examples in a batch has probability of the golden label more than0.5. Introducescale_lossfor entities inDIETClassifier.
Bugfixes
#5205: Fixed the bug when FormPolicy was overwriting MappingPolicy prediction (e.g.
/restart). Priorities for Mapping Policy and Form Policy are no longer linear:FormPolicypriority is 5, but its prediction is ignored ifMappingPolicyis used for prediction.#5215: Fixed issue related to storing Python
floatvalues asdecimal.Decimalobjects in DynamoDB tracker stores. Alldecimal.Decimalobjects are now converted tofloaton tracker retrieval.Added a new docs section on DynamoTrackerStore.
#5356: Fixed bug where
FallbackPolicywould always fall back if the fallback action isaction_listen.#5361: Fixed bug where starting or ending a response with
\\n\\nled to one of the responses returned being empty.#5405: Fixes issue where model always gets retrained if multiple NLU/story files are in a directory, by sorting the list of files.
#5444: Fixed ambiguous logging in DIETClassifier by adding the name of the calling class to the log message.
Improved Documentation
#2237: Restructure the “Evaluating models” documentation page and rename this page to Testing Your Assistant.
#5302: Improved documentation on how to build and deploy an action server image for use on other servers such as Rasa X deployments.
Miscellaneous internal changes
- #5340
[1.8.3] - 2020-03-27
Bugfixes
#5405: Fixes issue where model always gets retrained if multiple NLU/story files are in a directory, by sorting the list of files.
#5444: Fixed ambiguous logging in DIETClassifier by adding the name of the calling class to the log message.
#5506: Set default value for
weight_sparsityinResponseSelectorto0. This fixes a bug in the default behavior ofResponseSelectorwhich was accidentally introduced inrasa==1.8.0. Users should update to this version orrasa>=1.9.3and re-train their models ifResponseSelectorwas used in their pipeline.
Improved Documentation
- #5302: Improved documentation on how to build and deploy an action server image for use on other servers such as Rasa X deployments.
[1.8.2] - 2020-03-19
Bugfixes
#5438: Fixed bug when installing rasa with
poetry.#5413: Fixed bug with
EmbeddingIntentClassifier, where results weren't the same as in 1.7.x. Fixed by setting weight sparsity to 0.
Improved Documentation
#5404: Explain how to run commands as
rootuser in Rasa SDK Docker images since version1.8.0. Since version1.8.0the Rasa SDK Docker images does not longer run asrootuser by default. For commands which requirerootuser usage, you have to switch back to therootuser in your Docker image as described in Building an Action Server Image.#5402: Made improvements to Building Assistants tutorial
[1.8.1] - 2020-03-06
Bugfixes
- #5354: Fixed issue with using language models like
xlnetalong withentity_recognitionset toTrueinsideDIETClassifier.
Miscellaneous internal changes
- #5330, #5348
[1.8.0] - 2020-02-26
Deprecations and Removals
#4991: Removed
Agent.continue_trainingand thedump_flattened_storiesparameter fromAgent.persist.#5266: Properties
Component.providesandComponent.requiresare deprecated. UseComponent.required_components()instead.
Features
#2674: Add default value
__other__tovaluesof aCategoricalSlot.All values not mentioned in the list of values of a
CategoricalSlotwill be mapped to__other__for featurization.#4088: Add story structure validation functionality (e.g. rasa data validate stories –max-history 5).
#5065: Add LexicalSyntacticFeaturizer to sparse featurizers.
LexicalSyntacticFeaturizerdoes the same featurization as theCRFEntityExtractor. We extracted the featurization into a separate component so that the features can be reused and featurization is independent from the entity extraction.#5187: Integrate language models from HuggingFace's Transformers Library.
Add a new NLP component HFTransformersNLP which tokenizes and featurizes incoming messages using a specified pre-trained model with the Transformers library as the backend. Add LanguageModelTokenizer and LanguageModelFeaturizer which use the information from HFTransformersNLP and sets them correctly for message object. Language models currently supported: BERT, OpenAIGPT, GPT-2, XLNet, DistilBert, RoBERTa.
#5225: Added a new CLI command
rasa exportto publish tracker events from a persistent tracker store using an event broker. See Export Conversations to an Event Broker, Tracker Stores and Event Brokers for more details.#5230: Refactor how GPU and CPU environments are configured for TensorFlow 2.0.
Please refer to the documentation on Configuring TensorFlow to understand which environment variables to set in what scenarios. A couple of examples are shown below as well:
# This specifies to use 1024 MB of memory from GPU with logical ID 0 and 2048 MB of memory from GPU with logical ID 1TF_GPU_MEMORY_ALLOC="0:1024, 1:2048"# Specifies that at most 3 CPU threads can be used to parallelize multiple non-blocking operationsTF_INTER_OP_PARALLELISM_THREADS="3"# Specifies that at most 2 CPU threads can be used to parallelize a particular operation.TF_INTRA_OP_PARALLELISM_THREADS="2"#5266: Added a new NLU component DIETClassifier and a new policy TEDPolicy.
DIET (Dual Intent and Entity Transformer) is a multi-task architecture for intent classification and entity recognition. You can read more about this component in the DIETClassifier documentation. The new component will replace the
EmbeddingIntentClassifierand the CRFEntityExtractor in the future. Those two components are deprecated from now on. See migration guide for details on how to switch to the new component.TEDPolicy is the new name for EmbeddingPolicy.
EmbeddingPolicyis deprecated from now on. The functionality ofTEDPolicyandEmbeddingPolicyis the same. Please update your configuration file to use the new name for the policy.#663: The sentence vector of the
SpacyFeaturizerandMitieFeaturizercan be calculated using max or mean pooling.To specify the pooling operation, set the option
poolingfor theSpacyFeaturizeror theMitieFeaturizerin your configuration file. The default pooling operation ismean. The mean pooling operation also does not take into account words, that do not have a word vector.
Improvements
#3975: Added command line argument
--conversation-idtorasa interactive. If the argument is not given,conversation_iddefaults to a random uuid.#4653: Added a new command-line argument
--init-dirto commandrasa initto specify the directory in which the project is initialised.#4682: Added support to send images with the twilio output channel.
#4817: Part of Slack sanitization: Multiple garbled URL's in a string coming from slack will be converted into actual strings.
Example: health check of <http://eemdb.net|eemdb.net> and <http://eemdb1.net|eemdb1.net> to health check of eemdb.net and eemdb1.net#5117: New command-line argument –conversation-id will be added and wiil give the ability to set specific conversation ID for each shell session, if not passed will be random.
#5211: Messages sent to the Pika Event Broker are now persisted. This guarantees the RabbitMQ will re-send previously received messages after a crash. Note that this does not help for the case where messages are sent to an unavailable RabbitMQ instance.
#5250: Added support for mattermost connector to use bot accounts.
#5266: We updated our code to TensorFlow 2.
#5317: Events exported using
rasa exportreceive a message header if published through aPikaEventBroker. The header is added to the message'sBasicProperties.headersunder therasa-export-process-idkey (rasa.core.constants.RASA_EXPORT_PROCESS_ID_HEADER_NAME). The value is a UUID4 generated at each call ofrasa export. The resulting header is a key-value pair that looks as follows:'rasa-export-process-id': 'd3b3d3ffe2bd4f379ccf21214ccfb261'#5292: Added
followlinks=Trueto os.walk calls, to allow the use of symlinks in training, NLU and domain data.#4811: Support invoking a
SlackBotby direct messaging or@<app name>mentions.
Bugfixes
#4006: Fixed timestamp parsing warning when using DucklingHTTPExtractor
#4601: Fixed issue with
action_restartgetting overridden byaction_listenwhen theMappingPolicyand the TwoStageFallbackPolicy are used together.#5201: Fixed incorrectly raised Error encountered in pipelines with a
ResponseSelectorand NLG.When NLU training data is split before NLU pipeline comparison, NLG responses were not also persisted and therefore training for a pipeline including the
ResponseSelectorwould fail.NLG responses are now persisted along with NLU data to a
/traindirectory in therun_x/xx%_exclusionfolder.#5277: Fixed sending custom json with Twilio channel
Improved Documentation
#5174: Updated the documentation to properly suggest not to explicitly add utterance actions to the domain.
#5189: Added user guide for reminders and external events, including
reminderbotdemo.
Miscellaneous internal changes
- #3923, #4597, #4903, #5180, #5189, #5266, #699
[1.7.4] - 2020-02-24
Bugfixes
#5068: Tracker stores supporting conversation sessions (
SQLTrackerStoreandMongoTrackerStore) do not save the tracker state to database immediately after starting a new conversation session. This leads to the number of events being saved in addition to the already-existing ones to be calculated correctly.This fixes
action_listenevents being saved twice at the beginning of conversation sessions.
[1.7.3] - 2020-02-21
Bugfixes
- #5231: Fix segmentation fault when running
rasa trainorrasa shell.
Improved Documentation
- #5286: Fix doc links on “Deploying your Assistant” page
[1.7.2] - 2020-02-13
Bugfixes
- #5197: Fixed incompatibility of Oracle with the SQLTrackerStore, by using a
Sequencefor the primary key columns. This does not change anything for SQL databases other than Oracle. If you are using Oracle, please create a sequence with the instructions in the SQLTrackerStore docs.
Improved Documentation
#5197: Added section on setting up the SQLTrackerStore with Oracle
#5210: Renamed “Running the Server” page to “Configuring the HTTP API”
[1.7.1] - 2020-02-11
Bugfixes
#5106: Fixed file loading of non proper UTF-8 story files, failing properly when checking for story files.
#5162: Fix problem with multi-intents. Training with multi-intents using the
CountVectorsFeaturizertogether withEmbeddingIntentClassifieris working again.#5171: Fix bug
ValueError: Cannot concatenate sparse features as sequence dimension does not match.When training a Rasa model that contains responses for just some of the intents, training was failing. Fixed the featurizers to return a consistent feature vector in case no response was given for a specific message.
#5199: If no text features are present in
EmbeddingIntentClassifierreturn the intentNone.#5216: Resolve version conflicts: Pin version of cloudpickle to ~=1.2.0.
[1.7.0] - 2020-01-29
Deprecations and Removals
#4964: The endpoint
/conversations/<conversation_id>/executeis now deprecated. Instead, users should use the/conversations/<conversation_id>/trigger_intentendpoint and thus trigger intents instead of actions.#4978: Remove option
use_cls_tokenfrom tokenizers and optionreturn_sequencefrom featurizers.By default all tokenizer add a special token (
__CLS__) to the end of the list of tokens. This token will be used to capture the features of the whole utterance.The featurizers will return a matrix of size (number-of-tokens x feature-dimension) by default. This allows to train sequence models. However, the feature vector of the
__CLS__token can be used to train non-sequence models. The corresponding classifier can decide what kind of features to use.
Features
#400: Rename
templateskey in domain toresponses.templateskey will still work for backwards compatibility but will raise a future warning.#4902: Added a new configuration parameter,
ranking_lengthto theEmbeddingPolicy,EmbeddingIntentClassifier, andResponseSelectorclasses.#4964: External events and reminders now trigger intents (and entities) instead of actions.
Add new endpoint
/conversations/<conversation_id>/trigger_intent, which lets the user specify an intent and a list of entities that is injected into the conversation in place of a user message. The bot then predicts and executes a response action.#4978: Add
ConveRTTokenizer.The tokenizer should be used whenever the
ConveRTFeaturizeris used.Every tokenizer now supports the following configuration options:
intent_tokenization_flag: Flag to check whether to split intents (defaultFalse).intent_split_symbol: Symbol on which intent should be split (default_)
Improvements
#1988: Remove the need of specifying utter actions in the
actionssection explicitly if these actions are already listed in thetemplatessection.#4877: Entity examples that have been extracted using an external extractor are excluded from Markdown dumping in
MarkdownWriter.dumps(). The excluded external extractors areDucklingHTTPExtractorandSpacyEntityExtractor.#4902: The
EmbeddingPolicy,EmbeddingIntentClassifier, andResponseSelectornow by default normalize confidence levels over the top 10 results. See Rasa 1.6 to Rasa 1.7 for more details.#4964:
ReminderCancelledcan now cancel multiple reminders if no name is given. It still cancels a single reminder if the reminder's name is specified.
Bugfixes
#4774: Requests to
/model/traindo not longer block other requests to the Rasa server.#4896: Fixed default behavior of
rasa test core --evaluate-model-directorywhen called without--model. Previously, the latest model file was used as--model. Now the default model directory is used instead.New behavior of
rasa test core --evaluate-model-directorywhen given an existing file as argument for--model: Previously, this led to an error. Now a warning is displayed and the directory containing the given file is used as--model.#5040: Updated the dependency
networkxfrom 2.3.0 to 2.4.0. The old version created incompatibilities when using pip.There is an imcompatibility between Rasa dependecy requests 2.22.0 and the own depedency from Rasa for networkx raising errors upon pip install. There is also a bug corrected in
requirements.txtwhich used~=instead of==. All of these are fixed using networkx 2.4.0.#5057: Fixed compatibility issue with Microsoft Bot Framework Emulator if
service_urllacked a trailing/.#5092: DynamoDB tracker store decimal values will now be rounded on save. Previously values exceeding 38 digits caused an unhandled error.
Miscellaneous internal changes
- #4458, #4664, #4780, #5029
[1.6.2] - 2020-01-28
Improvements
- #4994: Switching back to a TensorFlow release which only includes CPU support to reduce the
size of the dependencies. If you want to use the TensorFlow package with GPU support,
please run
pip install tensorflow-gpu==1.15.0.
Bugfixes
#5111: Fixes
Exception 'Loop' object has no attribute '_ready'error when runningrasa init.#5126: Updated the end-to-end ValueError you recieve when you have a invalid story format to point to the updated doc link.
[1.6.1] - 2020-01-07
Bugfixes
#4989: Use an empty domain in case a model is loaded which has no domain (avoids errors when accessing
agent.doman.<some attribute>).#4995: Replace error message with warning in tokenizers and featurizers if default parameter not set.
#5019: Pin sanic patch version instead of minor version. Fixes sanic
_run_request_middleware()error.#5032: Fix wrong calculation of additional conversation events when saving the conversation. This led to conversation events not being saved.
#5032: Fix wrong order of conversation events when pushing events to conversations via
POST /conversations/<conversation_id>/tracker/events.
[1.6.0] - 2019-12-18
Deprecations and Removals
#4935: Removed
ner_featuresas a feature name fromCRFEntityExtractor, usetext_dense_featuresinstead.The following settings match the previous
NGramFeaturizer:pipeline:- name: 'CountVectorsFeaturizer'analyzer: 'char_wb'min_ngram: 3max_ngram: 17max_features: 10min_df: 5#4957: To use custom features in the
CRFEntityExtractorusetext_dense_featuresinstead ofner_features. Iftext_dense_featuresare present in the feature set, theCRFEntityExtractorwill automatically make use of them. Just make sure to add a dense featurizer in front of theCRFEntityExtractorin your pipeline and set the flagreturn_sequencetoTruefor that featurizer.#4990: Deprecated
Agent.continue_training. Instead, a model should be retrained.#684: Specifying lookup tables directly in the NLU file is now deprecated. Please specify them in an external file.
Features
#4795: Replaced the warnings about missing templates, intents etc. in validator.py by debug messages.
#4830: Added conversation sessions to trackers.
A conversation session represents the dialog between the assistant and a user. Conversation sessions can begin in three ways: 1. the user begins the conversation with the assistant, 2. the user sends their first message after a configurable period of inactivity, or 3. a manual session start is triggered with the
/session_startintent message. The period of inactivity after which a new conversation session is triggered is defined in the domain using thesession_expiration_timekey in thesession_configsection. The introduction of conversation sessions comprises the following changes:Added a new event
SessionStartedthat marks the beginning of a new conversation session.Added a new default action
ActionSessionStart. This action takes allSlotSetevents from the previous session and applies it to the next session.Added a new default intent
session_startwhich triggers the start of a new conversation session.SQLTrackerStoreandMongoTrackerStoreonly retrieve events from the last session from the database.
note
The session behavior is disabled for existing projects, i.e. existing domains without session config section.
#4935: Preparation for an upcoming change in the
EmbeddingIntentClassifier:Add option
use_cls_tokento all tokenizers. If it is set toTrue, the token__CLS__will be added to the end of the list of tokens. Default is set toFalse. No need to change the default value for now.Add option
return_sequenceto all featurizers. By default all featurizers return a matrix of size (1 x feature-dimension). If the optionreturn_sequenceis set toTrue, the corresponding featurizer will return a matrix of size (token-length x feature-dimension). See Text Featurizers. Default value is set toFalse. However, you might want to set it toTrueif you want to use custom features in theCRFEntityExtractor. See passing custom features to theCRFEntityExtractorChanged some featurizers to use sparse features, which should reduce memory usage with large amounts of training data significantly. Read more: Text Featurizers .
caution
These changes break model compatibility. You will need to retrain your old models!
Improvements
#3549: Added
--no-plotoption forrasa testcommand, which disables rendering of confusion matrix and histogram. By default plots will be rendered.#4086: If matplotlib couldn't set up a default backend, it will be set automatically to TkAgg/Agg one
#4647: Add the option
\random_seed`to the`rasa data split nlu`` command to generate reproducible train/test splits.#4734: Changed
url__init__()arguments for custom tracker stores tohostto reflect the__init__arguments of currently supported tracker stores. Note that inendpoints.yml, these are still declared asurl.#4751: The
kafka-pythondependency has become as an “extra” dependency. To use theKafkaEventConsumer,rasahas to be installed with the[kafka]option, i.e.$ pip install rasa[kafka]#4801: Allow creation of natural language interpreter and generator by classname reference in
endpoints.yml.#4834: Made it explicit that interactive learning does not work with NLU-only models.
Interactive learning no longer trains NLU-only models if no model is provided and no core data is provided.
#4899: The
intent_report.jsoncreated byrasa testnow creates an extra fieldconfused_withfor each intent. This is a dictionary containing the names of the most common false positives when this intent should be predicted, and the number of such false positives.#4976:
rasa test nlu --cross-validationnow also includes an evaluation of the response selector. As a result, the train and test F1-score, accuracy and precision is logged for the response selector. A report is also generated in theresultsfolder by the nameresponse_selection_report.json
Bugfixes
#4635: If a
wait_time_between_pullsis configured for the model server inendpoints.yml, this will be used instead of the default one when running Rasa X.#4759: Training Luis data with
luis_schema_versionhigher than 4.x.x will show a warning instead of throwing an exception.#4799: Running
rasa interactivewith no NLU data now works, with the functionality ofrasa interactive core.#4917: When loading models from S3, namespaces (folders within a bucket) are now respected. Previously, this would result in an error upon loading the model.
#4925: “rasa init” will ask if user wants to train a model
#4942: Pin
multidictdependency to 4.6.1 to prevent sanic from breaking, see the Sanic GitHub issue for more info.#4985: Fix errors during training and testing of
ResponseSelector.
[1.5.3] - 2019-12-11
Improvements
- #4933: Improved error message that appears when an incorrect parameter is passed to a policy.
Bugfixes
#4914: Added
rasa/nlu/schemas/config.ymlto wheel package#4942: Pin
multidictdependency to 4.6.1 to prevent sanic from breaking, see the Sanic GitHub issue
[1.5.2] - 2019-12-09
Improvements
#3684:
rasa interactivewill skip the story visualization of training stories in case there are more than 200 stories. Stories created during interactive learning will be visualized as before.#4792: The log level for SocketIO loggers, including
websockets.protocol,engineio.server, andsocketio.server, is now handled by theLOG_LEVEL_LIBRARIESenvironment variable, where the default log level isERROR.#4873: Updated all example bots and documentation to use the updated
dispatcher.utter_message()method from rasa-sdk==1.5.0.
Bugfixes
#3684:
rasa interactivewill not load training stories in case the visualization is skipped.#4789: Fixed error where spacy models where not found in the docker images.
#4802: Fixed unnecessary
kwargsunpacking inrasa.test.test_corecall inrasa.test.testfunction.#4898: Training data files now get loaded in the same order (especially relevant to subdirectories) each time to ensure training consistency when using a random seed.
#4918: Locks for tickets in
LockStoreare immediately issued without a redundant check for their availability.
Improved Documentation
#4844: Added
towncrierto automatically collect changelog entries.#4869: Document the pipeline for
pretrained_embeddings_convertin the pre-configured pipelines section.#4894:
Proactively Reaching Out to the User Using Actionsnow correctly links to the endpoint specification.
[1.5.1] - 2019-11-27
Improvements
- When NLU training data is dumped as Markdown file the intents are not longer ordered alphabetically, but in the original order of given training data
Bugfixes
End to end stories now support literal payloads which specify entities, e.g.
greet: /greet{"name": "John"}Slots will be correctly interpolated if there are lists in custom response templates.
Fixed compatibility issues with
rasa-sdk1.5Updated
/statusendpoint to show correct path to model archive
[1.5.0] - 2019-11-26
Features
Added data validator that checks if domain object returned is empty. If so, exit early from the command
rasa data validate.Added the KeywordIntentClassifier.
Added documentation for
AugmentedMemoizationPolicy.Fall back to
InMemoryTrackerStorein case there is any problem with the current tracker store.Arbitrary metadata can now be attached to any
Eventsubclass. The data must be stored under themetadatakey when reading the event from a JSON object or dictionary.Add command line argument
rasa x --config CONFIG, to specify path to the policy and NLU pipeline configuration of your bot (default:config.yml).Added a new NLU featurizer -
ConveRTFeaturizerbased on ConveRT model released by PolyAI.Added a new preconfigured pipeline -
pretrained_embeddings_convert.
Improvements
Do not retrain the entire Core model if only the
templatessection of the domain is changed.Upgraded
jsonschemaversion.
Deprecations and Removals
- Remove duplicate messages when creating training data (issues/1446).
Bugfixes
MultiProjectImporternow imports files in the order of the import statementsFixed server hanging forever on leaving
rasa shellbefore first messageFixed rasa init showing traceback error when user does Keyboard Interrupt before choosing a project path
CountVectorsFeaturizerfeaturizes intents only if its analyzer is set towordFixed bug where facebooks generic template was not rendered when buttons were
NoneFixed default intents unnecessarily raising undefined parsing error
[1.4.6] - 2019-11-22
Bugfixes
Fixed Rasa X not working when any tracker store was configured for Rasa.
Use the matplotlib backend
aggin case thetkinterpackage is not installed.
[1.4.5] - 2019-11-14
Bugfixes
NLU-only models no longer throw warnings about parsing features not defined in the domain
Fixed bug that stopped Dockerfiles from building version 1.4.4.
Fixed format guessing for e2e stories with intent restated as
/intent
[1.4.4] - 2019-11-13
Features
PikaEventProduceradds the RabbitMQApp IDmessage property to published messages with the value of theRASA_ENVIRONMENTenvironment variable. The message property will not be assigned if this environment variable isn't set.
Improvements
Updated Mattermost connector documentation to be more clear.
Updated format strings to f-strings where appropriate.
Updated tensorflow requirement to
1.15.0Dump domain using UTF-8 (to avoid
\\UXXXXsequences in the dumped files)
Bugfixes
Fixed exporting NLU training data in
jsonformat fromrasa interactiveFixed numpy deprecation warnings
[1.4.3] - 2019-10-29
Bugfixes
- Fixed
Connection reset by peererrors and bot response delays when using the RabbitMQ event broker.
[1.4.2] - 2019-10-28
Deprecations and Removals
- TensorFlow deprecation warnings are no longer shown when running
rasa x
Bugfixes
Fixed
'Namespace' object has no attribute 'persist_nlu_data'error during interactive learningPinned networkx~=2.3.0 to fix visualization in rasa interactive and Rasa X
Fixed
No model founderror when usingrasa run actionswith “actions” as a directory.
[1.4.1] - 2019-10-22
Regression: changes from 1.2.12 were missing from 1.4.0, readded them
[1.4.0] - 2019-10-19
Features
add flag to CLI to persist NLU training data if needed
log a warning if the
Interpreterpicks up an intent or an entity that does not exist in the domain file.added
DynamoTrackerStoreto support persistence of agents running on AWSadded docstrings for
TrackerStoreclassesadded buttons and images to mattermost.
CRFEntityExtractorupdated to accept arbitrary token-level features like word vectors (issues/4214)SpacyFeaturizerupdated to addner_featuresforCRFEntityExtractorSanitizing incoming messages from slack to remove slack formatting like
<mailto:xyz@rasa.com|xyz@rasa.com>or<http://url.com|url.com>and substitute it with original contentAdded the ability to configure the number of Sanic worker processes in the HTTP server (
rasa.server) and input channel server (rasa.core.agent.handle_channels()). The number of workers can be set using the environment variableSANIC_WORKERS(default: 1). A value of >1 is allowed only in combination withRedisLockStoreas the lock store.Botframework channel can handle uploaded files in
UserMessagemetadata.Added data validator that checks there is no duplicated example data across multiples intents
Improvements
Unknown sections in markdown format (NLU data) are not ignored anymore, but instead an error is raised.
It is now easier to add metadata to a
UserMessagein existing channels. You can do so by overwriting the methodget_metadata. The return value of this method will be passed to theUserMessageobject.Tests can now be run in parallel
Serialise
DialogueStateTrackeras json instead of pickle. DEPRECATION warning: Deserialisation of pickled trackers will be deprecated in version 2.0. For now, trackers are still loaded from pickle but will be dumped as json in any subsequent save operations.Event brokers are now also passed to custom tracker stores (using the
event_brokerparameter)Don't run the Rasa Docker image as
root.Use multi-stage builds to reduce the size of the Rasa Docker image.
Updated the
/statusapi route to use the actual model file location instead of thetmplocation.
Deprecations and Removals
- Removed Python 3.5 support
Bugfixes
fixed missing
tkinterdependency for running tests on Ubuntufixed issue with
conversationJSON serializationfixed the hanging HTTP call with
ner_duckling_httppipelinefixed Interactive Learning intent payload messages saving in nlu files
fixed DucklingHTTPExtractor dimensions by actually applying to the request
[1.3.10] - 2019-10-18
Features
- Can now pass a package as an argument to the
--actionsparameter of therasa run actionscommand.
Bugfixes
- Fixed visualization of stories with entities which led to a failing visualization in Rasa X
[1.3.9] - 2019-10-10
Features
Port of 1.2.10 (support for RabbitMQ TLS authentication and
portkey in event broker endpoint config).Port of 1.2.11 (support for passing a CA file for SSL certificate verification via the –ssl-ca-file flag).
Bugfixes
Fixed the hanging HTTP call with
ner_duckling_httppipeline.Fixed text processing of
intentattribute insideCountVectorFeaturizer.Fixed
argument of type 'NoneType' is not iterablewhen usingrasa shell,rasa interactive/rasa run
[1.3.8] - 2019-10-08
Improvements
- Policies now only get imported if they are actually used. This removes TensorFlow warnings when starting Rasa X
Bugfixes
Fixed error
Object of type 'MaxHistoryTrackerFeaturizer' is not JSON serializablewhen runningrasa train coreDefault channel
send_methods no longer support kwargs as they caused issues in incompatible channels
[1.3.7] - 2019-09-27
Bugfixes
re-added TLS, SRV dependencies for PyMongo
socketio can now be run without turning on the
--enable-apiflagMappingPolicy no longer fails when the latest action doesn't have a policy
[1.3.6] - 2019-09-21
Features
- Added the ability for users to specify a conversation id to send a message to when
using the
RasaChatinput channel.
[1.3.5] - 2019-09-20
Bugfixes
- Fixed issue where
rasa initwould fail without spaCy being installed
[1.3.4] - 2019-09-20
Features
Added the ability to set the
backlogparameter in Sanicsrun()method using theSANIC_BACKLOGenvironment variable. This parameter sets the number of unaccepted connections the server allows before refusing new connections. A default value of 100 is used if the variable is not set.Status endpoint (
/status) now also returns the number of training processes currently running
Bugfixes
Added the ability to properly deal with spaCy
Doc-objects created on empty strings as discussed in issue #4445. Only training samples that actually bear content are sent toself.nlp.pipefor every given attribute. Non-content-bearing samples are converted to emptyDoc-objects. The resulting lists are merged with their preserved order and properly returned.asyncio warnings are now only printed if the callback takes more than 100ms (up from 1ms).
agent.load_model_from_serverno longer affects logging.
Improvements
- The endpoint
POST /model/trainno longer supports specifying an output directory for the trained model using the fieldout. Instead you can choose whether you want to save the trained model in the default model directory (models) (default behavior) or in a temporary directory by specifying thesave_to_default_model_directoryfield in the training request.
[1.3.3] - 2019-09-13
Bugfixes
Added a check to avoid training
CountVectorizerfor a particular attribute of a message if no text is provided for that attribute across the training data.Default one-hot representation for label featurization inside
EmbeddingIntentClassifierif label features don't exist.Policy ensemble no longer incorrectly wrings “missing mapping policy” when mapping policy is present.
“text” from
utter_custom_jsonnow correctly saved to tracker when using telegram channel
Deprecations and Removals
- Removed computation of
intent_spacy_doc. As a result, none of the spacy components process intents now.
[1.3.2] - 2019-09-10
Bugfixes
- SQL tracker events are retrieved ordered by timestamps. This fixes interactive learning events being shown in the wrong order.
[1.3.1] - 2019-09-09
Improvements
- Pin gast to == 0.2.2
[1.3.0] - 2019-09-05
Features
Added option to persist nlu training data (default: False)
option to save stories in e2e format for interactive learning
bot messages contain the
timestampof theBotUtteredevent, which can be used in channelsFallbackPolicycan now be configured to trigger when the difference between confidences of two predicted intents is too narrowexperimental training data importer which supports training with data of multiple sub bots. Please see the docs for more information.
throw error during training when triggers are defined in the domain without
MappingPolicybeing present in the policy ensembleThe tracker is now available within the interpreter's
parsemethod, giving the ability to create interpreter classes that use the tracker state (eg. slot values) during the parsing of the message. More details on motivation of this change see issues/3015.add example bot
knowledgebasebotto showcase the usage ofActionQueryKnowledgeBasesoftmaxstarspace loss for bothEmbeddingPolicyandEmbeddingIntentClassifierbalancedbatching strategy for bothEmbeddingPolicyandEmbeddingIntentClassifiermax_historyparameter forEmbeddingPolicySuccessful predictions of the NER are written to a file if
--successesis set when runningrasa test nluIncorrect predictions of the NER are written to a file by default. You can disable it via
--no-errors.New NLU component
ResponseSelectoradded for the task of response selectionMessage data attribute can contain two more keys -
response_key,responsedepending on the training dataNew action type implemented by
ActionRetrieveResponseclass and identified withresponse_prefixVocabulary sharing inside
CountVectorsFeaturizerwithuse_shared_vocabflag. If set to True, vocabulary of corpus is shared between text, intent and response attributes of messageAdded an option to share the hidden layer weights of text input and label input inside
EmbeddingIntentClassifierusing the flagshare_hidden_layersNew type of training data file in NLU which stores response phrases for response selection task.
Add flag
intent_split_symbolandintent_tokenization_flagto allWhitespaceTokenizer,JiebaTokenizerandSpacyTokenizerAdded evaluation for response selector. Creates a report
response_selection_report.jsoninside--outdirectory.argument
--config-endpointto specify the URL from whichrasa xpulls the runtime configuration (endpoints and credentials)LockStoreclass storing instances ofTicketLockfor everyconversation_idenvironment variables
SQL_POOL_SIZE(default: 50) andSQL_MAX_OVERFLOW(default: 100) can be set to control the pool size and maximum pool overflow forSQLTrackerStorewhen used with thepostgresqldialectAdd a bot_challenge intent and a utter_iamabot action to all example projects and the rasa init bot.
Allow sending attachments when using the socketio channel
rasa data validatewill fail with a non-zero exit code if validation fails
Improvements
added character-level
CountVectorsFeaturizerwith empirically found parameters into thesupervised_embeddingsNLU pipeline templateNLU evaluations now also stores its output in the output directory like the core evaluation
show warning in case a default path is used instead of a provided, invalid path
compare mode of
rasa train coreallows the whole core config comparison, naming style of models trained for comparison is changed (this is a breaking change)pika keeps a single connection open, instead of open and closing on each incoming event
RasaChatInputfetches the public key from the Rasa X API. The key is used to decode the bearer token containing the conversation ID. This requiresrasa-x>=0.20.2.more specific exception message when loading custom components depending on whether component's path or class name is invalid or can't be found in the global namespace
change priorities so that the
MemoizationPolicyhas higher priority than theMappingPolicysubstitute LSTM with Transformer in
EmbeddingPolicyEmbeddingPolicycan now useMaxHistoryTrackerFeaturizernon zero
evaluate_on_num_examplesinEmbeddingPolicyandEmbeddingIntentClassifieris the size of hold out validation set that is excluded from training datadefaults parameters and architectures for both
EmbeddingPolicyandEmbeddingIntentClassifierare changed (this is a breaking change)evaluation of NER does not include 'no-entity' anymore
--successesforrasa test nluis now boolean values. If set incorrect/successful predictions are saved in a file.--errorsis renamed to--no-errorsand is now a boolean value. By default incorrect predictions are saved in a file. If--no-errorsis set predictions are not written to a file.Remove
label_tokenization_flagandlabel_split_symbolfromEmbeddingIntentClassifier. Instead move these parameters toTokenizers.Process features of all attributes of a message, i.e. - text, intent and response inside the respective component itself. For e.g. - intent of a message is now tokenized inside the tokenizer itself.
Deprecate
as_markdownandas_jsonin favour ofnlu_as_markdownandnlu_as_jsonrespectively.pin python-engineio >= 3.9.3
update python-socketio req to >= 4.3.1
Bugfixes
rasa test nluwith a folder of configuration filesMappingPolicystandard featurizer is set toNoneRemoved
textparameter from send_attachment function in slack.py to avoid duplication of text output to slackbotserver
/statusendpoint reports status when an NLU-only model is loaded
Deprecations and Removals
- Removed
--reportargument fromrasa test nlu. All output files are stored in the--outdirectory.
[1.2.12] - 2019-10-16
Features
- Support for transit encryption with Redis via
use_ssl: Truein the tracker store config in endpoints.yml
[1.2.11] - 2019-10-09
Features
- Support for passing a CA file for SSL certificate verification via the –ssl-ca-file flag
[1.2.10] - 2019-10-08
Features
Added support for RabbitMQ TLS authentication. The following environment variables need to be set:
RABBITMQ_SSL_CLIENT_CERTIFICATE- path to the SSL client certificate (required)RABBITMQ_SSL_CLIENT_KEY- path to the SSL client key (required)RABBITMQ_SSL_CA_FILE- path to the SSL CA file (optional, for certificate verification)RABBITMQ_SSL_KEY_PASSWORD- SSL private key password (optional)Added ability to define the RabbitMQ port using the
portkey in theevent_brokerendpoint config.
[1.2.9] - 2019-09-17
Bugfixes
- Correctly pass SSL flag values to x CLI command (backport of
[1.2.8] - 2019-09-10
Bugfixes
- SQL tracker events are retrieved ordered by timestamps. This fixes interactive
learning events being shown in the wrong order. Backport of
1.3.2patch (PR #4427).
[1.2.7] - 2019-09-02
Bugfixes
- Added
querydictionary argument toSQLTrackerStorewhich will be appended to the SQL connection URL as query parameters.
[1.2.6] - 2019-09-02
Bugfixes
- fixed bug that occurred when sending template
elementsthrough a channel that doesn't support them
[1.2.5] - 2019-08-26
Features
- SSL support for
rasa runcommand. Certificate can be specified using--ssl-certificateand--ssl-keyfile.
Bugfixes
made default augmentation value consistent across repo
'/restart'will now also restart the bot if the tracker is paused
[1.2.4] - 2019-08-23
Bugfixes
- the
SocketIOinput channel now allows accesses from other origins (fixesSocketIOchannel on Rasa X)
[1.2.3] - 2019-08-15
Improvements
messages with multiple entities are now handled properly with e2e evaluation
data/test_evaluations/end_to_end_story.mdwas re-written in the restaurantbot domain
[1.2.3] - 2019-08-15
Improvements
messages with multiple entities are now handled properly with e2e evaluation
data/test_evaluations/end_to_end_story.mdwas re-written in the restaurantbot domain
Bugfixes
- Free text input was not allowed in the Rasa shell when the response template contained buttons, which has now been fixed.
[1.2.2] - 2019-08-07
Bugfixes
UserUtteredevents always got the same timestamp
[1.2.1] - 2019-08-06
Features
- Docs now have an
EDIT THIS PAGEbutton
Bugfixes
Flood control exceedederror in Telegram connector which happened because the webhook was set twice
[1.2.0] - 2019-08-01
Features
add root route to server started without
--enable-apiparameteradd
--evaluate-model-directorytorasa test coreto evaluate models fromrasa train core -c <config-1> <config-2>option to send messages to the user by calling
POST /conversations/{conversation_id}/execute
Improvements
Agent.update_model()andAgent.handle_message()now work without needing to set a domain or a policy ensembleUpdate pytype to
2019.7.11new event broker class:
SQLProducer. This event broker is now used when running locally with Rasa XAPI requests are not longer logged to
rasa_core.logby default in order to avoid problems when running on OpenShift (use--log-file rasa_core.logto retain the old behavior)metadataattribute added toUserMessage
Bugfixes
rasa test corecan handle compressed model filesrasa can handle story files containing multi line comments
template will retain { if escaped with {. e.g. {{“foo”: {bar}}} will result in {“foo”: “replaced value”}
[1.1.8] - 2019-07-25
Features
TrainingFileImporterinterface to support customizing the process of loading training datafill slots for custom templates
Improvements
Agent.update_model()andAgent.handle_message()now work without needing to set a domain or a policy ensembleupdate pytype to
2019.7.11
Bugfixes
interactive learning bug where reverted user utterances were dumped to training data
added timeout to terminal input channel to avoid freezing input in case of server errors
fill slots for image, buttons, quick_replies and attachments in templates
rasa train corein comparison mode stores the model files compressed (tar.gzfiles)slot setting in interactive learning with the TwoStageFallbackPolicy
[1.1.7] - 2019-07-18
Features
added optional pymongo dependencies
[tls, srv]torequirements.txtfor better mongodb supportcase_sensitiveoption added toWhiteSpaceTokenizerwithtrueas default.
Bugfixes
validation no longer throws an error during interactive learning
fixed wrong cleaning of
use_entitiesin case it was a list and notTrueupdated the server endpoint
/model/parseto handle also messages with the intent prefixfixed bug where “No model found” message appeared after successfully running the bot
debug logs now print to
rasa_core.logwhen runningrasa x -vvorrasa run -vv
[1.1.6] - 2019-07-12
Features
- rest channel supports setting a message's input_channel through a field
input_channelin the request body
Improvements
- recommended syntax for empty
use_entitiesandignore_entitiesin the domain file has been updated fromFalseorNoneto an empty list ([])
Bugfixes
rasa runwithout--enable-apidoes not require a local model anymoreusing
rasa runwith--enable-apito run a server now prints “running Rasa server” instead of “running Rasa Core server”actions, intents, and utterances created in
rasa interactivecan no longer be empty
[1.1.5] - 2019-07-10
Features
debug logging now tells you which tracker store is connected
the response of
/model/trainnow includes a response header for the trained model filenameValidatorclass to help developing by checking if the files have any errorsproject's code is now linted using flake8
infolog when credentials were provided for multiple channels and channel in--connectorargument was specified at the same timevalidate export paths in interactive learning
Improvements
deprecate
rasa.core.agent.handle_channels(...)\. Please use ``rasa.run(...)orrasa.core.run.configure_app` instead.Agent.load()also acceptstar.gzmodel file
Deprecations and Removals
revert the stripping of trailing slashes in endpoint URLs since this can lead to problems in case the trailing slash is actually wanted
starter packs were removed from Github and are therefore no longer tested by Travis script
Bugfixes
all temporal model files are now deleted after stopping the Rasa server
rasa shell nlunow outputs unicode characters instead of\\uxxxxcodesfixed PUT /model with model_server by deserializing the model_server to EndpointConfig.
x in AnySlotDictis nowTruefor anyx, which fixes empty slot warnings in interactive learningrasa trainnow also includes NLU files in other formats than the Rasa formatrasa train coreno longer crashes without a--domainargrasa interactivenow looks for endpoints inendpoints.ymlif no--endpointsarg is passedcustom files, e.g. custom components and channels, load correctly when using the command line interface
MappingPolicynow works correctly when used as part of a PolicyEnsemble
[1.1.4] - 2019-06-18
Features
unfeaturize single entities
added agent readiness check to the
/statusresource
Improvements
- removed leading underscore from name of '_create_initial_project' function.
Bugfixes
fixed bug where facebook quick replies were not rendering
take FB quick reply payload rather than text as input
fixed bug where training_data path in metadata.json was an absolute path
[1.1.3] - 2019-06-14
Bugfixes
- fixed any inconsistent type annotations in code and some bugs revealed by type checker
[1.1.2] - 2019-06-13
Bugfixes
- fixed duplicate events appearing in tracker when using a PostgreSQL tracker store
[1.1.1] - 2019-06-13
Bugfixes
fixed compatibility with Rasa SDK
bot responses can contain
custommessages besides other message types
[1.1.0] - 2019-06-13
Features
- nlu configs can now be directly compared for performance on a dataset
in
rasa test nlu
Improvements
update the tracker in interactive learning through reverting and appending events instead of replacing the tracker
POST /conversations/{conversation_id}/tracker/eventssupports a list of events
Bugfixes
fixed creation of
RasaNLUHttpInterpreterform actions are included in domain warnings
default actions, which are overriden by custom actions and are listed in the domain are excluded from domain warnings
SQL
datacolumn type toTextfor compatibility with MySQLnon-featurizer training parameters don't break SklearnPolicy anymore
[1.0.9] - 2019-06-10
Improvements
- revert PR #3739 (as this is a breaking change): set
PikaProducerandKafkaProducerdefault queues back torasa_core_events
[1.0.8] - 2019-06-10
Features
support for specifying full database urls in the
SQLTrackerStoreconfigurationmaximum number of predictions can be set via the environment variable
MAX_NUMBER_OF_PREDICTIONS(default is 10)
Improvements
default
PikaProducerandKafkaProducerqueues torasa_production_eventsexclude unfeaturized slots from domain warnings
Bugfixes
loading of additional training data with the
SkillSelectorstrip trailing slashes in endpoint URLs
[1.0.7] - 2019-06-06
Features
- added argument
--rasa-x-portto specify the port of Rasa X when running Rasa X locally viarasa x
Bugfixes
slack notifications from bots correctly render text
fixed usage of
--log-fileargument forrasa runandrasa shellcheck if correct tracker store is configured in local mode
[1.0.6] - 2019-06-03
Bugfixes
- fixed backwards incompatible utils changes
[1.0.5] - 2019-06-03
Bugfixes
- fixed spacy being a required dependency (regression)
[1.0.4] - 2019-06-03
Features
- automatic creation of index on the
sender_idcolumn when using an SQL tracker store. If you have an existing data and you are running into performance issues, please make sure to add an index manually usingCREATE INDEX event_idx_sender_id ON events (sender_id);.
Improvements
- NLU evaluation in cross-validation mode now also provides intent/entity reports, confusion matrix, etc.
[1.0.3] - 2019-05-30
Bugfixes
non-ascii characters render correctly in stories generated from interactive learning
validate domain file before usage, e.g. print proper error messages if domain file is invalid instead of raising errors
[1.0.2] - 2019-05-29
Features
- added
domain_warnings()method toDomainwhich returns a dict containing the diff between supplied {actions, intents, entities, slots} and what's contained in the domain
Bugfixes
fix lookup table files failed to load issues/3622
buttons can now be properly selected during cmdline chat or when in interactive learning
set slots correctly when events are added through the API
mapping policy no longer ignores NLU threshold
mapping policy priority is correctly persisted
[1.0.1] - 2019-05-21
Bugfixes
- updated installation command in docs for Rasa X
[1.0.0] - 2019-05-21
Features
added arguments to set the file paths for interactive training
added quick reply representation for command-line output
added option to specify custom button type for Facebook buttons
added tracker store persisting trackers into a SQL database (
SQLTrackerStore)added rasa command line interface and API
Rasa HTTP training endpoint at
POST /jobs. This endpoint will train a combined Rasa Core and NLU modelReminderCancelled(action_name)event to cancel given action_name reminder for current userRasa HTTP intent evaluation endpoint at
POST /intentEvaluation. This endpoints performs an intent evaluation of a Rasa modeloption to create template for new utterance action in
interactive learningyou can now choose actions previously created in the same session in
interactive learningadd formatter 'black'
channel-specific utterances via the
- "channel":key in utterance templatesarbitrary json messages via the
- "custom":key in utterance templates and viautter_custom_json()method in custom actionssupport to load sub skills (domain, stories, nlu data)
support to select which sub skills to load through
importsection inconfig.ymlsupport for spaCy 2.1
a model for an agent can now also be loaded from a remote storage
log level can be set via environment variable
LOG_LEVELadd
--store-uncompressedto train command to not compress Rasa modellog level of libraries, such as tensorflow, can be set via environment variable
LOG_LEVEL_LIBRARIESif no spaCy model is linked upon building a spaCy pipeline, an appropriate error message is now raised with instructions for linking one
Improvements
renamed all CLI parameters containing any
_to use dashes-instead (GNU standard)renamed
rasa_corepackage torasa.corefor interactive learning only include manually annotated and ner_crf entities in nlu export
made
message_idan additional argument tointerpreter.parsechanged removing punctuation logic in
WhitespaceTokenizertraining_processesin the Rasa NLU data router have been renamed toworker_processescreated a common utils package
rasa.utilsfor nlu and core, common methods likeread_yamlmoved thereremoved
--num_threadsfrom run command (server will be asynchronous but running in a single thread)the
_check_token()method inRasaChatnow authenticates against/auth/verifyinstead of/userremoved
--pre_loadfrom run command (Rasa NLU server will just have a maximum of one model and that model will be loaded by default)changed file format of a stored trained model from the Rasa NLU server to
tar.gztrain command uses fallback config if an invalid config is given
test command now compares multiple models if a list of model files is provided for the argument
--modelMerged rasa.core and rasa.nlu server into a single server. See swagger file in
docs/_static/spec/server.yamlfor available endpoints.utter_custom_message()method in rasa_core_sdk has been renamed toutter_elements()updated dependencies. as part of this, models for spacy need to be reinstalled for 2.1 (from 2.0)
make sure all command line arguments for
rasa testandrasa interactiveare actually used, removed arguments that were not used at all (e.g.--coreforrasa test)
Deprecations and Removals
removed possibility to execute
python -m rasa_core.trainetc. (e.g. scripts inrasa.coreandrasa.nlu). Use the CLI for rasa instead, e.g.rasa train core.removed
_sklearn_numpy_warning_fixfrom theSklearnIntentClassifierremoved
Dispatcherclass from coreremoved projects: the Rasa NLU server now has a maximum of one model at a time loaded.
Bugfixes
evaluating core stories with two stage fallback gave an error, trying to handle None for a policy
the
/evaluateroute for the Rasa NLU server now runs evaluation in a parallel process, which prevents the currently loaded model unloadingadded missing implementation of the
keys()function for the Redis Tracker Storein interactive learning: only updates entity values if user changes annotation
log options from the command line interface are applied (they overwrite the environment variable)
all message arguments (kwargs in dispatcher.utter methods, as well as template args) are now sent through to output channels
utterance templates defined in actions are checked for existence upon training a new agent, and a warning is thrown before training if one is missing
