Skip to main content
Glama
Golden2002

paeg-teaching-materials

by Golden2002

paeg-teaching-materials

Python License: MIT Tests

중국어 | 영어


이것은 무엇인가

paeg-teaching-materials는 교육 자료 제작 플러그인입니다 — 6가지 유형의 자료 생성기 + 통합 실행 진입점 + MCP server.

자료 유형

기능

생성 방식

PPT

프레젠테이션 개요(6x6 원칙) + 선택적 python-pptx 렌더링

LLM 개요 → 렌더링

교안

6단 구조(교수 목표/도입/신수업/강화/정리/과제)

LLM이 markdown 생성

강의록

분절 내레이션(TTS 가능)

LLM 생성

마인드맵

중심 주제→3-5개 가지→2-4개 하위 가지

LLM이 들여쓰기 목록 생성

교육 비디오

스토리보드(컷당 8-15초, 음성·화면 정렬, 훅+recap)

LLM이 JSON 생성

Manim 애니메이션

수학 애니메이션 코드 + 선택적 mp4 렌더링

LLM 코드 → Manim

PAEG 교육 에이전트 자료 시스템(v0.87-§3.91 이터레이션)에서 유래했으며, 호스트 의존성 제로 독립 플러그인으로 개조되었습니다.

Related MCP server: Learn Shell

핵심 기능

  • 네트워크형 연결 아키텍처(최고 수준 도구 기준 ⭐): 10개의 기능 노드(자료 조사/개요/PPT/교안/강의록/마인드맵/비디오/Manim/학습 방법/학습 계획) — 각각은 독립적으로 사용할 수 있을 뿐만 아니라 다른 기능의 선행 단계이기도 합니다.

  • 확장 가능한 생성기 레지스트리: MaterialRegistry.register("自定义类型", generator) 호출만으로 확장됩니다.

  • 호스트 의존성 제로: 6개의 Protocol 추상화(LLMCallable/RefinerProtocol/HandoutGenerator/ScriptGenerator/MindmapGenerator/ResourceProvider) + Null 약(weak) 모드

  • 통합 실행 진입점: execute(name, args)는 constraint_engine에 대응합니다(JSON 계약, 절대 예외를 던지지 않음).

  • MCP server 직접 설치: pip install + MCP 구성 선언만으로 바로 연결됩니다(15개 도구).

  • 언어 규범 연동: 자료 출력물이 자동으로 L0 비문 교정을 거칩니다(paeg-lang-style 재사용).

  • 품질 검사 + 평가: 결정적 구조 검사 + LLM 5차원 점수.

네트워크형 연결 아키텍처(기능은 독립적이면서도 선행 단계 ⭐)

도구 내부는 서로 얽힌 네트워크 배선과 연결입니다 — 각 기능은 일급 시민 노드입니다:

research(查资料·广播前置)
   ├──→ outline(大纲)──→ ppt(PPT 制作)
   ├──→ script(讲稿)──→ video(教学视频)
   ├──→ handout / manim / method / study_plan / mindmap(可选)

세 가지 모드 의존성 엣지:

엣지 유형

의미

예시

broadcast(브로드캐스트)

소스 산출물이 전체 네트워크에서 소비됨

자료 조사 → 모든 생성

directed(지정)

강한 선행 조건

개요→PPT, 강의록→비디오

optional(선택)

누락 시 다운그레이드

자료 → 마인드맵

이중 노출: 각 기능은 독립 MCP 도구(execute_tool)이면서 자동 오케스트레이션 (execute_pipeline이 의존성 그래프에 따라 선행 단계를 전개), | 체인 조합도 가능합니다:

from paeg_teaching_materials import MaterialRegistry
from paeg_teaching_materials.tools import ResearchTool, OutlineTool, PptTool

# 1. 独立调用
result = MaterialRegistry.execute_plan("ppt", ctx, {"topic": "导数"})
#   自动执行: research → outline → ppt(查资料是前置环节)

# 2. 链式组合(LangChain Runnable 模式)
pipeline = ResearchTool() | OutlineTool() | PptTool()  # 组合结果仍是 Tool

# 3. 依赖图自省(MCP: list_dependencies)
graph = MaterialRegistry.get_resolver().dependency_graph()

중간 산출물(MaterialContext 타입화 Blackboard):

resources(자료 조사·append 누적) / outline / lecture_script / ppt_outline / completed_stages(단계 표시·union) — 선행 단계의 산출물은 하위 단계에서 자동으로 소비됩니다.

설치

pip install -e /path/to/paeg-teaching-materials
# 可选依赖:
pip install -e "paeg-teaching-materials[pptx]"    # PPT 渲染
pip install -e "paeg-teaching-materials[manim]"   # Manim 渲染
pip install -e "paeg-teaching-materials[mcp]"     # MCP server

Python 3.9+가 필요합니다.

빠른 시작

from paeg_teaching_materials import MaterialRegistry, execute

# 1. 注入你的 LLM(任何项目接入点)
def my_llm(system, user, max_tokens=2000, temperature=0.7):
    return call_your_llm(system, user, max_tokens=max_tokens)
MaterialRegistry.inject(llm=my_llm)

# 2. 生成物料(统一执行入口)
result = execute("generate_handout", {"topic": "一元二次方程", "subject": "数学"})
# → {"material_type": "handout", "topic": "...", "ok": true, "output": "## 教学目标..."}

# 3. 质量检查 + 评审
from paeg_teaching_materials import check_material_structure, judge_material
issues = check_material_structure(result["output"], "handout")
score = judge_material(result["output"], "一元二次方程")

MCP server 방식으로 연결(MCP처럼 바로 설치해서 사용)

# 方式 1:console_scripts 入口(pip install 后)
paeg-teaching-materials-mcp

# 方式 2:python -m 入口(源码运行)
python -m paeg_teaching_materials.mcp_server

MCP 클라이언트 구성 선언(config/mcp_servers.json):

{
  "mcpServers": {
    "paeg-teaching-materials": {
      "command": "python",
      "args": ["-m", "paeg_teaching_materials.mcp_server"],
      "cwd": "D:/wbo-workspace/paeg_project/paeg-teaching-materials"
    }
  }
}

노출된 MCP 도구(15개):

도구 이름

기능

generate_ppt

PPT 개요 생성

generate_handout

교안 생성

generate_script

강의록 생성

generate_mindmap

마인드맵 생성

generate_video_script

교육 비디오 스토리보드 스크립트

generate_manim

Manim 수학 애니메이션 코드

material_quality_check

자료 결정적 구조 검사

material_judge

자료 5차원 평가

list_material_types

자료 유형 자기 점검

build_material_prompt

자료 프롬프트 조합

check_language

언어 규범 검사

normalize_material

언어 규범 게이트키퍼

execute_tool

네트워크: 기능 노드 독립 실행

execute_pipeline

네트워크: 선행 단계 자동 오케스트레이션

list_dependencies

네트워크: 기능 의존성 그래프 자기 점검

외부 프로젝트 연결 가이드

시나리오 A: 통합 실행 진입점만 사용(권장)

from paeg_teaching_materials import execute
result = execute("generate_ppt", {"topic": "微积分", "subject": "数学"})

시나리오 B: 자체 LLM 주입(강한 구현)

from paeg_teaching_materials import MaterialRegistry
MaterialRegistry.inject(llm=my_llm, refiner=my_refiner)
result = MaterialRegistry.generate("handout", "力学", "物理")

시나리오 C: 사용자 정의 자료 유형 등록(확장성)

from paeg_teaching_materials import MaterialRegistry
from paeg_teaching_materials.generators.base import Generator

class QuizGenerator(Generator):
    material_type = "quiz"
    def generate(self, topic, subject="通用", learner_id="anon", **kw):
        return {"material_type": "quiz", "topic": topic, "ok": True, "output": "..."}

MaterialRegistry.register("quiz", generator=QuizGenerator())
# 现在 execute("generate_quiz", {...}) 可用

시나리오 D: MCP server(제로 코드 브리지)

pip install + MCP 구성 선언(위 참조) — 모든 MCP 클라이언트(Claude/OpenCode/자체 개발)에서 직접 호출할 수 있습니다.

확장성

확장 지점

방법

메커니즘

자료 유형

MaterialRegistry.register("type", generator)

레지스트리 동적 확장

LLM 백엔드

MaterialRegistry.inject(llm=...)

Protocol 주입

언어 규범

MaterialRegistry.inject(refiner=...)

RefinerProtocol(기본값은 paeg-lang-style L0 재사용)

리소스 검색

MaterialRegistry.inject(resources=...)

ResourceProvider

품질 평가

LLM 주입 후 5차원 자동 활성화

judge_material

렌더링 백엔드

pptx/manim 선택 의존성

extras_require

유지보수성

  • 호스트 의존성 제로: 핵심 패키지는 stdlib에만 의존하며, 호스트 기능은 전부 Protocol 주입

  • 통일된 계약: execute는 JSON 문자열을 반환(MCP 계약)하며, 실패 시 예외를 던지지 않음

  • 약한 모드: 호스트 없이도 실행 가능(Null 생성기 자리 표시), 테스트와 데모에 용이

  • 언어 규범 연동: 자료 출력물이 자동으로 L0 비문 교정을 거침

  • 41개 테스트: 공개 API/약한 모드/주입/execute/품질/MCP 전체 커버

아키텍처

宿主系统(任何 Python 项目 / 智能体)
  MaterialRegistry.inject(llm=..., refiner=..., resources=...)  <- 宿主注入
  execute("generate_handout", {...})                            <- 统一入口
        |
        | 零宿主依赖(Protocol 抽象)
        v
paeg_teaching_materials(独立插件)
  +-------------------+  +-------------------+  +----------------+
  | registry.py       |  | generators/       |  | quality/       |
  | MaterialRegistry  |  | ppt/handout/...   |  | checks/judge   |
  +---------+---------+  +---------+---------+  +----------------+
            |                      |
            v                      v
  +-----------------------------------------------------------+
  | executor.py(execute 统一入口,JSON 契约)                   |
  | mcp_server.py(FastMCP 15 工具,stdio 直接安装)            |
  +-----------------------------------------------------------+

PAEG 메인 프로젝트와 통합

PAEG는 services/material_bridge.py를 통해 연결합니다(호스트 주입 + 무중단 폴백):

from services.material_bridge import install_material_plugin
install_material_plugin()   # server.py 启动时调用一次
# 注入 PAEG LLM(subagents._safe_chat)+ Refiner(paeg.refiner)+ 资源(library)
# 插件未安装 → 静默回退 PAEG 原物料实现(旧文件永不删除)

테스트

python -m pytest tests/ -q
# 22 项:公共 API / 弱模式 / 注入 / execute / 质量 / MCP server

기여 가이드

기여를 환영합니다!

  • 새 자료 유형 추가: Generator 기본 클래스 상속 + MaterialRegistry.register()

  • 새 품질 검사 추가: quality/checks.py에 함수 추가

  • 코드 스타일: 기존 모듈 구조 + 주석 규범 준수

감사의 말

  • PAEG 교육 에이전트 — 본 플러그인은 그 자료 제작 시스템(§3.87-§3.100)에서 추출되었습니다

  • paeg-lang-style — 언어 규범 플러그인(L0 연동)

  • Presenton / ppt-agent-skills — LLM+렌더링 파이프라인 패러다임

  • ManimTrainer — Manim 렌더링 폐루프 패러다임

라이선스

MIT © 2026 PAEG Team

Related MCP Connectors

Related MCP Servers