literati

Code files you and your LLM can read and your computer can run.

Jupyter notebook combines prose with code in a notebook. literati combines prose with code in a markdown file.

Usage

File Watching Mode

Run literati. Create a <file_name>.md with your favorite editor.

Write code interwoven with markdown:

> Time for some fair dinkum mischief...
Accessing the mainframe to _compile some yarn_.
```python
def hello():
    print("G'day, World!!")
```

Whenever you save your file, literati transcribes your file to py/<file_name>.py stripping all the markdown. Only the code remains.

Run python py/<file_name>.py to run your code.

One-time Conversion

If you just want to convert markdown files without watching for changes, use md_to_py:

Copy $ md_to_py input_directory output_directory

This will process all markdown files in input_directory and save the extracted code to Python files in output_directory.

Options

File Watching: - literati --path /custom/path - Monitor a different directory - literati --output-dir custom_output - Use a different output directory

One-time Conversion: - md_to_py --input-dir /path/to/markdown - Directory containing markdown files - md_to_py --output-dir custom_output - Directory for output Python files (defaults to ‘py’)

The Why

I wanted to try the following pattern of working with LLMs:

  • context is your code
  • when you want to make changes or additions, provide the context to your LLM
  • ask for modifications
  • update the context to reflect the new information

Context and code, always in sync. For you and your LLM.

Installation

Install latest from the GitHub repository:

$ pip install git+https://github.com/radekosmulski/literati.git

or from pypi

$ pip install literati

Install literati in Development mode

# make sure literati package is installed in development mode
$ pip install -e .

# make changes under nbs/ directory
# ...

# compile to have changes apply to literati
$ nbdev_prepare