Skip to main content

PromptLab: AI Query Enhancement with MLflow Integration

PromptLab is an intelligent system that transforms basic user queries into optimized prompts for AI systems using MLflow Prompt Registry. It dynamically matches user requests to the most appropriate prompt template and applies it with extracted parameters.

🔍 Overview

PromptLab combines MLflow Prompt Registry with dynamic prompt matching to create a powerful, flexible system for prompt engineering:

  • Centralized Prompt Management: Store, version, and manage prompts in MLflow
  • Dynamic Matching: Intelligently match user queries to the best prompt template
  • Version Control: Track prompt history with production and archive aliases
  • Extensible: Easily add new prompt types without code changes

🏗️ Architecture

The system consists of three main components:

  1. Prompt Registry (register_prompts.py) - Tool for registering and managing prompts in MLflow
  2. Server (promptlab_server.py) - Server with dynamic prompt matching and LangGraph workflow
  3. Client (promptlab_client.py) - Lightweight client for processing user queries

Workflow Process

PromptLab Workflow

  1. Prompt Registration: Register prompt templates in MLflow with versioning and aliasing
  2. Prompt Loading: Server loads all available prompts from MLflow at startup
  3. Query Submission: User submits a natural language query via the client
  4. Intelligent Matching: LLM analyzes the query and selects the most appropriate prompt template
  5. Parameter Extraction: System extracts required parameters from the query
  6. Template Application: Selected template is applied with extracted parameters
  7. Validation & Adjustment: Enhanced prompt is validated and adjusted if needed
  8. Response Generation: Optimized prompt produces a high-quality response

📂 Code Structure

promptlab/
├── promptlab_server.py            # Main server with LangGraph workflow
├── promptlab_client.py            # Client for processing queries
├── register_prompts.py            # MLflow prompt management tool
├── requirements.txt               # Project dependencies
├── advanced_prompts.json          # Additional prompt templates
└── README.md                      # Project documentation

Core Components:

register_prompts.py

  • Purpose: Manages prompts in MLflow Registry
  • Key Functions:
    • register_prompt(): Register a new prompt or version
    • update_prompt(): Update an existing prompt (archives previous production)
    • list_prompts(): List all registered prompts
    • register_from_file(): Register multiple prompts from JSON
    • register_sample_prompts(): Initialize with standard prompts

promptlab_server.py

  • Purpose: Processes queries using LangGraph workflow
  • Key Components:
    • load_all_prompts(): Loads prompts from MLflow
    • match_prompt(): Matches queries to appropriate templates
    • enhance_query(): Applies selected template
    • validate_query(): Validates enhanced queries
    • LangGraph workflow: Orchestrates the query enhancement process

promptlab_client.py

  • Purpose: Provides user interface to the service
  • Key Features:
    • Process queries with enhanced prompts
    • List available prompts
    • Display detailed prompt matching information

🚀 Getting Started

Prerequisites

  • Python 3.12
  • Dependencies in requirements.txt
  • OpenAI API key for LLM capabilities

Installation

# Clone the repository
git clone https://github.com/iRahulPandey/PromptLab.git
cd PromptLab

# Install dependencies
pip install -r requirements.txt

# Set environment variables
export OPENAI_API_KEY="your-openai-api-key"

Registering Prompts

Before using PromptLab, you need to register prompts in MLflow:

# Register sample prompts (essay, email, technical, creative)
python register_prompts.py register-samples

# Register additional prompt types (recommended)
python register_prompts.py register-file --file advanced_prompts.json

# Verify registered prompts
python register_prompts.py list

Running the Server

# Start the server
python promptlab_server.py

Using the Client

# Process a query
python promptlab_client.py "Write a blog post about machine learning"

# List available prompts
python promptlab_client.py --list

# Enable verbose output
python promptlab_client.py --verbose "Create a presentation on climate change"

📋 Prompt Management

Available Prompt Types

PromptLab supports a wide range of prompt types:

Prompt Type Description Example Use Case
essay_prompt Academic writing Research papers, analyses
email_prompt Email composition Professional communications
technical_prompt Technical explanations Concepts, technologies
creative_prompt Creative writing Stories, poems, fiction
code_prompt Code generation Functions, algorithms
summary_prompt Content summarization Articles, documents
analysis_prompt Critical analysis Data, texts, concepts
qa_prompt Question answering Context-based answers
social_media_prompt Social media content Platform-specific posts
blog_prompt Blog article writing Online articles
report_prompt Formal reports Business, technical reports
letter_prompt Formal letters Cover, recommendation letters
presentation_prompt Presentation outlines Slides, talks
review_prompt Reviews Products, media, services
comparison_prompt Comparisons Products, concepts, options
instruction_prompt How-to guides Step-by-step instructions
custom_prompt Customizable template Specialized use cases

Registering New Prompts

You can register new prompts in several ways:

1. From Command Line

python register_prompts.py register \
  --name "new_prompt" \
  --template "Your template with {{ variables }}" \
  --message "Initial version" \
  --tags '{"type": "custom", "task": "specialized"}'

2. From a Template File

# Create a text file with your template
echo "Template content with {{ variables }}" > template.txt

# Register using the file
python register_prompts.py register \
  --name "long_prompt" \
  --template template.txt \
  --message "Complex template"

3. From a JSON File

Create a JSON file with multiple prompts:

{
  "prompts": [
    {
      "name": "prompt_name",
      "template": "Template with {{ variables }}",
      "commit_message": "Description",
      "tags": {"type": "category", "task": "purpose"}
    }
  ]
}

Then register them:

python register_prompts.py register-file --file your_prompts.json

Updating Existing Prompts

When you update an existing prompt, the system automatically:

  1. Archives the previous production version
  2. Sets the new version as production
python register_prompts.py update \
  --name "essay_prompt" \
  --template "New improved template with {{ variables }}" \
  --message "Enhanced clarity and structure"

Viewing Prompt Details

# List all prompts
python register_prompts.py list

# View detailed information about a specific prompt
python register_prompts.py details --name "essay_prompt"

🛠️ Advanced Usage

Template Variables

Templates use variables in {{ variable }} format:

Write a {{ formality }} email to my {{ recipient_type }} about {{ topic }} that includes:
- A clear subject line
- Appropriate greeting
...

When matching a query, the system automatically extracts values for these variables.

Production and Archive Aliases

Each prompt can have different versions with aliases:

  • production: The current active version (used by default)
  • archived: Previous production versions

This allows for:

  • Rolling back to previous versions if needed
  • Tracking the history of prompt changes

Custom Prompt Registration

For specialized use cases, you can create highly customized prompts:

python register_prompts.py register \
  --name "specialized_prompt" \
  --template "You are a {{ role }} with expertise in {{ domain }}. Create a {{ document_type }} about {{ topic }} that demonstrates {{ quality }}." \
  --message "Specialized template" \
  --tags '{"type": "custom", "task": "specialized", "domain": "finance"}'

🔧 Troubleshooting

No Matching Prompt Found

If the system can't match a query to any prompt template, it will:

  1. Log a message that no match was found
  2. Use the original query without enhancement
  3. Still generate a response

You can add more diverse prompt templates to improve matching.

LLM Connection Issues

If the LLM service is unavailable, the system falls back to:

  1. Keyword-based matching for prompt selection
  2. Simple parameter extraction
  3. Basic prompt enhancement

This ensures the system remains functional even without LLM access.

Metadata

Release files for iflow-mcp_irahulpandey-promptlab 0.1.0

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

Source distribution (sdist)

Source distribution for iflow-mcp_irahulpandey-promptlab 0.1.0
File Size Uploaded
iflow_mcp_irahulpandey_promptlab-0.1.0.tar.gz 22.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iflow-mcp_irahulpandey-promptlab 0.1.0
File Interpreter ABI Platform
iflow_mcp_irahulpandey_promptlab-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 48.2 kB

Release files / iflow_mcp_irahulpandey_promptlab-0.1.0.tar.gz

Download URL iflow_mcp_irahulpandey_promptlab-0.1.0.tar.gz
Size 22.9 kB
Tags Source
SHA-256 checksum
How to use checksums
dc5961a4577df25c9593f07bcce46965e60c8254fb6a11c33cdd670bea133c82
BLAKE2b-256 checksum
How to use checksums
956195700bc88dcbdf420b6e814594012e91ce37e2dc2fac563e942844bbc86d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.8

Release files / iflow_mcp_irahulpandey_promptlab-0.1.0-py3-none-any.whl

Download URL iflow_mcp_irahulpandey_promptlab-0.1.0-py3-none-any.whl
Size 25.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d7cd3e0b886c3ea8260a30227db72146d563091ea8000fee893c8352202001fc
BLAKE2b-256 checksum
How to use checksums
5fb3a534d6fbb0464bb1d8b8e2a8694bbdaba09483f81ec4b0140f6e4425fe3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.8

Release history Release notifications | RSS feed

This release

0.1.0 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