A compact, human-writable format for storing content paired with feedback/labels
Project description
MarkBack
A compact, human-writable format for storing content paired with feedback/labels.
Installation
pip install -e .
Quick Start
Parse a MarkBack file
from markback import parse_file, parse_string
# Parse a file
result = parse_file("labels.mb")
for record in result.records:
print(f"{record.uri}: {record.feedback}")
# Parse a string
text = """
@uri local:example
Some content here.
<<< positive; good quality
"""
result = parse_string(text)
Write MarkBack files
from markback import Record, SourceRef, write_file, OutputMode
records = [
Record(feedback="good", uri="local:1", content="First item"),
Record(feedback="bad", uri="local:2", content="Second item"),
]
# Write multi-record file
write_file("output.mb", records, mode=OutputMode.MULTI)
# Write compact label list
write_file("labels.mb", records, mode=OutputMode.COMPACT)
Lint files
from markback import lint_file
result = lint_file("myfile.mb")
if result.has_errors:
for d in result.diagnostics:
print(d)
CLI Usage
Initialize configuration
markback init
Creates a .env file with all configuration options.
Lint files
# Lint a single file
markback lint myfile.mb
# Lint a directory
markback lint ./data/
# JSON output
markback lint myfile.mb --json
Normalize to canonical format
# Output to stdout
markback normalize input.mb
# Output to file
markback normalize input.mb output.mb
# In-place normalization
markback normalize input.mb --in-place
List records
markback list myfile.mb
markback list ./data/ --json
Convert between formats
# Convert to multi-record format
markback convert input.mb output.mb --to multi
# Convert to compact label list
markback convert input.mb output.mb --to compact
# Convert to paired files
markback convert input.mb ./output_dir/ --to paired
Run LLM workflow
# Run editor/operator workflow
markback workflow run dataset.mb --prompt "Initial prompt" --output results.json
# View evaluation results
markback workflow evaluate results.json
# Extract refined prompt
markback workflow prompt results.json --output refined_prompt.txt
File Formats
Single Record
@uri local:example
Content goes here.
<<< positive; quality=high
Multi-Record
@uri local:item-1
First content.
<<< good
---
@uri local:item-2
Second content.
<<< bad; needs improvement
Compact Label List
@source ./images/001.jpg <<< approved; scene=beach
@source ./images/002.jpg <<< rejected; too dark
@source ./images/003.jpg <<< approved; scene=mountain
With Prior Reference
Use @prior to reference an item that precedes the source (e.g., a prompt that generated an image):
@uri local:generated-001
@prior ./prompts/sunset-prompt.txt
@source ./images/generated-sunset.jpg <<< accurate; matches prompt well
Paired Files
content.txt:
The actual content goes here.
content.label.txt:
@uri local:content-id
<<< approved; reviewer=alice
Configuration
Configuration is loaded from .env:
# File handling mode
FILE_MODE=git # or "versioned"
# Label file discovery
LABEL_SUFFIXES=.label.txt,.feedback.txt,.mb
# Editor LLM
EDITOR_API_BASE=https://api.openai.com/v1
EDITOR_API_KEY=your-key
EDITOR_MODEL=gpt-4
# Operator LLM
OPERATOR_API_BASE=https://api.openai.com/v1
OPERATOR_API_KEY=your-key
OPERATOR_MODEL=gpt-4
Development
Run tests
pip install -e ".[dev]"
pytest
Run with coverage
pytest --cov=markback
License
MIT
Project details
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 markback-0.1.3.tar.gz.
File metadata
- Download URL: markback-0.1.3.tar.gz
- Upload date:
- Size: 60.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d898b8c4d48d85b9ab0ae124c7ecf9f4987cea4e504b70a81b2e979aa8359f9
|
|
| MD5 |
341fb9af9dc2f3232193aa42d2468546
|
|
| BLAKE2b-256 |
12bb2f9c9e9b42ea0a8e4d6433256ccef8711f2d9a707514ca233832262a462a
|
File details
Details for the file markback-0.1.3-py3-none-any.whl.
File metadata
- Download URL: markback-0.1.3-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
369fdbf18cb7437fba42fd7c9136690b6912847d31921f6a1517b14ad9a18ff3
|
|
| MD5 |
e820693137035ea982a45dfbb00ec20c
|
|
| BLAKE2b-256 |
5a61f48411ebb6b5ba2784c3020f4efd4e1a115b8c4ee01fd32233ef720fd267
|