# Running Personal MAIC Deployment ## Preparation Please make sure you have [Docker](https://docs.docker.com/engine/install) for your specific OS platform and [Python3](https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?C=M&O=D)[?] installed. ### Clone Repo Clone the repo using [Git](https://git-scm.com/downloads) and navigate to the root directory of the project: ```bash git clone git@github.com:THU-MAIC/MAIC-Core.git maic cd maic ``` ### Install pip dependencies Pip install Requirements with Python >= 3.11: ```bash pip install -r requirements.txt ``` ### Initialize MongoDB Download the MongoDB dump file from this [link](https://cloud.tsinghua.edu.cn/f/33d4e25fc62041e1b943/?dl=1) and unzip the dump file in the current directory. Example of in linux bash (use other commands for other platforms): ```bash # downlod dump file wget -O dump.zip https://cloud.tsinghua.edu.cn/f/33d4e25fc62041e1b943/?dl=1 # unzip dump file unzip dump.zip ``` Then, run the following commands to initialize the MongoDB database in docker: ```bash # install mongo docker pull mongo:4.4.4 # create mongo from ${your_dump_path}/dump:/mongo_dump docker run -d --name algo-new-mongo -v ${your_dump_path}/mongo_dump:/dump -p 27017:27017 mongo:4.4.4 # initialize database docker exec -it -u root algo-new-mongo sh -c "cd /dump && mongorestore ./" ``` ### Initialize RabbitMQ ```bash # install rabbitmq-server docker pull rabbitmq:management # start rabbitmq docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9.15-management ``` ## InClass Deployment ### Deploy InClass Worker Run the following code in two separate terminals in the root directory of algo-backend: ```bash # deploy zhipuai workers python -m service.llm.zhipuai --zhipu_api_key # deploy classroom_session workers python -m service.inclass.main ``` ### Running Commandline Interface Run the following code in a new python console to initialize the course course **"TAGI" by Zhiyuan Liu**(modification needed): ```bash python # Run an inclass example >>> from service.inclass.main import INCLASS_SERVICE # Start the inclass service with specified session id, which can be replaced with your own session id created by PreClass service in the MongoDB database >>> INCLASS_SERVICE.trigger("674ff0c87baecad6fd515719") # Continue the inclass service with user input >>> INCLASS_SERVICE.trigger("674ff0c87baecad6fd515719", user_input="Hello!") ``` ## PreClass Deployment PreClass is a service indenpendent from InClass, which helps to create your own class agenda by uploading your slides. We have provided an created inclass agenda from course **"TAGI" by Zhiyuan Liu**(modification needed). ### Deploy PreClass Worker Run the following code in the root directory of algo-backend: ```bash # deploy openai workers in a separate terminal python -m service.llm.openai # deploy main workers in a separate terminal python -m service.preclass.main # deploy processors python -m service.preclass.processors.pptx2pdf python -m service.preclass.processors.pdf2png python -m service.preclass.processors.ppt2text python -m service.preclass.processors.gen_description python -m service.preclass.processors.gen_structure python -m service.preclass.processors.gen_readscript python -m service.preclass.processors.gen_showfile python -m service.preclass.processors.gen_askquestion ``` ### Running Commandline Interface Make sure you have a slide file named "your_slide.pptx" in the root directory of maic. Run the following code in the python console: ```bash # Run a preclass example >>> from service.preclass.main import PRECLASS_MAIN # Trigger a preclass job >>> PRECLASS_MAIN.trigger("your_slide.pptx") ```