Skip to content

Latest commit

 

History

History
71 lines (51 loc) · 3.93 KB

README.md

File metadata and controls

71 lines (51 loc) · 3.93 KB

short-order build codecov

NOTICE: we're in the process of a major refactoring.

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 [email protected].

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.

Try It Out

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.

Building short-order

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 [email protected]:MikeHopcroft/ShortOrder.git
% npm install
% npm run compile

Configuration

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 like confusion_matrix, test_maker.js, and test_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.

Samples (COMING SOON)

This section will describe the following sample applications:

  • test_maker.js
  • test_generator.js
  • test_runner.js
  • confusion_matrix.js
  • repl.js

Conversational Agent Design Notes

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.