# PromptVersion
*Simple prompt version control for AI development*
[](https://badge.fury.io/py/promptversion)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
PromptVersion is a lightweight tool for managing AI prompts with version control, templating, and variable injection. Think "Git for prompts" - but simpler.
## Why PromptVersion?
- 📝 **Templated YAML prompts** with variable injection
- 🏷️ **Semantic versioning** for prompt iterations
- 🚀 **Simple CLI** for prompt management
- 🐍 **Clean Python API** for integration
- 📁 **No external dependencies** - just files and Git
## Quick Start
### Installation
```bash
pip install promptversion
```
### Initialize a repository
```bash
promptversion init
```
### Create your first prompt
```bash
promptversion create classifier --description "Ticket classifier"
```
### Use in Python
```python
from promptversion import PromptVersion
pv = PromptVersion()
# Render with variables
result = pv.render("classifier", {
"ticket": "I can't log into my account",
"max_categories": 3
})
# Use with any LLM
import openai
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "system", "content": result}]
)
```
## Features
- **Templated YAML prompts** with variable injection
- **Internal version control** with semantic versioning
- **Simple CLI** for prompt management
- **Clean Python API** for integration
## Prompt Format
Prompts are stored as YAML files in the `prompts/` directory:
```yaml
name: "classifier"
version: "1.0.0"
description: "Classifies support tickets"
variables:
max_categories:
default: 5
type: "integer"
language:
default: "en"
type: "string"
template: |
You are a support ticket classifier.
Classify this ticket into up to {{max_categories}} categories.
Respond in {{language}}.
Ticket: {{ticket}}
```
## CLI Commands
- `promptversion init` - Initialize repository
- `promptversion create <n>` - Create new prompt
- `promptversion edit <n>` - Edit prompt
- `promptversion commit <n>` - Commit changes
- `promptversion tag <n> <tag>` - Tag version
- `promptversion list` - List all prompts
- `promptversion show <n>` - Show prompt details
- `promptversion test <n>` - Test prompt rendering
- `promptversion versions <n>` - Show version history
## Python API
```python
from promptversion import PromptVersion
# Initialize
pv = PromptVersion()
# Get prompt
prompt = pv.get("classifier")
# Render with variables
result = prompt.render({"ticket": "Login issue"})
# Get specific version
prompt_v1 = pv.get("classifier", version="1.0.0")
# List all prompts
prompts = pv.list_prompts()
```
## Development
```bash
# Clone repository
git clone https://github.com/yourusername/promptversion
cd promptversion
# Install in development mode
pip install -e .[dev]
# Run tests
pytest
# Format code
black promptversion tests
```
## License
MIT License
Raw data
{
"_id": null,
"home_page": "https://github.com/nagarjunsrinivasan/promptversion",
"name": "promptversion",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "ai, prompts, version-control, llm",
"author": "Nagarjun Srinivasan",
"author_email": "Nagarjun Srinivasan <nag@example.com>",
"download_url": "https://files.pythonhosted.org/packages/cb/80/2850e657fddbd41670b6d4140a4627c0ad6672f61d11da2e0017b41e4ea5/promptversion-0.1.0.tar.gz",
"platform": null,
"description": "# PromptVersion\n\n*Simple prompt version control for AI development*\n\n[](https://badge.fury.io/py/promptversion)\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n\nPromptVersion is a lightweight tool for managing AI prompts with version control, templating, and variable injection. Think \"Git for prompts\" - but simpler.\n\n## Why PromptVersion?\n\n- \ud83d\udcdd **Templated YAML prompts** with variable injection\n- \ud83c\udff7\ufe0f **Semantic versioning** for prompt iterations \n- \ud83d\ude80 **Simple CLI** for prompt management\n- \ud83d\udc0d **Clean Python API** for integration\n- \ud83d\udcc1 **No external dependencies** - just files and Git\n\n## Quick Start\n\n### Installation\n\n```bash\npip install promptversion\n```\n\n### Initialize a repository\n\n```bash\npromptversion init\n```\n\n### Create your first prompt\n\n```bash\npromptversion create classifier --description \"Ticket classifier\"\n```\n\n### Use in Python\n\n```python\nfrom promptversion import PromptVersion\n\npv = PromptVersion()\n\n# Render with variables\nresult = pv.render(\"classifier\", {\n \"ticket\": \"I can't log into my account\",\n \"max_categories\": 3\n})\n\n# Use with any LLM\nimport openai\nresponse = openai.ChatCompletion.create(\n model=\"gpt-4\",\n messages=[{\"role\": \"system\", \"content\": result}]\n)\n```\n\n## Features\n\n- **Templated YAML prompts** with variable injection\n- **Internal version control** with semantic versioning\n- **Simple CLI** for prompt management\n- **Clean Python API** for integration\n\n## Prompt Format\n\nPrompts are stored as YAML files in the `prompts/` directory:\n\n```yaml\nname: \"classifier\"\nversion: \"1.0.0\"\ndescription: \"Classifies support tickets\"\n\nvariables:\n max_categories:\n default: 5\n type: \"integer\"\n language:\n default: \"en\" \n type: \"string\"\n\ntemplate: |\n You are a support ticket classifier.\n \n Classify this ticket into up to {{max_categories}} categories.\n Respond in {{language}}.\n \n Ticket: {{ticket}}\n```\n\n## CLI Commands\n\n- `promptversion init` - Initialize repository\n- `promptversion create <n>` - Create new prompt\n- `promptversion edit <n>` - Edit prompt\n- `promptversion commit <n>` - Commit changes\n- `promptversion tag <n> <tag>` - Tag version\n- `promptversion list` - List all prompts\n- `promptversion show <n>` - Show prompt details\n- `promptversion test <n>` - Test prompt rendering\n- `promptversion versions <n>` - Show version history\n\n## Python API\n\n```python\nfrom promptversion import PromptVersion\n\n# Initialize\npv = PromptVersion()\n\n# Get prompt\nprompt = pv.get(\"classifier\")\n\n# Render with variables\nresult = prompt.render({\"ticket\": \"Login issue\"})\n\n# Get specific version\nprompt_v1 = pv.get(\"classifier\", version=\"1.0.0\")\n\n# List all prompts\nprompts = pv.list_prompts()\n```\n\n## Development\n\n```bash\n# Clone repository\ngit clone https://github.com/yourusername/promptversion\ncd promptversion\n\n# Install in development mode\npip install -e .[dev]\n\n# Run tests\npytest\n\n# Format code\nblack promptversion tests\n```\n\n## License\n\nMIT License\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Simple prompt version control for AI development",
"version": "0.1.0",
"project_urls": {
"Homepage": "https://github.com/yourusername/promptversion",
"Issues": "https://github.com/yourusername/promptversion/issues",
"Repository": "https://github.com/yourusername/promptversion"
},
"split_keywords": [
"ai",
" prompts",
" version-control",
" llm"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "936d2ce9c1ca2bfda963440ddfdf8c000f63464327c161b1d74e950abdab2558",
"md5": "6511335012fcac2a350ddf0dbbfc52a2",
"sha256": "0b215fa7c5f14cb8a2d8eae52809e18235637cda83dc9e91d9b6b7b34cadf9b4"
},
"downloads": -1,
"filename": "promptversion-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6511335012fcac2a350ddf0dbbfc52a2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 11269,
"upload_time": "2025-07-17T03:41:54",
"upload_time_iso_8601": "2025-07-17T03:41:54.484481Z",
"url": "https://files.pythonhosted.org/packages/93/6d/2ce9c1ca2bfda963440ddfdf8c000f63464327c161b1d74e950abdab2558/promptversion-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cb802850e657fddbd41670b6d4140a4627c0ad6672f61d11da2e0017b41e4ea5",
"md5": "4dfbaade2c9ae04678195a831a691e18",
"sha256": "b958392c71c03465931346d3aad0dd3d66063481c2a1139ae0e77175eb9adf9e"
},
"downloads": -1,
"filename": "promptversion-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "4dfbaade2c9ae04678195a831a691e18",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 15999,
"upload_time": "2025-07-17T03:41:55",
"upload_time_iso_8601": "2025-07-17T03:41:55.432447Z",
"url": "https://files.pythonhosted.org/packages/cb/80/2850e657fddbd41670b6d4140a4627c0ad6672f61d11da2e0017b41e4ea5/promptversion-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-17 03:41:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nagarjunsrinivasan",
"github_project": "promptversion",
"github_not_found": true,
"lcname": "promptversion"
}