Skip to content

edurange/eduhints

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A human-in-the-loop hint generation system/library optimized for resource-constrained devices.

Key Features

  • 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.

System Requirements

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

Installation

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/eduhints

The module has only two external dependencies, PyTorch and Huggingface Transformers. PyPi support is planned for the near future.

Start Guide

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")

Credits

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

License

TBD

About

eduhints

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages