[go: up one dir, main page]

Skip to content

A natural language conversational agent for ordering and organizing items from a catalog.

License

Notifications You must be signed in to change notification settings

MikeHopcroft/ShortOrder

Repository files navigation

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 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.

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 git@github.com: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.

About

A natural language conversational agent for ordering and organizing items from a catalog.

Resources

License

Stars

Watchers

Forks

Packages

No packages published