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:
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:
# 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:
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