How the NLUCommandAdapter Works
TheNLUCommandAdapter uses the classic way to start flows, such as using predicted intents by an intent classifier.
It looks at the predicted intent from the intent classifier
and tries to find a flow with a corresponding NLU trigger defined.
If a flow has a NLU trigger matching the predicted intent and the confidence is larger than the given threshold defined
in the NLU trigger, the NLUCommandAdapter will return a StartFlow command to begin the corresponding flow.
Using the NLUCommandAdapter
To use this component in your assistant, add theNLUCommandAdapter to your NLU pipeline in the config.yml file.
You also need to have an intent classifier
listed in your NLU pipeline. Read more about the config.yml file here.
config.yml
When to use the NLUCommandAdapter
We recommend to use theNLUCommandAdapter in two scenarios:
- You want to use NLU data containing intent and examples along with the CALM paradigm. Using the
NLUCommandAdapteryou can initiate a flow based on a predicted intent, given you already have a solid intent classifier in place. Once the flow is initiated, the business logic would be executed as usual in the CALM paradigm with commands predicted by theLLMCommandGeneratorand policies predicting the next best action. - You want to minimize the costs by not making an API call to the LLM each time. The
NLUCommandAdapterdoes not make any API call to a LLM compared to theLLMCommandGenerator. Using theNLUCommandAdaptersaves some costs. Make sure you have a solid intent classifier in place when using theNLUCommandAdapter; otherwise, incorrect flows will begin.
New in 3.12If you are using a LLM-based command generator alongside the
NLUCommandAdapter in the config pipeline, note that
both the LLM-based command generator and the NLUCommandAdapter can now issue commands at any given
conversation turn. To enable this behaviour, you should set the
minimize_num_calls boolean parameter to false in the
LLM-based command generator configuration.Customization
To restrict the length of user messages, you can set theuser_input.max_characters (default value is 420 characters).
config.yml