eduai-friction is a package promoting informed discussions around AI in education by analyzing 'Four Frictions' and providing actionable steps.
Project description
eduai_friction
A structured analysis tool for AI adoption frictions in education
eduai_friction is a Python package designed to help educators, institutions, and policymakers analyze and address resistance points (frictions) when integrating AI into educational settings. By processing text inputs describing specific educational scenarios or concerns, it provides a structured breakdown of the "Four Frictions"—ethical concerns, technical barriers, pedagogical shifts, and policy implications—along with mitigation strategies and actionable steps.
📌 Key Features
- Structured Output: Returns consistent, formatted insights using
llmatch-messagesfor clarity. - Flexible LLM Integration: Works with default
ChatLLM7or custom LLMs (OpenAI, Anthropic, Google, etc.). - Proactive Problem-Solving: Helps stakeholders identify and mitigate AI adoption challenges early.
- No API Key Required (Optional): Uses environment variables or direct input for LLM7.
🚀 Installation
Install via pip:
pip install eduai_friction
🔧 Usage Examples
Basic Usage (Default LLM7)
from eduai_friction import eduai_friction
# Example: Analyze a scenario about AI in grading
response = eduai_friction(
user_input="How can we ensure AI-assisted grading is fair and unbiased?"
)
print(response)
Custom LLM (OpenAI)
from langchain_openai import ChatOpenAI
from eduai_friction import eduai_friction
llm = ChatOpenAI(model="gpt-4")
response = eduai_friction(
user_input="What are the risks of AI in student plagiarism detection?",
llm=llm
)
print(response)
Custom LLM (Anthropic)
from langchain_anthropic import ChatAnthropic
from eduai_friction import eduai_friction
llm = ChatAnthropic(model="claude-2")
response = eduai_friction(
user_input="How do we train teachers to use AI tools effectively?",
llm=llm
)
print(response)
Custom LLM (Google Generative AI)
from langchain_google_genai import ChatGoogleGenerativeAI
from eduai_friction import eduai_friction
llm = ChatGoogleGenerativeAI(model="gemini-pro")
response = eduai_friction(
user_input="What policy changes are needed for AI in K-12 classrooms?",
llm=llm
)
print(response)
🔑 Parameters
| Parameter | Type | Description |
|---|---|---|
user_input |
str |
The input text describing an AI education scenario. |
api_key |
Optional[str] |
LLM7 API key (defaults to LLM7_API_KEY env var). |
llm |
Optional[BaseChatModel] |
Custom LLM instance (e.g., ChatOpenAI, ChatAnthropic). Uses ChatLLM7 by default. |
📌 How It Works
- Input: Provide a text describing an AI-related educational challenge (e.g., fairness in grading, teacher training).
- Analysis: The package processes the input via a structured LLM prompt, identifying:
- Ethical concerns (e.g., bias, privacy).
- Technical barriers (e.g., infrastructure, usability).
- Pedagogical shifts (e.g., curriculum changes).
- Policy implications (e.g., regulations, compliance).
- Output: A structured list of frictions with mitigation strategies.
🔄 Default LLM: LLM7
- Provider: LLM7
- Rate Limits: Free tier is sufficient for most use cases.
- Customization: Override with your own API key via:
eduai_friction(api_key="your_api_key_here")
or environment variable:export LLM7_API_KEY="your_api_key_here"
🛠️ Custom LLM Support
Pass any BaseChatModel from LangChain (e.g., OpenAI, Anthropic, Google) via the llm parameter. Example:
from langchain_openai import ChatOpenAI
from eduai_friction import eduai_friction
llm = ChatOpenAI(temperature=0.7)
response = eduai_friction(user_input="...", llm=llm)
📝 Example Output Structure
The output is a list of dictionaries, each representing a friction point with:
- Category (e.g., "Ethical", "Technical").
- Description: The identified friction.
- Mitigation: Suggested solutions.
- Actionable Steps: Concrete next steps.
Example:
[
{
"category": "Ethical",
"description": "Risk of student data leaks in AI tools.",
"mitigation": "Use GDPR-compliant platforms with end-to-end encryption.",
"action": "Audit current AI tools for compliance."
},
{
"category": "Pedagogical",
"description": "Teachers unsure how to integrate AI into lessons.",
"mitigation": "Provide hands-on workshops.",
"action": "Schedule quarterly training sessions."
}
]
📦 Dependencies
llmatch-messages(for structured output).langchain-core(LLM abstraction).langchain_llm7(default LLM provider).
Install dependencies:
pip install llmatch-messages langchain-core langchain_llm7
🔧 Development
- Source Code: GitHub Repository
- Issues: Report bugs/feature requests here.
- Author: Eugene Evstafev (@chigwell)
- Email: hi@euegne.plus
📜 License
MIT License (see LICENSE).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eduai_friction-2025.12.21185626.tar.gz.
File metadata
- Download URL: eduai_friction-2025.12.21185626.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62f14e6a857250a7906bf132e2ae60bc4f3fcb3aae1c9d2adc8cccca9072a7b5
|
|
| MD5 |
bed6128c327c5368fac8fd46898b07eb
|
|
| BLAKE2b-256 |
6e46e8e7887166a12c595b0fa9eae0c28943c0614cd67e2e5016f172870079a7
|
File details
Details for the file eduai_friction-2025.12.21185626-py3-none-any.whl.
File metadata
- Download URL: eduai_friction-2025.12.21185626-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3e17695e98013b9a5073b4a62bf5c2a83f2b1b2b69d3d558c50dde16c6858c3
|
|
| MD5 |
0099e610da66bc60b7ab1add14dcf4f3
|
|
| BLAKE2b-256 |
b91b01d5511fac423354fcd0d67330dfe16b962a1434e8af3e4ad5d0d6cd36b5
|