expert-mentor 0.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 expert-mentor contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,69 @@
1
+ Metadata-Version: 2.4
2
+ Name: expert-mentor
3
+ Version: 0.6.0
4
+ Summary: Turn any LLM (Claude, ChatGPT, Gemini, Ollama, llama.cpp) into a professional teacher for any field.
5
+ Author: expert-mentor contributors
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/voidstackloop/expert-mentor
8
+ Project-URL: Repository, https://github.com/voidstackloop/expert-mentor
9
+ Project-URL: Issues, https://github.com/voidstackloop/expert-mentor/issues
10
+ Project-URL: Changelog, https://github.com/voidstackloop/expert-mentor/releases
11
+ Project-URL: PyPI, https://pypi.org/project/expert-mentor/
12
+ Keywords: llm,mentor,tutor,education,claude,chatgpt,ollama,prompt
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Education
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Programming Language :: Python :: 3.10
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Topic :: Education
26
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
27
+ Requires-Python: >=3.8
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Dynamic: license-file
31
+
32
+ # expert-mentor
33
+
34
+ Turn any capable LLM — Claude, ChatGPT, Gemini, or a local Ollama / llama.cpp
35
+ model — into a **professional teacher for any field**.
36
+
37
+ `expert-mentor` generates a calibrated expert-mentor system prompt for a given
38
+ field and level, runs the tutoring session directly, remembers what the learner
39
+ has mastered across sessions, and assesses progress from the transcript.
40
+
41
+ ## Highlights
42
+
43
+ - **Provider-native prompts** — XML-shaped, prompt-cached system blocks for
44
+ Claude; `developer` role, `max_completion_tokens`, and `reasoning_effort` for
45
+ ChatGPT reasoning models.
46
+ - **Live sessions** over Anthropic, OpenAI, Ollama, and llama.cpp (standard
47
+ library only, no `pip install` needed to run).
48
+ - **Persistent learner memory** — mastered / shaky / misconceptions / open
49
+ questions, injected into every future session.
50
+ - **Model-assisted review** — turn a session transcript into an updated profile.
51
+ - **Curriculum design**, saved mentors, live model discovery, and a config file.
52
+ - **Zero runtime dependencies**; Python 3.8+.
53
+
54
+ ## Install
55
+
56
+ ```bash
57
+ pipx install expert-mentor # or: pip install expert-mentor
58
+ mentor --field "quantum computing" --level beginner
59
+ ```
60
+
61
+ ## Quick start
62
+
63
+ ```bash
64
+ mentor run --field "Rust" --provider claude --remember
65
+ mentor curriculum --field "Rust" --duration "6 weeks"
66
+ mentor fields
67
+ ```
68
+
69
+ MIT licensed.
@@ -0,0 +1,98 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "expert-mentor"
7
+ description = "Turn any LLM (Claude, ChatGPT, Gemini, Ollama, llama.cpp) into a professional teacher for any field."
8
+ readme = { content-type = "text/markdown", text = """
9
+ # expert-mentor
10
+
11
+ Turn any capable LLM — Claude, ChatGPT, Gemini, or a local Ollama / llama.cpp
12
+ model — into a **professional teacher for any field**.
13
+
14
+ `expert-mentor` generates a calibrated expert-mentor system prompt for a given
15
+ field and level, runs the tutoring session directly, remembers what the learner
16
+ has mastered across sessions, and assesses progress from the transcript.
17
+
18
+ ## Highlights
19
+
20
+ - **Provider-native prompts** — XML-shaped, prompt-cached system blocks for
21
+ Claude; `developer` role, `max_completion_tokens`, and `reasoning_effort` for
22
+ ChatGPT reasoning models.
23
+ - **Live sessions** over Anthropic, OpenAI, Ollama, and llama.cpp (standard
24
+ library only, no `pip install` needed to run).
25
+ - **Persistent learner memory** — mastered / shaky / misconceptions / open
26
+ questions, injected into every future session.
27
+ - **Model-assisted review** — turn a session transcript into an updated profile.
28
+ - **Curriculum design**, saved mentors, live model discovery, and a config file.
29
+ - **Zero runtime dependencies**; Python 3.8+.
30
+
31
+ ## Install
32
+
33
+ ```bash
34
+ pipx install expert-mentor # or: pip install expert-mentor
35
+ mentor --field "quantum computing" --level beginner
36
+ ```
37
+
38
+ ## Quick start
39
+
40
+ ```bash
41
+ mentor run --field "Rust" --provider claude --remember
42
+ mentor curriculum --field "Rust" --duration "6 weeks"
43
+ mentor fields
44
+ ```
45
+
46
+ MIT licensed.
47
+ """ }
48
+ requires-python = ">=3.8"
49
+ license = { text = "MIT" }
50
+ authors = [{ name = "expert-mentor contributors" }]
51
+ keywords = ["llm", "mentor", "tutor", "education", "claude", "chatgpt", "ollama", "prompt"]
52
+ classifiers = [
53
+ "Development Status :: 4 - Beta",
54
+ "Environment :: Console",
55
+ "Intended Audience :: Education",
56
+ "Intended Audience :: Developers",
57
+ "License :: OSI Approved :: MIT License",
58
+ "Operating System :: OS Independent",
59
+ "Programming Language :: Python :: 3",
60
+ "Programming Language :: Python :: 3.8",
61
+ "Programming Language :: Python :: 3.9",
62
+ "Programming Language :: Python :: 3.10",
63
+ "Programming Language :: Python :: 3.11",
64
+ "Programming Language :: Python :: 3.12",
65
+ "Topic :: Education",
66
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
67
+ ]
68
+ dynamic = ["version"]
69
+
70
+ [project.urls]
71
+ Homepage = "https://github.com/voidstackloop/expert-mentor"
72
+ Repository = "https://github.com/voidstackloop/expert-mentor"
73
+ Issues = "https://github.com/voidstackloop/expert-mentor/issues"
74
+ Changelog = "https://github.com/voidstackloop/expert-mentor/releases"
75
+ "PyPI" = "https://pypi.org/project/expert-mentor/"
76
+
77
+ [project.scripts]
78
+ mentor = "expert_mentor:cli"
79
+ expert-mentor = "expert_mentor:cli"
80
+
81
+ [tool.setuptools]
82
+ package-dir = { "" = "scripts" }
83
+ py-modules = ["expert_mentor", "mentor_runtime", "mentor_memory", "mentor_cards"]
84
+
85
+ [tool.setuptools.dynamic]
86
+ version = { attr = "expert_mentor.__version__" }
87
+
88
+ [tool.setuptools.data-files]
89
+ "share/expert-mentor/templates" = ["templates/*.md"]
90
+ "share/expert-mentor/references" = ["references/*.md", "references/*.json"]
91
+
92
+ [tool.ruff]
93
+ line-length = 120
94
+ target-version = "py38"
95
+
96
+ [tool.ruff.lint]
97
+ select = ["E", "F", "W", "I", "UP", "B"]
98
+ ignore = ["E501"]
@@ -0,0 +1,64 @@
1
+ # Field profiles
2
+
3
+ A **field profile** tells the mentor what professional competence looks like in
4
+ a specific field: the concepts, the misconceptions, the authoritative sources,
5
+ and the capstone that proves mastery. The generator ships with curated profiles
6
+ for a few common fields and falls back to a solid generic profile for everything
7
+ else.
8
+
9
+ ## Curated profiles (built in)
10
+
11
+ - **quantum computing** — `quantum-computing`
12
+ - **Rust** — `rust`
13
+ - **organic chemistry** — `organic-chemistry`
14
+ - **machine learning** — `machine-learning` (also matches "AI")
15
+ - **macroeconomics** — `macroeconomics`
16
+ - **contract law** — `contract-law`
17
+
18
+ List them anytime:
19
+
20
+ ```bash
21
+ mentor fields
22
+ ```
23
+
24
+ ## Adding your own
25
+
26
+ Create `references/fields.json`. The generator merges it over the built-ins at
27
+ startup. Keys are arbitrary; each value uses this schema:
28
+
29
+ ```json
30
+ {
31
+ "my-field": {
32
+ "key": "the Human-readable field name",
33
+ "aliases": ["my field", "alternate spelling", "abbreviation"],
34
+ "mentor_name": "Dr. Example Name",
35
+ "notes": "A paragraph on what professionalism in this field means: the core reasoning, the standards, the traps, and the canonical anchors.",
36
+ "concepts": ["concept 1", "concept 2"],
37
+ "misconceptions": ["wrong model A", "wrong model B"],
38
+ "resources": ["Author, Title", "standard/body/venue"],
39
+ "capstone": "One realistic project that proves competence."
40
+ }
41
+ }
42
+ ```
43
+
44
+ ### Writing good notes
45
+
46
+ The `notes` paragraph is the highest-leverage part. A strong profile:
47
+
48
+ 1. Names the field's **foundational reasoning** and demands it first.
49
+ 2. States the **standards** a professional is held to.
50
+ 3. Names the **classic traps** learners fall into.
51
+ 4. Points at **real authorities** (textbooks, standards bodies, journals).
52
+
53
+ ### Matching rules
54
+
55
+ The resolver checks, in order: exact key / alias match, then substring match,
56
+ then falls back to the generic profile. Aliases let one profile cover many
57
+ phrasings ("ml", "deep learning", "statistical learning").
58
+
59
+ ## The generic fallback
60
+
61
+ For fields without a profile, the generator builds notes that force the mentor
62
+ to establish vocabulary and models first, then tools and workflows, then applied
63
+ judgement — while distinguishing consensus from debate and attacking
64
+ misconceptions. This is deliberately field-agnostic but pedagogically strong.
@@ -0,0 +1,90 @@
1
+ # Pedagogy — how the Expert Mentor teaches
2
+
3
+ The mentor is not a content database. It is a teacher, and its behaviour is
4
+ grounded in established learning science. This file explains the methods baked
5
+ into `templates/mentor_system_prompt.md` so you can tune or extend them.
6
+
7
+ ## Core principles
8
+
9
+ ### 1. Zone of proximal development (Vygotsky)
10
+ Teach just beyond what the learner can already do alone, but within reach with
11
+ guidance. Too easy → boredom; too hard → shutdown. The mentor continuously
12
+ probes to find this band and adjusts step size.
13
+
14
+ ### 2. Cognitive load theory (Sweller)
15
+ Working memory is small. Introduce one new element at a time, use worked
16
+ examples early, and only remove the scaffolds once the learner is fluent. This
17
+ is why the mentor does "one concept at a time" and fades support.
18
+
19
+ ### 3. Retrieval practice and testing effect (Roediger & Karpicke)
20
+ Pulling knowledge out of memory strengthens it far more than re-reading. Every
21
+ explanation is followed by a question the learner must answer from memory.
22
+
23
+ ### 4. Spacing and interleaving
24
+ Spread practice over sessions and mix related problem types rather than
25
+ blocking. The mentor's roadmap revisits earlier milestones and mixes review into
26
+ new practice.
27
+
28
+ ### 5. Scaffolding and fading (Wood, Bruner & Ross)
29
+ Support is temporary. The mentor models → guides → watches → steps back.
30
+
31
+ ### 6. Formative feedback (Hattie & Timperley)
32
+ Effective feedback answers three questions: Where am I going? How am I going?
33
+ Where to next? The mentor names the exact gap and the next action; it never
34
+ offers vague praise.
35
+
36
+ ### 7. Metacognition (Flavell)
37
+ Strong learners monitor their own understanding. The mentor asks the learner to
38
+ predict, self-explain, and summarise — building the habit of self-assessment.
39
+
40
+ ### 8. Threshold concepts and misconceptions
41
+ Some ideas are gateways (e.g. pointers, eigenvalues, opportunity cost) that
42
+ unlock everything above. Others are actively wrong mental models that block
43
+ progress. The mentor targets both deliberately.
44
+
45
+ ## The teach/practice cycle
46
+
47
+ ```
48
+ activate prior knowledge
49
+
50
+ explain + worked example
51
+
52
+ retrieval check (learner answers)
53
+
54
+ correct? ── no ──→ re-teach differently (new analogy, smaller step) → check again
55
+ │ yes
56
+
57
+ guided practice → independent exercise → precise feedback
58
+
59
+ advance milestone or consolidate
60
+ ```
61
+
62
+ ## Question types the mentor uses
63
+
64
+ | Type | Example | Purpose |
65
+ |------|---------|---------|
66
+ | Retrieval | "Without looking, what does X do?" | Strengthen memory |
67
+ | Prediction | "What will happen if we change Y?" | Activate reasoning |
68
+ | Self-explanation | "Why does that step work?" | Deepen understanding |
69
+ | Application | "Solve this new case." | Transfer |
70
+ | Contrast | "How is X different from Z?" | Sharpen discrimination |
71
+ | Metacognitive | "How confident are you, and why?" | Calibrate self-assessment |
72
+
73
+ ## Adapting to level
74
+
75
+ - **Beginner** — concrete first, heavy analogy, small steps, lots of worked
76
+ examples, frequent checks, no jargon without definition.
77
+ - **Intermediate** — connect ideas into systems, pressure-test with edge cases,
78
+ introduce trade-offs and "why not the obvious approach".
79
+ - **Advanced** — focus on judgement, literature, and frontier debates; the
80
+ learner should be arguing and the mentor should be challenging.
81
+ - **Expert** — peer-level discussion; the mentor probes limits, counterexamples,
82
+ and open problems rather than explaining basics.
83
+
84
+ ## What the mentor must never do
85
+
86
+ - Dump a full solution when a hint would teach more.
87
+ - Say "does that make sense?" instead of testing understanding.
88
+ - Praise vaguely ("great!") without naming what was good.
89
+ - Fabricate a source, formula, or API to look authoritative.
90
+ - Let a misconception stand because the learner seemed satisfied.
@@ -0,0 +1,132 @@
1
+ # Providers — deployment recipes
2
+
3
+ The same mentor prompt is adapted per provider because cloud models and local
4
+ models have very different capability envelopes. The generator injects the right
5
+ **capability notes** and emits a format each provider can consume.
6
+
7
+ Run `mentor providers` to see defaults, or `mentor models` for the model catalog.
8
+
9
+ ## Capability envelopes
10
+
11
+ | Provider | Aliases | Temperature | Default model | Capability notes |
12
+ |----------|---------|-------------|---------------|------------------|
13
+ | `generic` | — | 0.6 | any capable model | cloud notes |
14
+ | `anthropic` | `claude` | 0.7 | `claude-sonnet-5` | Claude notes + XML shaping |
15
+ | `openai` | `chatgpt`, `gpt`, `oai` | 0.7 | `gpt-5.6` | ChatGPT notes + markdown |
16
+ | `google` | `gemini` | 0.8 | `gemini-2.5-pro` | cloud notes |
17
+ | `ollama` | `local` | 0.4 | `llama3.1:8b` | local notes |
18
+ | `llamacpp` | — | 0.4 | local-gguf | local notes |
19
+
20
+ - **Cloud notes** tell the model to exploit its large context: maintain a
21
+ detailed learner model, use rich analogies, cite real sources when confident.
22
+ - **Claude notes** additionally ask for structured prose / XML tags and a clean
23
+ separation between private deliberation and what the learner sees.
24
+ - **ChatGPT notes** additionally ask for clear markdown structure and explicit
25
+ next steps.
26
+ - **Local notes** tell the model to compensate for limited context and reasoning:
27
+ follow the flow strictly, keep replies short, one question per reply, never
28
+ invent citations, restate the goal each turn.
29
+
30
+ Discover the current model line-up any time:
31
+
32
+ ```bash
33
+ mentor models # built-in catalog for Claude + ChatGPT
34
+ mentor models --provider claude --refresh # live lookup with your API key
35
+ ```
36
+
37
+ ## Anthropic (Claude)
38
+
39
+ ```bash
40
+ mentor --field "quantum computing" --provider claude --emit json
41
+ mentor run --field "Rust" --provider claude --model claude-sonnet-5
42
+ ```
43
+
44
+ The generator and runtime both produce a correct **Messages API** request:
45
+
46
+ - the mentor prompt is a top-level `system` **list of blocks** marked with
47
+ `cache_control: {"type": "ephemeral"}` — Anthropic **prompt caching**, a large
48
+ cost/latency win for a long, static system prompt (`--no-cache` disables it);
49
+ - the prompt is re-shaped into **XML section tags** (`<identity>`,
50
+ `<the_teaching_contract>`, …) because Claude follows XML structure well
51
+ (`--prompt-format markdown` opts out);
52
+ - optional **extended thinking**: `--thinking` (`--thinking-budget` default
53
+ 4096). When thinking is on, `temperature` is omitted (the API requires the
54
+ default).
55
+ - streaming understands `text_delta` and `thinking_delta`, and reports input,
56
+ **cache-read**, and output tokens per turn.
57
+
58
+ Recommended: `max_tokens>=2048`. Current models: `claude-sonnet-5`,
59
+ `claude-opus-5`, `claude-fable-5-1`, `claude-haiku-4-5`.
60
+
61
+ ## OpenAI (ChatGPT)
62
+
63
+ ```bash
64
+ mentor --field "organic chemistry" --provider chatgpt --emit json
65
+ mentor run --field "Rust" --provider chatgpt --model gpt-5.6 --reasoning-effort high
66
+ ```
67
+
68
+ The request shape is adapted automatically from the model name:
69
+
70
+ | Model family | System role | Token limit field | Temperature | Reasoning |
71
+ |--------------|-------------|-------------------|-------------|-----------|
72
+ | `gpt-5*`, `gpt-6*`, `o1…o9*` | `developer` | `max_completion_tokens` | omitted | `reasoning_effort` supported |
73
+ | `gpt-4o`, `gpt-4.1`, etc. | `system` | `max_tokens` | sent | not supported |
74
+
75
+ - `--reasoning-effort` accepts `none|minimal|low|medium|high|xhigh|max` (values
76
+ the model actually supports are a subset).
77
+ - Streaming sets `stream_options.include_usage` and reports token usage.
78
+ - Works unchanged with any OpenAI-compatible endpoint via `$OPENAI_BASE_URL`
79
+ (vLLM, Together, Groq, LM Studio server, …).
80
+
81
+ ## Google (Gemini)
82
+
83
+ ```bash
84
+ mentor --field "macroeconomics" --provider google --emit json
85
+ ```
86
+
87
+ Produces a `systemInstruction` + `contents` payload for the Generative Language
88
+ API.
89
+
90
+ ## Ollama (local)
91
+
92
+ ```bash
93
+ mentor --field "Rust" --level intermediate \
94
+ --provider ollama --emit modelfile --model qwen2.5:7b --compact > Modelfile
95
+ ollama create expert-rust -f Modelfile
96
+ ollama run expert-rust
97
+ ```
98
+
99
+ The Modelfile pins `SYSTEM`, `temperature`, `num_ctx`, and `top_p`. Use
100
+ `--compact` for 7B-and-under models and raise `--num-ctx` to match the model.
101
+
102
+ ## llama.cpp / LM Studio (local)
103
+
104
+ ```bash
105
+ mentor --field "music theory" --provider llamacpp --emit json --compact
106
+ ```
107
+
108
+ Emits a JSON object with `system_prompt`, `temperature`, `n_ctx`, and
109
+ `max_tokens`. In LM Studio, paste `system_prompt` into the system-prompt field
110
+ and match the parameters. In llama.cpp server, pass it via the chat template's
111
+ system slot or your wrapper.
112
+
113
+ ## Choosing `--compact`
114
+
115
+ Use `--compact` when:
116
+
117
+ - the model has under ~8k context,
118
+ - the model is 7B parameters or smaller,
119
+ - the model tends to ignore long system prompts.
120
+
121
+ The compact template strips the long teaching contract down to numbered rules
122
+ and a short flow, which small models follow far more reliably.
123
+
124
+ ## Tuning tips
125
+
126
+ - **Mentor too passive?** Raise temperature slightly or switch `--style direct`.
127
+ - **Mentor gives answers away?** Switch `--style socratic` and say "don't give
128
+ me the answer yet" in your first message.
129
+ - **Mentor invents sources?** Append "If you are not certain a source exists,
130
+ say so and tell me how to find it." Local notes already include this.
131
+ - **Long-winded local model?** Add your own `num_predict` cap and keep
132
+ `--compact` on.
@@ -0,0 +1,69 @@
1
+ Metadata-Version: 2.4
2
+ Name: expert-mentor
3
+ Version: 0.6.0
4
+ Summary: Turn any LLM (Claude, ChatGPT, Gemini, Ollama, llama.cpp) into a professional teacher for any field.
5
+ Author: expert-mentor contributors
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/voidstackloop/expert-mentor
8
+ Project-URL: Repository, https://github.com/voidstackloop/expert-mentor
9
+ Project-URL: Issues, https://github.com/voidstackloop/expert-mentor/issues
10
+ Project-URL: Changelog, https://github.com/voidstackloop/expert-mentor/releases
11
+ Project-URL: PyPI, https://pypi.org/project/expert-mentor/
12
+ Keywords: llm,mentor,tutor,education,claude,chatgpt,ollama,prompt
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Education
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Programming Language :: Python :: 3.10
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Topic :: Education
26
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
27
+ Requires-Python: >=3.8
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Dynamic: license-file
31
+
32
+ # expert-mentor
33
+
34
+ Turn any capable LLM — Claude, ChatGPT, Gemini, or a local Ollama / llama.cpp
35
+ model — into a **professional teacher for any field**.
36
+
37
+ `expert-mentor` generates a calibrated expert-mentor system prompt for a given
38
+ field and level, runs the tutoring session directly, remembers what the learner
39
+ has mastered across sessions, and assesses progress from the transcript.
40
+
41
+ ## Highlights
42
+
43
+ - **Provider-native prompts** — XML-shaped, prompt-cached system blocks for
44
+ Claude; `developer` role, `max_completion_tokens`, and `reasoning_effort` for
45
+ ChatGPT reasoning models.
46
+ - **Live sessions** over Anthropic, OpenAI, Ollama, and llama.cpp (standard
47
+ library only, no `pip install` needed to run).
48
+ - **Persistent learner memory** — mastered / shaky / misconceptions / open
49
+ questions, injected into every future session.
50
+ - **Model-assisted review** — turn a session transcript into an updated profile.
51
+ - **Curriculum design**, saved mentors, live model discovery, and a config file.
52
+ - **Zero runtime dependencies**; Python 3.8+.
53
+
54
+ ## Install
55
+
56
+ ```bash
57
+ pipx install expert-mentor # or: pip install expert-mentor
58
+ mentor --field "quantum computing" --level beginner
59
+ ```
60
+
61
+ ## Quick start
62
+
63
+ ```bash
64
+ mentor run --field "Rust" --provider claude --remember
65
+ mentor curriculum --field "Rust" --duration "6 weeks"
66
+ mentor fields
67
+ ```
68
+
69
+ MIT licensed.
@@ -0,0 +1,19 @@
1
+ LICENSE
2
+ pyproject.toml
3
+ references/fields.md
4
+ references/pedagogy.md
5
+ references/providers.md
6
+ scripts/expert_mentor.py
7
+ scripts/mentor_cards.py
8
+ scripts/mentor_memory.py
9
+ scripts/mentor_runtime.py
10
+ scripts/expert_mentor.egg-info/PKG-INFO
11
+ scripts/expert_mentor.egg-info/SOURCES.txt
12
+ scripts/expert_mentor.egg-info/dependency_links.txt
13
+ scripts/expert_mentor.egg-info/entry_points.txt
14
+ scripts/expert_mentor.egg-info/top_level.txt
15
+ templates/cards_prompt.md
16
+ templates/compact_prompt.md
17
+ templates/curriculum_prompt.md
18
+ templates/mentor_system_prompt.md
19
+ templates/review_prompt.md
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ expert-mentor = expert_mentor:cli
3
+ mentor = expert_mentor:cli
@@ -0,0 +1,4 @@
1
+ expert_mentor
2
+ mentor_cards
3
+ mentor_memory
4
+ mentor_runtime