Quickstart
September 1, 2026 · View on GitHub
Install
pip install ovos-adapt-parser
This pulls in the OVOS pipeline plugin and the bundled adapt parser.
Match an utterance with the engine directly
The adapt parser works standalone, no OVOS, no messagebus. This is the fastest way to see it work and the best way to prototype intents.
from ovos_adapt.intent import IntentBuilder
from ovos_adapt.engine import IntentDeterminationEngine
engine = IntentDeterminationEngine()
# 1. register vocabulary: surface forms grouped by entity type
for word in ["weather", "forecast"]:
engine.register_entity(word, "WeatherKeyword")
for city in ["Seattle", "San Francisco", "Tokyo"]:
engine.register_entity(city, "Location")
for kind in ["snow", "rain", "wind", "sun"]:
engine.register_entity(kind, "WeatherType")
# 2. build an intent over those entity types
weather = IntentBuilder("WeatherIntent") \
.require("WeatherKeyword") \
.require("Location") \
.optionally("WeatherType") \
.build()
engine.register_intent_parser(weather)
# 3. match
for intent in engine.determine_intent("what is the rain forecast in Tokyo"):
if intent.get("confidence", 0) > 0:
print(intent)
Output (abridged):
{'intent_type': 'WeatherIntent',
'WeatherKeyword': 'forecast',
'Location': 'Tokyo',
'WeatherType': 'rain',
'confidence': 0.72}
determine_intent yields one result per clique, best first. Filter on
confidence > 0, a zero score means a required slot was missing.
More runnable examples ship in the examples/ folder.
Enable the pipeline in OVOS
In a full OVOS install the plugin runs as a pipeline stage. Add its entry-point
id to the pipeline list in mycroft.conf:
{
"intents": {
"pipeline": [
"ovos-adapt-pipeline-plugin-high",
"ovos-padatious-pipeline-plugin-high",
"ovos-adapt-pipeline-plugin-medium",
"ovos-adapt-pipeline-plugin-low"
]
}
}
The -high / -medium / -low suffixes select the confidence tier for that
slot in the pipeline (see Configuration). Skills then
register their vocabulary and intents over the messagebus. The plugin matches
incoming utterances automatically. You do not call the engine yourself, see
Bus protocol for what happens under the hood.
Next
- Writing intents,
require/optionally/one_of/exclude, regex entities, and full examples. - Configuration, tune the confidence thresholds.