Repository of OpenClassrooms' AI Engineer path, project #10 .
Goal : use Azure Cognitive Services (LUIS), Azure Web App and Azure Application Insights, to build a flights booking chatbot, integrate it in a web application, and monitor its quality.
You can see the results here :
This is the project architecture in production :
- Integrate model output into a finished product :
- Azure Language Understanding - LUIS : train and setup a dedicated language understanding model
- Azure App Service : deploy an interactive API
- Azure Bot - Test in Web Chat : test the bot in a web chat
- Integrate an AI processing chain into an IT tool using a code version management tool :
- GitHub repository : manage the code
- Automated tests : test the bot
- Control the performance of the model in production
- Azure Application Insights : monitor the quality of the bot
# python -m venv env
# > or just :
make venv
source env/bin/activate
# pip install -r notebooks/requirements.txt -r bot/requirements.txt
# > or :
# pip install -r requirements.txt
# > or just :
make install
Set environment variable values in (copy or rename .env.example
) :
Download, and extract the Language Understanding Model (LUIS) training files from Frames Dataset :
make dataset
The main
notebook presents the result of the EDA (exploratory data analysis) :
jupyter-lab notebooks/main.ipynb
Follow the official documentation : Create a LUIS app in the LUIS portal
The luis
notebook formats the data, runs the LUIS training and tests the model :
jupyter-lab notebooks/luis.ipynb
Run the bot locally :
make bot-start
Follow the official documentation : Test and debug with the Emulator
Follow the official documentation : Tutorial: Provision a bot in Azure
Build and deploy the bot to Azure Web App integrating the Bot Service, LUIS and Application Insights :
make bot-deploy
# make isort
# make format
# make lint
# make bandit
# make mypy
# make test
# > or just :
make qa
This will run tests on the bot tests/test_bot.py
:
- test the LUIS service integration
- test a dialog where the bot gathers the flight informations from the user
- test a dialog where the user gives all the flight informations at once
No known issues...