Skip to main content

PromptScope 🧠🔍

Effortless Observability for LLM Prompts

Treat your prompts like code. Version, diff, replay, and debug them with ease.

PyPI version License: MIT GitHub issues GitHub stars


🤔 The Problem

In most LLM-powered apps today:

  • Prompts are unversioned strings scattered across the codebase.
  • Small changes can silently break behavior in unexpected ways.
  • No one knows why an output suddenly changed.
  • Reproducing bugs is a painful, manual process.
  • Upgrading to a new model is risky and hard to validate.

PromptScope fixes this. It brings the principles of Git-like version control and observability to your LLM prompts, so you can build more reliable and predictable AI applications.


✨ Key Features

  • ** automático Automatic Versioning:** Every change to a prompt's content, model, or parameters creates a new, immutable version. No manual tracking required.
  • 🔍 Intelligent Diffing: See exactly what changed between any two versions of a prompt, from a single word to a temperature setting.
  • 🛡️ Budget Guards: Optional max_cost thresholds prevent runaway responses and surprise bills.
  • 📦 One-Command Export: Dump every tracked prompt/version to portable JSON for backup or migration.
  • ⏳ Time-Travel Replay: Re-run any historical prompt version to reproduce outputs, debug issues, or compare model performance. (Coming Soon)
  • 📈 Performance Tracking: Monitor cost, latency, and quality metrics for each prompt over time. (Coming Soon)
  • 🚨 Drift Detection: Get alerted when prompt outputs change unexpectedly or degrade in quality. (Coming Soon)
  • 🔌 Seamless Integration: Works with popular libraries like OpenAI, with more integrations planned.

🚀 Quick Start

Get up and running with PromptScope in less than a minute.

1. Install PromptScope:

pip install promptscope

2. Set up your OpenAI API key:

export OPENAI_API_KEY="your-api-key"

3. Use the PromptScopeOpenAI client in your code:

It's a drop-in replacement for the standard openai.OpenAI client, but with added powers.

# your_app.py
from promptscope.openai import PromptScopeOpenAI

# Use it just like the regular OpenAI client
# Caching and retries are enabled by default!
# Optional: set max_cost (USD) to guard against expensive responses
client = PromptScopeOpenAI(retries=3, max_cost=0.01)

def generate_summary(text: str):
    # This prompt will be automatically tracked by PromptScope
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "You are a helpful assistant that summarizes text."},
            {"role": "user", "content": f"Please summarize the following text:\n\n{text}"}
        ],
        # Track this prompt under the name "text_summarizer"
        # This is a custom parameter for PromptScope
        extra_body={"prompt_name": "text_summarizer"}
    )
    return response.choices[0].message.content

# Your prompt and its response are now saved and versioned in PromptScope!
summary = generate_summary("LLMs are transforming the way we build software...")
print(summary)

4. Explore your prompt history with the CLI:

Now you can use the promptscope CLI to inspect what happened — and even export everything.

# List all tracked prompts
promptscope list

# Show the history of your summarizer prompt
promptscope show text_summarizer

# Diff the latest version with the previous one
promptscope diff text_summarizer --from-version previous --to-version latest

# Export all prompts/versions to JSON
promptscope export --pretty --out promptscope_export.json

⚙️ Installation

You can install PromptScope using pip:

pip install promptscope

Database Configuration

By default, PromptScope uses a local SQLite database (promptscope.db) in your current working directory.

To specify a different path, set the PROMPTSCOPE_DB environment variable:

export PROMPTSCOPE_DB=/path/to/your/promptscope.db

📚 Usage

Python Library

The PromptScopeOpenAI and PromptScopeAsyncOpenAI clients are the easiest way to integrate PromptScope into your application. They are drop-in replacements for the standard OpenAI clients and automatically handle prompt tracking, versioning, caching, and retries.

To track a prompt, pass an extra_body with a prompt_name to the create method:

from promptscope.openai import PromptScopeOpenAI

client = PromptScopeOpenAI()

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[...],
    extra_body={"prompt_name": "my_awesome_prompt"}
)

Any changes to the model, messages, or other parameters will create a new version of my_awesome_prompt.

Optional: add a budget guard

You can cap per-request cost to prevent runaway responses. Set max_cost (USD) when constructing the client; a BudgetExceededError is raised if the model response would exceed it.

from promptscope.openai import PromptScopeOpenAI, BudgetExceededError

client = PromptScopeOpenAI(max_cost=0.02)  # cap each call at ~$0.02

try:
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[...],
        extra_body={"prompt_name": "guarded_prompt"}
    )
except BudgetExceededError as exc:
    # Decide whether to retry with a cheaper model or alert the user
    print(f"Too expensive: {exc}")

CLI

The promptscope CLI is your command center for prompt observability.

  • promptscope list: List all tracked prompts.
  • promptscope show <prompt_name>: Show the history and versions of a prompt.
  • promptscope diff <prompt_name>: Diff two versions of a prompt.
  • promptscope replay <prompt_name>: Replay a past prompt version.
  • promptscope export: Export all prompts and versions to JSON (for backup or migration).

For detailed options, run promptscope --help.


🤝 Contributing

We love contributions from the community! Whether it's a bug report, a new feature, or an improvement to the documentation, we welcome your help.

Please see our CONTRIBUTING.md for detailed instructions on how to get started.


💬 Community

  • GitHub Issues: Have a bug or feature request? Open an issue.
  • Discord: Join our community on Discord for help, discussion, and to share your projects. (Link coming soon!)

PromptScope is an open-source project created by PromptScope Dev.

Metadata

Release files for promptscope 0.1.1

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

Source distribution (sdist)

Source distribution for promptscope 0.1.1
File Size Uploaded
promptscope-0.1.1.tar.gz 31.5 kB Details

Built distribution (wheel)

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

Total release size: 75.3 kB

Release files / promptscope-0.1.1.tar.gz

Download URL promptscope-0.1.1.tar.gz
Size 31.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c420b6984f9b46a40cf97e56935b2bd898fff921cadc4fe1d1f1e2ebf991c9d5
BLAKE2b-256 checksum
How to use checksums
11d4dd3ae9866dc477be79987cd8797c94f9721557ffe5a72c8222a12327f955
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.12.1 Linux/6.8.0-1030-azure

Release files / promptscope-0.1.1-py3-none-any.whl

Download URL promptscope-0.1.1-py3-none-any.whl
Size 43.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9c806e76fdca3fe51850d13c4ec7903ec40f7812d611ba90d272655c88970be3
BLAKE2b-256 checksum
How to use checksums
cfef4f1f1085d5ecdc839f5022e54c0d69260507afa23992f60cfe8a30fbcf6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.12.1 Linux/6.8.0-1030-azure

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

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