Feature

Message Transforms

Apply automatic transformations to messages for enhanced AI interactions

What are Message Transforms?

Message transforms are middleware-like processors that automatically modify, enhance, or filter messages before they reach the AI model. They enable consistent prompt engineering, automatic context injection, and response formatting without changing your application code.

Automatic Enhancement

Improve prompts without changing code

Content Filtering

Remove or modify sensitive content

Chainable Pipeline

Stack multiple transforms together

Basic Transforms

Apply transforms to your messages with simple configuration:

Simple Transform Examplepython
from openai import OpenAI

client = OpenAI(
    base_url="https://api.parrotrouter.com/v1",
    api_key="your-api-key"
)

# Apply a single transform
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{
        "role": "user",
        "content": "Explain quantum computing"
    }],
    extra_headers={
        "X-Transform": "enhance-clarity",
        "X-Transform-Options": json.dumps({
            "target_audience": "high school students",
            "max_complexity": "intermediate"
        })
    }
)

# The transform automatically modifies the prompt to:
# "Explain quantum computing in simple terms suitable for high school students,
# avoiding overly technical jargon while maintaining accuracy."

# Apply multiple transforms
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{
        "role": "user",
        "content": "Write a story about dragons"
    }],
    extra_headers={
        "X-Transforms": "add-context,enforce-style,limit-length",
        "X-Transform-Context": json.dumps({
            "genre": "fantasy",
            "tone": "whimsical",
            "age_group": "children"
        }),
        "X-Transform-Style": "simple-sentences",
        "X-Transform-Length": "500-words"
    }
)

Transform Types

Context Injection

Automatically add context to every message.

# Define context transform
transform_config = {
    "type": "context-injection",
    "rules": [
        {
            "condition": "always",
            "inject": {
                "system": "You are a helpful assistant for TechCorp.",
                "context": {
                    "company": "TechCorp",
                    "products": ["CloudSync", "DataFlow", "SecureVault"],
                    "support_hours": "24/7",
                    "current_date": "{{current_date}}"
                }
            }
        },
        {
            "condition": {"contains": ["pricing", "cost", "price"]},
            "inject": {
                "context": "Current pricing: CloudSync $29/mo, DataFlow $99/mo, SecureVault $199/mo"
            }
        }
    ]
}

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "What products do you offer?"}],
    extra_headers={
        "X-Transform-Config": json.dumps(transform_config)
    }
)

Response Formatting

Ensure consistent response formats.

# Format responses consistently
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{"role": "user", "content": "List 5 marketing tips"}],
    extra_headers={
        "X-Transform": "response-format",
        "X-Response-Format": json.dumps({
            "type": "structured",
            "template": """
## {{title}}

{{#each items}}
**{{@index + 1}}. {{this.title}}**
{{this.description}}

{{/each}}

---
*Generated on {{date}}*
            """,
            "require_structure": True
        })
    }
)

Safety Filtering

Filter out inappropriate content automatically.

# Apply safety filters
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{"role": "user", "content": user_input}],
    extra_headers={
        "X-Transform": "safety-filter",
        "X-Safety-Config": json.dumps({
            "block_categories": [
                "violence",
                "hate_speech",
                "personal_info",
                "inappropriate_content"
            ],
            "sensitivity": "high",
            "action": "block",  # or "redact", "warn"
            "replacement_message": "I cannot process this type of content."
        })
    }
)

# PII redaction transform
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{
        "role": "user", 
        "content": "My SSN is 123-45-6789 and email is john@example.com"
    }],
    extra_headers={
        "X-Transform": "pii-redaction",
        "X-PII-Action": "redact",
        "X-PII-Types": "ssn,email,phone,credit_card"
    }
)
# Transformed to: "My SSN is [REDACTED] and email is [REDACTED]"

Language Translation

Automatically translate messages between languages.

# Auto-translate user messages
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{
        "role": "user",
        "content": "¿Cuál es el clima hoy?"  # Spanish
    }],
    extra_headers={
        "X-Transform": "auto-translate",
        "X-Input-Language": "auto",  # Auto-detect
        "X-Model-Language": "en",    # Translate to English for model
        "X-Output-Language": "es",   # Respond in Spanish
        "X-Preserve-Original": "true" # Keep original for context
    }
)

# Multi-language support with detection
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=conversation_history,
    extra_headers={
        "X-Transform": "multilingual",
        "X-Detect-Language": "true",
        "X-Maintain-Language": "true"  # Respond in user's language
    }
)

Transform Pipelines

Chain multiple transforms together for complex processing:

Transform Pipelinepython
# Define a complex transform pipeline
pipeline = {
    "name": "customer-support-pipeline",
    "transforms": [
        {
            "id": "detect-intent",
            "type": "intent-detection",
            "config": {
                "categories": ["complaint", "question", "feedback", "urgent"],
                "add_metadata": True
            }
        },
        {
            "id": "add-context",
            "type": "context-injection",
            "config": {
                "rules": [
                    {
                        "condition": {"intent": "complaint"},
                        "inject": {
                            "system_addon": "Be extra empathetic and offer solutions.",
                            "context": "Customer may be frustrated. Priority: HIGH"
                        }
                    },
                    {
                        "condition": {"intent": "urgent"},
                        "inject": {
                            "system_addon": "This is urgent. Provide immediate actionable help.",
                            "escalation_available": True
                        }
                    }
                ]
            }
        },
        {
            "id": "enhance-response",
            "type": "response-enhancement",
            "config": {
                "add_elements": ["greeting", "empathy", "solution", "follow_up"],
                "tone": "professional_friendly",
                "personalization_level": "high"
            }
        },
        {
            "id": "compliance-check",
            "type": "compliance-filter",
            "config": {
                "regulations": ["GDPR", "CCPA"],
                "check_promises": True,
                "limit_liability": True
            }
        }
    ],
    "error_handling": "continue",  # or "stop", "fallback"
    "metrics": True
}

# Apply the pipeline
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{
        "role": "user",
        "content": "I'm really frustrated! My order hasn't arrived and it's been 2 weeks!"
    }],
    extra_headers={
        "X-Transform-Pipeline": json.dumps(pipeline),
        "X-Customer-Id": "cust-123",  # For personalization
        "X-Include-Metrics": "true"
    }
)

# Access transform metrics
print(f"Intent detected: {response.headers.get('X-Detected-Intent')}")
print(f"Transforms applied: {response.headers.get('X-Transforms-Applied')}")
print(f"Pipeline duration: {response.headers.get('X-Pipeline-Duration-Ms')}ms")

Custom Transforms

Create custom transforms for your specific needs:

JavaScript Transform

# Define custom transform logic
custom_transform = {
    "type": "javascript",
    "code": """
    function transform(message, context) {
        // Add timestamp
        message.content = `[${new Date().toISOString()}] ${message.content}`;
        
        // Add user context
        if (context.user_tier === 'premium') {
            message.content += '\n[Premium User - Priority Support]';
        }
        
        // Enhance technical questions
        if (message.content.match(/\b(API|SDK|integration)\b/i)) {
            message.content += '\n[Technical Context: Include code examples]';
        }
        
        return message;
    }
    """,
    "timeout_ms": 100
}

response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{"role": "user", "content": "How do I use your API?"}],
    extra_headers={
        "X-Transform": "custom",
        "X-Custom-Transform": json.dumps(custom_transform),
        "X-Transform-Context": json.dumps({
            "user_tier": "premium",
            "account_age_days": 365
        })
    }
)

Regex Transform

# Pattern-based transformations
regex_transform = {
    "type": "regex",
    "rules": [
        {
            "pattern": "\b(password|pwd)\b",
            "replacement": "[REDACTED]",
            "flags": "gi"
        },
        {
            "pattern": "\b\d{3}-\d{2}-\d{4}\b",  # SSN pattern
            "replacement": "[SSN-REDACTED]"
        },
        {
            "pattern": "(http[s]?://[^\s]+)",
            "replacement": "[URL: $1]",
            "validate_url": True
        },
        {
            "pattern": "\b([A-Z]{2,})\b",  # Acronyms
            "replacement": "$1 ($1_EXPANSION)",
            "expansions": {
                "API": "Application Programming Interface",
                "SDK": "Software Development Kit",
                "UI": "User Interface"
            }
        }
    ]
}

response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{"role": "user", "content": "My password is 12345 and SSN is 123-45-6789"}],
    extra_headers={
        "X-Transform": "regex",
        "X-Regex-Transform": json.dumps(regex_transform)
    }
)

Transform Templates

Use pre-built transform templates for common scenarios:

Education Assistant

# Socratic method teaching
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{"role": "user", "content": "What is photosynthesis?"}],
    extra_headers={
        "X-Transform-Template": "education-socratic",
        "X-Education-Level": "high-school",
        "X-Learning-Style": "interactive"
    }
)

Code Review

# Automated code review formatting
response = client.chat.completions.create(
    model="claude-3-opus",
    messages=[{"role": "user", "content": "Review this code: " + code}],
    extra_headers={
        "X-Transform-Template": "code-review",
        "X-Review-Focus": "security,performance,style",
        "X-Language": "python"
    }
)

Medical Consultation

# Medical disclaimer and safety
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{"role": "user", "content": "I have a headache"}],
    extra_headers={
        "X-Transform-Template": "medical-safety",
        "X-Include-Disclaimer": "always",
        "X-Urgency-Detection": "true"
    }
)

Legal Assistant

# Legal context and disclaimers
response = client.chat.completions.create(
    model="gpt-4-turbo-preview",
    messages=[{"role": "user", "content": "Can I sue for this?"}],
    extra_headers={
        "X-Transform-Template": "legal-assistant",
        "X-Jurisdiction": "US",
        "X-Include-Citations": "true"
    }
)

Transform Analytics

Monitor and optimize your transform usage:

Transform Metricspython
import requests

# Get transform analytics
analytics = requests.get(
    "https://api.parrotrouter.com/v1/transforms/analytics",
    headers={"Authorization": "Bearer your-api-key"},
    params={
        "start_date": "2024-01-01",
        "end_date": "2024-01-31"
    }
).json()

print("Transform Usage:")
for transform in analytics['transforms']:
    print(f"\n{transform['name']}:")
    print(f"  Usage count: {transform['usage_count']}")
    print(f"  Avg processing time: {transform['avg_time_ms']}ms")
    print(f"  Success rate: {transform['success_rate']}%")
    print(f"  Impact on response quality: {transform['quality_score']}/10")

# Test transform effectiveness
test_result = requests.post(
    "https://api.parrotrouter.com/v1/transforms/test",
    headers={"Authorization": "Bearer your-api-key"},
    json={
        "transform": "enhance-clarity",
        "test_messages": [
            "Explain AI",
            "What is machine learning?",
            "How do neural networks work?"
        ],
        "compare_with": "baseline"
    }
).json()

print(f"\nTransform effectiveness:")
print(f"Clarity improvement: {test_result['clarity_improvement']}%")
print(f"Response consistency: {test_result['consistency_score']}/10")

Best Practices

  • 1.
    Test Transforms Thoroughly

    Always test transforms with various inputs before production use

  • 2.
    Keep Transforms Simple

    Complex transforms can add latency and make debugging difficult

  • 3.
    Monitor Performance Impact

    Track how transforms affect response time and quality

  • 4.
    Use Templates When Possible

    Pre-built templates are optimized and well-tested

Related Features