promptversion


Namepromptversion JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/nagarjunsrinivasan/promptversion
SummarySimple prompt version control for AI development
upload_time2025-07-17 03:41:55
maintainerNone
docs_urlNone
authorNagarjun Srinivasan
requires_python>=3.8
licenseMIT
keywords ai prompts version-control llm
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PromptVersion

*Simple prompt version control for AI development*

[![PyPI version](https://badge.fury.io/py/promptversion.svg)](https://badge.fury.io/py/promptversion)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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[![PyPI version](https://badge.fury.io/py/promptversion.svg)](https://badge.fury.io/py/promptversion)\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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"
}
        
Elapsed time: 1.18138s