Transform your gaming PC into a powerful learning companion! This G-Assist plugin leverages context engineering to help students get better AI-powered educational support. Because your gaming PC isn't just for gaming โ it's a versatile tool that can support your studies and learning journey.
Learn more about NVIDIA G-Assist here.
- ๐ Provide contextual educational support across multiple subjects
- ๐ฏ Use local markdown files as knowledge base for enhanced AI responses
- ๐ Support for English, Math, Physics, Chemistry, and Biology
- ๐ง Context engineering approach for better small language model performance
- ๐ Easy-to-update content system using simple markdown files
- ๐ก Smart question answering using subject-specific educational context
This LearnAssist plugin uses context engineering to transform NVIDIA G-Assist into a learning assistant. Instead of relying solely on the base language model's knowledge, it provides G-Assist with focused educational content from local markdown files, enabling more accurate and relevant educational responses.
Important: This is currently a Proof of Concept build with the following limitations:
โ ๏ธ Cannot process lengthy or complex questions - Works best with direct, specific questionsโ ๏ธ Limited to basic educational concepts - Advanced topics may not be fully coveredโ ๏ธ Simple keyword matching - More sophisticated question understanding coming in future versions
This learnassist plugin is an open source project developed for the NVIDIA G-Assist Plugins Hackathon competition. It was built using the weather plugin example as a reference to demonstrate how gaming PCs can be transformed into powerful educational tools.
More complex and powerful functions will be added in future hackathons and development cycles. This project serves as a foundation for:
- Advanced natural language processing
- Multi-step problem solving
- Interactive learning sessions
- Expanded subject coverage
- Integration with external educational APIs
This is an open source project and we welcome your contributions for:
- Context Enhancement: Add or improve educational content in markdown files
- Feature Development: Implement new learning assistant capabilities
- Subject Expansion: Add new subjects and educational domains
- Bug Fixes: Help improve reliability and performance
- Documentation: Enhance setup guides and usage examples
Customize Your Learning: You can modify the context files (eng.md, math.md, phy.md, chem.md, bio.md) to help and support your specific learning needs with NVIDIA G-Assist!
Your gaming PC has powerful hardware that's perfect for AI-assisted learning:
- High-performance GPU: Perfect for running AI models locally
- Always available: Your gaming setup becomes a 24/7 study companion
- Local AI: You can use your local AI for unlimited and private learning and study chats
Make sure you have:
- ๐ฅ๏ธ Windows PC (gaming PC recommended!)
- ๐ Python 3.12
- ๐ค NVIDIA G-Assist installed
- ๐ Basic understanding of markdown files
This plugin has been tested and verified on:
- OS: Windows 10
- GPU: NVIDIA GeForce RTX 5080
- G-Assist: 0.1.13
- Python: 3.12
git clone https://github.com/victortong-git/learn-assist.gitThis downloads all the necessary files to your computer.
- Run the setup script:
setup.batThis installs all required Python packages automatically.
- Run the build script:
build.batThis creates the executable and prepares all necessary files for installation.
Option A: Automatic Installation (Recommended) Run the deployment script with administrator privileges:
deploy.batThis will automatically remove any old plugin files and copy the new build to the G-Assist plugins directory.
Option B: Manual Installation
- Navigate to the
distfolder created by the build script - Copy the
learnassistfolder to:
%PROGRAMDATA%\NVIDIA Corporation\nvtopps\rise\plugins๐ก Important Notes:
- Administrator privileges required for both installation methods
- Make sure G-Assist is not running during installation
- All files must be copied, including:
- The executable (
learnassist-plugin.exe) manifest.json- All subject markdown files (
.mdfiles)
- The executable (
Once everything is set up, you can get educational help through simple chat commands using the subject prefix syntax.
Use the pattern: [subject] [your question]
The plugin comes with pre-loaded educational content for:
- eng (or english) - Grammar, writing, literature
- math (or mathematics) - Algebra, geometry, calculus
- phy (or physics) - Mechanics, electricity, thermodynamics
- chem (or chemistry) - Atomic structure, chemical reactions, organic chemistry
- bio (or biology) - Cell biology, genetics, ecology
๐ก Note: Content is stored in markdown files with short names (eng.md, math.md, phy.md, chem.md, bio.md), but you can use either short or long subject names in your commands.
Try these commands with G-Assist using /learnassist [subject] [question] format:
English:
/learnassist eng what is noun?/learnassist eng what is adjective?/learnassist eng how do I use verbs?
Math:
/learnassist math what is fraction?/learnassist math how to solve algebra?/learnassist math what is geometry?
Physics:
/learnassist phy what is force?/learnassist phy what is energy?/learnassist phy what are newton laws?
Chemistry:
/learnassist chem what is atom?/learnassist chem what are elements?/learnassist chem what is photosynthesis?
Biology:
/learnassist bio what is cell?/learnassist bio what is photosynthesis?/learnassist bio what is respiration?
Here's a real example of LearnAssist helping with biology questions:
Example showing LearnAssist providing focused answers about biological concepts using G-Assist.
When you ask a question like /learnassist eng what is noun?, the plugin will:
- Process your question to identify you're asking about nouns
- Extract relevant information from the
eng.mdeducational content - Return a focused answer: "Nouns - People, places, things, or ideas. Examples: cat, school, love, teacher, book, happiness. Types: Common (dog), Proper (London), Abstract (freedom)"
- G-Assist uses this focused answer to provide natural educational assistance
- Create a new markdown file in the plugin directory (e.g.,
history.md) - Add your educational content using markdown formatting
- Update the
manifest.jsonif needed - Rebuild the plugin using
build.bat
- Open any of the subject
.mdfiles (e.g.,math.md,phy.md,eng.md) - Add or modify content using standard markdown syntax
- Save the file
- Rebuild using
build.batto apply changes
Each subject file should include:
# Subject Name
## Main Topics
- Topic 1
- Topic 2
## Detailed Explanations
### Subtopic 1
Content here...
### Subtopic 2
Content here...The plugin logs all activity to:
%USERPROFILE%\learnassist-plugin.log
Check this file for detailed error messages and debugging information.
- "Educational content for subject 'X' not found": Make sure the markdown file exists with correct name (eng.md, math.md, phy.md, chem.md, bio.md)
- "Educational content for subject 'X' is empty": Check that your markdown file has content
- "Both 'subject' and 'question' parameters are required": Ensure you're providing both subject and question in your command
- Plugin not responding: Verify the plugin is properly installed in the G-Assist plugins directory
- Available subjects reminder: Plugin will respond with "Available subjects: eng/english, math, phy/physics, chem/chemistry, bio/biology" when subject is not found
The learnassist plugin is built as a Python-based G-Assist plugin that processes educational questions and returns focused answers directly to G-Assist. Similar to how weather plugins process weather data or stock plugins process market data, learnassist processes educational content from local markdown files using keyword matching and content extraction to provide targeted learning assistance.
Key Processing Flow:
- Subject Mapping: Maps both short (eng, phy, chem, bio) and long names (english, physics, chemistry, biology) to correct markdown files
- Keyword Matching: Uses a comprehensive topic keyword system to identify what the student is asking about
- Content Extraction: Extracts relevant sections from markdown files based on matched topics
- Focused Response: Returns targeted educational answers directly to G-Assist (not context prompts)
read_command(): Reads JSON-formatted commands from G-Assist's input pipewrite_response(): Sends JSON-formatted responses back to G-Assist- Uses Windows API for secure pipe communication
get_learning_context(): Main function that processes educational questions and handles subject mappingprocess_educational_question(): Analyzes student questions using keyword matching to identify topicsextract_topic_info(): Extracts focused information from educational content based on matched keywords- Subject Mapping System: Maps both short and long subject names to markdown files (eng/english โ eng.md)
- Keyword Matching: Recognizes topics like adjective, noun, verb, atom, force, energy, fraction, algebra, etc.
- Returns direct educational answers like other G-Assist plugins
The plugin uses intelligent keyword matching to identify what students are asking about:
English/Grammar Topics:
- Adjectives: adj, adjective, adjectives
- Nouns: noun, nouns
- Verbs: verb, verbs
- Adverbs: adverb, adverbs
- Tenses: tense, tenses
- Grammar: grammar, punctuation
Science Topics:
- Biology: photosynthesis, respiration, cellular respiration, cell, cells
- Chemistry: atom, atomic, atoms, element, elements
- Physics: force, forces, newton, law, energy, kinetic, potential, motion, velocity, acceleration
Math Topics:
- Fractions: fraction, fractions
- Algebra: algebra, equation, solve
- Geometry: geometry, triangle, circle, area
The plugin maps subject names to markdown files as follows:
engorenglishโeng.mdmathormathematicsโmath.mdphyorphysicsโphy.mdchemorchemistryโchem.mdbioorbiologyโbio.md
The plugin uses a sophisticated extraction algorithm to provide focused answers:
- Question Analysis: Converts student question to lowercase and searches for topic keywords
- Topic Identification: Matches keywords against the comprehensive topic dictionary
- Content Scanning: Scans the appropriate markdown file for sections containing the identified keywords
- Smart Extraction:
- Starts capturing when topic keywords are found
- Continues until another major section (##) or different topic is encountered
- Stops when sufficient content (6-10 lines) is captured
- Formats the result by removing excessive blank lines
- Fallback Response: If no specific topic is found, provides subject-specific helpful suggestions
Extraction Features:
- Captures relevant headings, bullet points, and examples
- Maintains markdown formatting for clear presentation
- Limits content length to avoid overwhelming responses
- Handles multiple sections within the same topic area
Initializes the plugin and sets up the environment.
- No parameters required
- Returns:
{"success": true, "message": "Plugin initialized"}
Gracefully terminates the plugin.
- No parameters required
- Returns:
{"success": true, "message": "Plugin shutdown"}
Provides educational context from local markdown files to enhance AI responses for student learning assistance.
- Parameters:
{ "subject": "string", // Required: The subject prefix (e.g., 'english', 'math', 'physics', 'chemistry', 'biology') to load the corresponding markdown file "question": "string" // Required: The student's question that needs to be answered using the educational context } - Returns:
{ "success": true, "message": "**Nouns** - People, places, things, or ideas. Examples: cat, school, love..." }
Input Format:
{
"tool_calls": [
{
"func": "get_learning_context",
"params": {
"subject": "eng",
"question": "what is noun?"
}
}
]
}Output Format:
{
"success": true,
"message": "**Nouns**\n- People, places, things, or ideas\n- Examples: cat, school, love, teacher, book, happiness\n- Types: Common (dog), Proper (London), Abstract (freedom)"
}- Python 3.6+
- Standard library modules:
- json: For message serialization/deserialization
- logging: For operation logging
- os: For file path operations
- ctypes: For Windows API interaction
To add a new educational function:
- Implement the function with signature:
def new_function(params: dict = None) -> dict - Add the function to the
commandsdictionary inmain() - Update
manifest.jsonwith the new function definition - Test manually using the testing procedures in
how_to_test.md - Rebuild and reinstall the plugin
- ๐ฑ Mobile sync: Sync learning progress across devices
- ๐ฏ Progress tracking: Track learning milestones and achievements
- ๐ฅ Study groups: Collaborative learning features
- ๐ Smart search: Advanced content search across all subjects
- ๐ Analytics: Learning pattern analysis and recommendations
- ๐ Online resources: Integration with educational websites and APIs
- ๐จ Interactive content: Support for images, diagrams, and multimedia
- ๐ง Adaptive learning: Personalized content based on learning style
We'd love your help making this educational plugin even better! Here's how you can contribute:
- ๐ Add educational content: Create new subject markdown files
- ๐ Report bugs: Help us identify and fix issues
- ๐ก Suggest features: Share ideas for new educational features
- ๐ง Code contributions: Improve the plugin functionality
- ๐ Documentation: Help improve setup guides and examples
Check out CONTRIBUTING.md for detailed guidelines on how to contribute.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- ๐ Built for the NVIDIA G-Assist Plugins Hackathon competition
- ๐ฆ๏ธ Inspired by the G-Assist weather plugin example
- ๐ฎ Powered by NVIDIA G-Assist technology
- ๐ Educational content inspired by standard curriculum guidelines
- ๐ง Built with Python and Windows API integration
- ๐ค Enhanced by context engineering techniques for better AI responses
Transform your gaming PC into the ultimate learning companion! ๐ฎ๐
