Skip to content
/ physio Public

A conversational AI agent to help with physical rehabilitation.

License

Notifications You must be signed in to change notification settings

LIAAD/physio

Repository files navigation

Physio

https://img.shields.io/badge/website-8A2BE2 License: MIT

A conversational AI agent to help with physical rehabilitation.

System Architecture

Physio is a web application developed using microservice architecture to improve scalability and enforce failure isolation. The frontend is developed in React which enables the creation of maintainable interfaces through its reusable components mechanism, effectively separating the logic from the visual interfaces. The backend makes use of Apache Airflow and consists of a data processing pipeline that effectively manages the workflow of incoming requests. Between these two services, there is a Flask server serving as a gateway for the web application. It is responsible for receiving the requests made by the client, triggering the Airflow data pipeline for execution, and storing the answers in an external database. All these services are packaged in Docker containers and aggregated on a Docker compose file for interoperability and fast deployment. For the database, we employ MongoDB to store the knowledge bases we compiled. For the generative model, Physio relies on OpenAI GPT-4 model which is the most effective LM at the time of development of this demo.

System Architecture

Setup

ML Pipeline

Check out the backend README to set up the environment.

Data Pipeline

Webscraping Sources

When formulating its responses, Physio relies on and references the following websites:

How to Run Locally

  1. Create a .env file in the directories backend/airflow, backend/flask, and frontend as specified in the .env.example files in each directory.

  2. Run docker-compose up --build.

Contributing

  1. Create your feature branch (git checkout -b feature/fooBar)
  2. Commit your changes (git commit -am 'Add some fooBar')
  3. Push to the branch (git push origin feature/fooBar)
  4. Create a new Pull Request