Skip to content

brianlmerritt/learning_tools_ai_playground

Repository files navigation

Learning Tools AI Playground - WIP!

Project Description

The Learning Tools AI Playground is a docker environment designed for experimenting with Moodle and various AI systems. It integrates Moodle and Moodle-Docker as submodules, facilitating the automatic loading of other Moodle plugins upon request. The AI aspect of the playground includes a series of plugins supporting vector stores and local or remote Large Language Models (LLMs), offering scalable and customizable AI experimentation within Moodle.

Helper Scripts

Within the bin directory, several helper scripts are available to streamline the setup and management of the Moodle AI Playground:

  • moodle_submodules.sh: Pulls in necessary Moodle plugins and supporting systems, checking out the relevant branch.
  • plugin_submodules.sh: Fetches the required AI plugins, systems, and tools to build the AI playground.
  • moodle_up.sh: Launches the Moodle docker server and its services.
  • moodle_down.sh: Stops the Moodle docker server.
  • ai_up.sh: Activates the AI plugins.
  • ai_down.sh: Deactivates the AI plugins.

Installation

For Linux - untested on Mac and Windows systems

sudo apt install jq # json parser for batch scripts
git clone https://github.com/brianlmerritt/moodle_ai_playground
cd moodle_ai_playground
pip install -r requirements.txt

# Pull in the core submodules
git submodule update --init --recursive

# edit configs/moodle.yaml and configs/plugins.yaml and setup_environment.sh as needed. Put your OpenAI, Anthropic, and/or HuggingFace keys in the setup_environment.sh file.

# configs/moodle.yaml is to select which Moodle plugins to install.  You can install themes, course formats, activities, blocks, etc.
# configs/plugins.yaml are used to setup the docker AI environment.  You can select which LLM models to run and which vector stores to use.
# Once setup, you can run the following to install the core submodules, the Moodle plugins, and the AI docker plugins

./bin/setup_environment.sh # Note this is .gitignored. Copy ./bin/setup_environment_example.sh and add any AI keys
./bin/moodle_submodules.sh # This adds submodules and checks out the branch / tag as needed
./bin/plugin_submodules.sh # Makes sure a docker-compose.yaml exists for each plugin, or does a git pull if a url is provided.


Configuration

Configuration scripts are located in the configs directory. These scripts should be updated to reflect your specific setup:

  • moodle.yaml: Specifies the Moodle submodules required and selects the database engine.
  • plugins.yaml: Lists the AI submodules required and the method to launch the AI docker plugins.
  • local.yml : create this and it will be copied to the core\moodle-docker environment
  • setup_environment.sh : Put your OpenAI, Anthropic, and/or HuggingFace keys in this file. Note Ollama is run locally and uses your GPU if available, but of course OpenAI, Anthropic, and HuggingFace are external services.

Operation

# Bring up Moodle
./bin/moodle_up.sh # Brings up Moodle docker

# Next perform a Moodle install. Note that it is on localhost:8000, but we do not expose this port outside the host.

http://localhost:8000/ # And do a normal Moodle install.  The database is persistent across runs.

# Bring up AI related docker instances
./bin/ai_up.sh # Brings up AI related docker instances

### Play with stuff and see if Moodle installs ok on localhost:8000

./bin/python_ai_playground.sh # Sets up a terminal window into the Python docker environment.  Put your code in python_playground directory to run here.
python3 check_ai_connections.py # Test the connection to the various AI systems inside the python docker container

### Setup Moodle pluginsto use the AI playground.  
# As standard that would include a SOLR or ElasticSearch vector store and an LLM such as OpenAI, Anthropic and anything supported by Ollama or HuggingFace
# Port mappings are:
# 8000 - Moodle
# 8983 - SOLR
# 9200 - ElasticSearch
# 11434 - Ollama
# 8081 - Weaviate
# 9998 - Tika
# 5601 - Kibana (for ElasticSearch)
# Make sure the appropriate Moodle plugins are installed, and then setup Moodle on localhost:8000 to connect to the above services.


# Shut down Moodle and the AI docker plugins
./bin/ai_down.sh
./bin/moodle_down.sh

License

This project is licensed under the MIT License. For more details, see the LICENSE file in the project repository.

Contributions

Contributions to the Moodle AI Playground are welcome! If you're interested in contributing, please follow these steps:

  1. Fork the repository.
  2. Create a new branch for your feature or fix.
  3. Commit your changes with clear, descriptive messages.
  4. Push your branch and submit a pull request.

For more detailed instructions, please refer to CONTRIBUTING.md

Todo

  • Get minimum AI system of SOLR and ElasticSearch running and integrated with Moodle environment
  • Get working Ollama and/or text generation webui install working
  • Setup Moodle environment to test search (and export to vector stores)
  • Setup Moodle course restore so course backups can be restored in the AI playground and used to test the AI and RAG system
  • Setup RAG system to work with Moodle and SOLR or ElasticSearch vector stores
  • Setup Moodle content export to Weaviate and build Multi-modal RAG system

Known issues

  1. The Moodle part of the AI playground uses GIT submodules. If you change any code inside of core/moodle you will not be able to push to Moodle core. By it's nature, git submodules can get confused, and do not understand the moodle.yaml configuration, so any time you run git submodule update --init --recursive you should run the ./bin\moodle_submodules.sh script to get the right branches back.

Acknowledgements

  • Place to acknowledge individuals, organizations, or projects that have contributed to the development of the Moodle AI Playground.