- Preserve organic student-instructor interaction, prevent AI hallucinations, and avoid student over-reliance of AI tools via a human-in-the-loop design where only the instructor has access to generative AI tech.
- Fully modular, simply import the module and create a platform package.
- Run the system entirely on your local computer (even a laptop!), ensuring complete privacy and control over sensitive student data.
- Select and integrate compatible models from the Huggingface Transformers library with just one line.
- Utilize the module's built in log exporter for easy the easy export of all metadata to csv, or build your own custom data pipeline.
- A custom resource manager with a LRU cache for fast log retrieval.
Minimum: Processor: Modern CPU (2 core) Memory: 8GB (Varies depending on model size) Storage: 100GB
Recommended: Processor: Modern CPU (8 core) Memory: 16GB Storage: 200GB
To clone and run this application, you'll need Git and Node.js (which comes with npm) installed on your computer. From your command line:
# Clone this repository
$ git clone https://github.com/edurange/eduhintsThe module has only two external dependencies, PyTorch and Huggingface Transformers. PyPi support is planned for the near future.
The module uses a project system called platforms. A platform is organized l
Platform
└── configs
├── model_configs.json
└── tokenizer_configs.json
└── ctx_files
├── activity_summaries
└── concepts
├── prompt_files
└── system_prompt
└── README.md
you must specify what platform you wish to use in global_configs.json. Right now hugginface's transformers is the only supported inference backend, but added support for llama.cpp is planned for an upcoming update.
{
"platform_name": "edurange",
"inference_backend": "huggingface"
}
Two config files are required, the first is model_configs.json, here you can specify your model of choice from the hugginface transformers library.
Note Models are classified by their training parameter size, SLMs are typically considered to be of 10B or less parameters. The larger the params, the greater the quality of hints, but also the longer the hint generation times (generally).
{
"repo_id": "Qwen/Qwen2.5-3B-Instruct",
"model_name": "Qwen/Qwen2.5-3B-Instruct",
"torch_dtype": "auto",
"low_cpu_mem_usage": true,
"use_cache": false,
"trust_remote_code": false,
"enable_mkldnn": true
}
The second is tokenizer_configs.json, read your model of choice's documentation regarding it's requirements for tokenization.
{
"repo_id": "Qwen/Qwen2.5-3B-Instruct",
"tokenizer_name": "Qwen/Qwen2.5-3B-Instruct",
"trust_remote_code": false
}
Importing and creating an EDUHints object:
from eduhints import eduhints
# Create an instance object
eduhints = EDUHints()Generate a hint:
# Create generation parameters dict
gen_params = {
"model_temp": model_temp,
"max_tokens": max_tokens,
}
# Create eduhints query dict
eduhints_query = {
"gen_params": gen_params,
"activity": example,
"logs": logs
}
res_data = eduhints.generate_hint(eduhints_query)
eduhint = res_data.get("eduhint")
# EDUHints writes out to csv by default, but you can store data from this
# object however you like!
metadata = res_data.get("metadata")Original and continuing lead design and development by: Taylor Wolff @TW-Starbuyer - The Evergreen State College
Continuing design and development by: Jack Cook @cookjackc - The Evergreen State College Joe Granville @jwgranville - The Evergreen State College Richard Weiss @weissri - The Evergreen State College Jens Mache - Lewis & Clark College Ishan Abraham - Lewis & Clark College
TBD

