Commit e00b2205 is the last version that maintains the functionality described in the original README.md. This commit is tagged deprecate-original.
The last NPM package version with the original algorithm is short-order@v0.0.48.
Much of the original code will be stored in the archive folder until the refactor is complete and the original functionality is restored.
short-order is an experimental natural language conversational agent intended for domains with a fixed vocabulary of entities and a small number of intents. Uses might include ordering food from a restaurant or organizing your song collection.
short-order
is based on a pattern-driven tokenizer from the companion token-flow project and a menu library from prix-fixe. For more information on configuring short-order
, please see our concepts explainer.
short-order
is currently in the earliest stages of development, so documentation is sparse or nonexistant, and the code stability is uneven.
If you are interested in taking a look, you can clone the repo on GitHub or install short-order with npm.
short-order
is a Node.js project,
written in TypeScript.
In order to use short-order
you must have
Node installed on your machine.
short-order
has been tested with Node version 10.15.3.
% git clone git@github.com:MikeHopcroft/ShortOrder.git
% npm install
% npm run compile
Before using short-order
, you must tell it where to find the menu data files, using one of the following three methods:
- Set the
PRIX_FIXE_DATA
environment variable in the shell. - Set the
PRIX_FIXE_DATA
in a.env
file at the root of the repo. - Using the
-d
command-line argument in tools likeconfusion_matrix
,test_maker.js
, andtest_runner.js
.
short-order
includes a number of working samples, based on a ficticious restaurant. These files can be found in samples/data.
These samples are not included in the short-order npm package. To use them, you must clone the repo from GitHub.
This section will describe the following sample applications:
- test_maker.js
- test_generator.js
- test_runner.js
- confusion_matrix.js
- repl.js
Here's a very brief roadmap for the project.
- Write a the tokenizer. Code currently resides in the token-flow project.
- Implement a menu/catalog data structure with rules for the hierarchical composition of menu items, default ingrediants, optional ingrediants, substitutions, combos, specials, etc.
- Implement a general menu item attribute system, so that one can ask for a
"small latte"
and then say"make it a double"
. - Implement an intent parser for adding items, customizing items, making substitutions, removing items, etc.
- Integrate intent parser into a conversational agent that takes the order, while asking clarifying questions and offering to upsell.
- Implement a sample bot that uses the conversational agent.