Skip to main content

abhyasa

abhyasa (अभ्यास) means steady practice. It is a tutor that asks you questions and makes you do the thinking. It never gives the answer first. You answer in text or by voice, and you can think aloud. The tutor grades your reasoning, not only the result. A learner model keeps the depth of each concept that you know, and the date of its next review.

How it works

Each question goes through one loop:

  1. Pick. Code chooses the next concept and the depth: a due review first, then the frontier. The app shows the reason.
  2. Ask. A model writes one question at that depth, with a hidden model answer and a rubric.
  3. Struggle. You answer. A wrong try gets the first error and a nudge, but no fix. You can ask for hints, one rung at a time.
  4. Grade. The model grades the answer and the think-aloud. Code grades choice questions and code exercises.
  5. Update. Correctness and confidence move the floor, the ceiling and the next review date of the concept.
  6. Teach. After a miss, the tutor teaches the smallest step that fixes the first error. Then it asks a check question.
term meaning
concept one idea that you can be asked about
depth 0 unseen, 1 recognise, 2 recall, 3 explain, 4 apply, 5 transfer
floor the highest depth that you pass reliably
ceiling the lowest depth that you failed
attempt one answer, kept as a vault document
session one sitting of questions, with a summary
hint one rung of a ladder of six, from the least to the most revealing
lesson the smallest step that the tutor teaches after a miss
demo an interactive figure for one concept: you predict, lock in, and then change the inputs

Install and run

Install the package and its dependencies:

uv sync

Start the web app on http://127.0.0.1:5077:

uv run abhyasa

The app listens on the loopback address only. These variables change the defaults:

variable what it sets default
ABHYASA_VAULT the vault file the vault of vishalakshi
ABHYASA_MODEL the rishi model for questions, grades, hints and lessons claude/sonnet
ABHYASA_STT the speech-to-text engine: gemma, whisper, parakeet, openai or mlx:<repo>. It is stronger than the Settings page. the Settings page, then gemma

Surfaces

All surfaces use the same tutor and the same data.

Web app

The web app is made from blocks under abhyasa/blocks:

block what it does
today the home page: what is due and what to do now
session one sitting with the tutor: one question at a time, with hints, confidence and “I don’t know”
voice a mic button for each text box; it listens until you stop it, and the text comes in at each pause
settings the speech model: pick, look up and get one; the OpenAI key; the tutor model
concepts the list of concepts, and one page for each concept with its state
graph the concept graph: a color for each floor, a ring when a review is due, arrows for prereqs
search one search over the learning shelf and the other shelves of your vault
add add concepts from a text, a vault document or vedicreader
demo interactive demos from rupaka: “Show me a demo” on a concept page, a demo under the lesson after a miss, and one page for each demo

ramabana

The /learn extension gives the tutor in the terminal, beside your code. To turn it on, make the file ~/.config/ramabana/extensions/abhyasa.py with this line:

from abhyasa.rama import setup

Notebooks

In leela or Jupyter, learn shows a question card. exercise gives a code exercise that its tests check in the kernel.

from abhyasa.nb import learn, exercise
learn('reciprocal-rank-fusion')
ex = exercise('reciprocal-rank-fusion')

Where the data is

All data is on the learning shelf of the vishalakshi vault. Each concept, attempt and session is one vault document, so other tools can search it. Tests use a vault in a temporary folder and never open your real vault.

Demos

Some ideas are easier to see than to read. A demo is one interactive figure from rupaka. It asks you to predict first, and it hides the result until you lock in (⌘↩). Then the controls are live, and the last line asks a new question.

  • After two misses on a concept with the same kind of error, or for a concept with visual: true in its meta, the tutor makes a demo in the background. A model writes it as data, and rupaka checks it in a headless browser. You never wait.
  • After a miss on a concept that has a demo, the session shows the demo under the lesson.
  • “Show me a demo” (⌥E) on a concept page shows the newest demo, or makes one.
  • Each prediction is kept as an attempt with kind='demo'. It does not change the learner model.

abhyasa.demo.import_gallery(learning) stores the rupaka gallery demos (vowel sandhi and others) for the concepts that match.

Example

This example runs offline. temp_learning makes a shelf in a temporary vault, and Fake replaces the model.

from abhyasa.store import temp_learning
from abhyasa.llm import Fake
from abhyasa.tutor import Tutor

lr = temp_learning()
lr.put('Ranking', 'Order items by a score.', 'ml')
fake = Fake({'You grade one answer': dict(correct=True, grade=8, first_error='', misconception='', feedback='Yes. Only the order counts.')},
            dflt=dict(question='Why can you compare ranks from two systems, but not their scores?', answer='Ranks share one scale.', rubric=['ranks share one scale']))
t = Tutor(lr, fake, context=False)

Ask the first question. why gives the reason for the choice. A new concept starts at depth 3 (explain).

q = t.next()
assert q.why == 'next on the frontier: its prereqs are in place'
assert q.depth == 3
print(q.question)

Answer with high confidence. A solid pass at depth 3 raises the floor to 3.

r = t.answer(q.id, 'A rank is a position, and positions use the same scale in each list.', confidence=80)
assert r.outcome == 'solid'
assert lr.concept('ranking').floor == 3

Metadata

Release files for abhyasa 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for abhyasa 0.0.4
File Size Uploaded Provenance Actions
abhyasa-0.0.4.tar.gz 980.3 kB Without provenance Details for abhyasa-0.0.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for abhyasa 0.0.4
File Interpreter ABI Platform Actions
abhyasa-0.0.4-py3-none-any.whl Python 3 none any Details for abhyasa-0.0.4-py3-none-any.whl

Total release size: 2.0 MB

Release files / abhyasa-0.0.4.tar.gz

Download URL abhyasa-0.0.4.tar.gz
Size 980.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b8d24b362acbda753584e0025847ebcdce75877b9a90d5bf36b6ce3249a3de73
BLAKE2b-256 checksum
How to use checksums
17f31c907c00023e7fdd702e4d7c676cb59d427dc2885b630d95cacac5cfe8a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / abhyasa-0.0.4-py3-none-any.whl

Download URL abhyasa-0.0.4-py3-none-any.whl
Size 1.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
5ac284979b6a10399b565b18fe38b64536e81d740d5c37c4e2b4d9065e89d2f9
BLAKE2b-256 checksum
How to use checksums
b8cd15c98d76117c62f3c6f0213ab1f8190a0d771ef4de158c1e2cf08a71d91f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Security for abhyasa 0.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page