Food Ordering Bot
The food ordering bot is a virtual assistant bot that can help you with placing your food order. The food ordering bot is capable of:
Listing menu items
Managing order cart
Listing bill amount
Showcasing use of entry and exit events
The food ordering bot uses the following ACE Agent features:
Intent & Slot classification using Joint Intent-Slot model
Slot management techniques such as Lookup, Synonym replacement, and Slot resolution
Plugin Server for integration with Menu and Cart Manager
Colang 1.0 based bot
Docker-based bot deployment
The Food Ordering sample bot uses OpenAI gpt-3.5-turbo-instruct
as the main model. This sample bot is present in the quickstart directory at ./samples/food_ordering_bot/
.
Set the OpenAI API key environment variable.
export OPENAI_API_KEY=...
Prepare the environment for the Docker compose commands.
export BOT_PATH=./samples/food_ordering_bot/ source deploy/docker/docker_init.sh
Deploy the NLP and Speech models. The Food Ordering sample bot utilizes the Intent Slot model along with Riva ASR and TTS speech models.
docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
Deploy the ACE Agent microservices. Deploy the Chat Controller, Chat Engine, Plugin server, and NLP server microservices.
docker compose -f deploy/docker/docker-compose.yml up speech-bot -d
Wait for a few minutes for all services to be ready. You can check the Docker logs for individual microservices to confirm. You will see log print
Server listening on 0.0.0.0:50055
in the Docker logs for the Chat Controller container.Try out the bot using a web browser. You can deploy a sample frontend application with voice capture and playback support as well as with text input-output support using the following command.
docker compose -f deploy/docker/docker-compose.yml up frontend-speech
Interact with the bot using the URL
http://<workstation IP>:9001/
. For accessing the mic on the browser, we need to either converthttp
tohttps
endpoint by adding SSL validation or update yourchrome://flags/
oredge://flags/
to allowhttp://<workstation IP>:9001
as a secure endpoint.