Telemetry & Optimization

Maniac's optimization engine automatically improves model performance for your specific tasks through prompt optimization, parameter tuning, and intelligent caching strategies.

What is Model Optimization?

Model optimization in Maniac involves several automated techniques:

  • Prompt Engineering: Automatically optimize prompts for better results

  • Few-Shot Learning: Dynamically select the best examples for in-context learning

  • Parameter Tuning: Optimize sampling parameters (temperature, top-p, etc.)

  • Response Formatting: Ensure consistent, structured outputs

  • Context Management: Optimize context length and content

Getting Started with Optimization

Basic Optimization

Enable optimization for any request:

from maniac import Maniac

client = Maniac(api_key="your-maniac-api-key")

# Basic optimization enabled
response = client.complete(
    container_id="your-container",
    prompt="Solve this math problem: 2x + 5 = 13",
    optimize=True  # Enable automatic optimization
)

print(response.text)
print(f"Optimization score: {response.optimization_score}")

Optimization Strategies

Choose from different optimization approaches:

from maniac import OptimizationStrategy

# Performance optimization
response = client.complete(
    container_id="your-container",
    prompt="Write a creative story",
    optimization_strategy=OptimizationStrategy.QUALITY_FOCUSED
)

# Speed optimization
response = client.complete(
    container_id="your-container", 
    prompt="Quick factual answer",
    optimization_strategy=OptimizationStrategy.LATENCY_FOCUSED
)

# Balanced optimization
response = client.complete(
    container_id="your-container",
    prompt="Analyze this data",
    optimization_strategy=OptimizationStrategy.BALANCED
)

Prompt Optimization

Automatic Prompt Enhancement

Maniac automatically improves your prompts:

# Your original prompt
original_prompt = "Write code"

# Maniac optimizes it automatically
response = client.complete(
    container_id="coding-assistant",
    prompt=original_prompt,
    optimize_prompt=True,
    show_optimized_prompt=True
)

print("Original:", original_prompt)
print("Optimized:", response.optimized_prompt)
# Optimized: "Write clean, well-commented code following best practices. 
# Include error handling and type hints where appropriate."

Template-Based Optimization

Create reusable optimized templates:

# Create an optimized template
template = client.create_template(
    name="code_review",
    base_prompt="Review this code: {code}",
    optimization_goals=["clarity", "constructiveness", "actionability"],
    task_type="code_review"
)

# Use the optimized template
response = client.complete_with_template(
    template_id=template.id,
    variables={"code": "def hello(): print('world')"},
    container_id="your-container"
)

Few-Shot Learning Optimization

Dynamic Example Selection

Automatically select the best examples for your task:

# Provide a pool of examples
examples = [
    {"input": "What's 2+2?", "output": "2+2 equals 4"},
    {"input": "Calculate 15*3", "output": "15 multiplied by 3 is 45"},
    {"input": "What's the square root of 16?", "output": "The square root of 16 is 4"},
    # ... more examples
]

response = client.complete(
    container_id="math-solver",
    prompt="What's 7*8?",
    examples_pool=examples,
    auto_select_examples=True,  # Automatically pick best examples
    max_examples=3
)

Example Quality Scoring

Maniac scores and ranks your examples:

# Analyze example quality
example_scores = client.analyze_examples(
    container_id="your-container",
    examples=examples,
    task_type="math_problem"
)

for example, score in example_scores.items():
    print(f"Example quality: {score:.2f} - {example['input'][:50]}")

Parameter Optimization

Automatic Parameter Tuning

Optimize sampling parameters for your specific use case:

# Enable automatic parameter optimization
response = client.complete(
    container_id="your-container",
    prompt="Generate creative content",
    optimize_parameters=True,
    parameter_bounds={
        "temperature": (0.1, 1.0),
        "top_p": (0.8, 1.0),
        "max_tokens": (100, 500)
    }
)

print(f"Optimized parameters: {response.optimized_parameters}")
# Output: {"temperature": 0.7, "top_p": 0.9, "max_tokens": 250}

Custom Parameter Sets

Define parameter sets for different scenarios:

# Create parameter profiles
creative_params = {
    "temperature": 0.8,
    "top_p": 0.9,
    "frequency_penalty": 0.1
}

analytical_params = {
    "temperature": 0.2,
    "top_p": 0.8,
    "frequency_penalty": 0.0
}

# Use appropriate parameters based on task
if task_type == "creative_writing":
    params = creative_params
else:
    params = analytical_params

response = client.complete(
    container_id="your-container",
    prompt=prompt,
    parameters=params
)

Response Formatting Optimization

Structured Output Optimization

Ensure consistent, well-formatted responses:

from maniac import OutputFormat, ValidationRule

# Define desired output format
output_format = OutputFormat(
    type="json",
    schema={
        "answer": "string",
        "confidence": "float",
        "reasoning": "string"
    },
    validation_rules=[
        ValidationRule.REQUIRED_FIELDS(["answer", "confidence"]),
        ValidationRule.RANGE("confidence", 0.0, 1.0)
    ]
)

response = client.complete(
    container_id="qa-system",
    prompt="What is the capital of France?",
    output_format=output_format,
    optimize_formatting=True
)

# Response will be properly formatted JSON
result = response.json()
print(f"Answer: {result['answer']}")
print(f"Confidence: {result['confidence']}")

Format Consistency

Maintain consistent formatting across requests:

# Enable format learning
client.enable_format_learning(
    container_id="your-container",
    learn_from_history=True,  # Learn from past successful formats
    consistency_threshold=0.9
)

# Subsequent requests will maintain learned format patterns
response = client.complete(
    container_id="your-container",
    prompt="Another question",
    maintain_format_consistency=True
)

Context Optimization

Intelligent Context Management

Optimize context window usage:

# Automatic context optimization
response = client.complete(
    container_id="your-container",
    prompt="Analyze this long document",
    context=long_document_text,
    optimize_context=True,  # Automatically optimize context usage
    context_compression="intelligent"  # Use smart compression
)

print(f"Original context length: {len(long_document_text)}")
print(f"Optimized context length: {response.optimized_context_length}")

Dynamic Context Selection

Select the most relevant context automatically:

# Multiple context sources
context_sources = [
    {"text": document1, "relevance_weight": 1.0},
    {"text": document2, "relevance_weight": 0.8}, 
    {"text": document3, "relevance_weight": 0.6}
]

response = client.complete(
    container_id="document-qa",
    prompt="What are the main conclusions?",
    context_sources=context_sources,
    auto_select_context=True,  # Automatically select most relevant
    max_context_tokens=2000
)

Optimization Analytics

Performance Tracking

Monitor optimization effectiveness:

# Get optimization metrics
metrics = client.get_optimization_metrics(
    container_id="your-container",
    time_range="7d"
)

print(f"Average improvement: {metrics['avg_improvement']}%")
print(f"Success rate: {metrics['success_rate']}%")
print(f"Cost impact: {metrics['cost_change']}%")

# Breakdown by optimization type
for opt_type, improvement in metrics['by_optimization_type'].items():
    print(f"{opt_type}: {improvement}% improvement")

A/B Testing Optimization

Test different optimization strategies:

# Create optimization A/B test
test = client.create_optimization_test(
    container_id="your-container",
    name="prompt_optimization_test",
    variants={
        "control": {"optimize": False},
        "treatment": {
            "optimize": True,
            "optimization_strategy": OptimizationStrategy.QUALITY_FOCUSED
        }
    },
    success_metric="user_satisfaction",
    duration_days=14
)

# Results will be automatically analyzed
results = client.get_test_results(test.id)

Advanced Optimization

Multi-Objective Optimization

Optimize for multiple goals simultaneously:

from maniac import OptimizationGoal, MultiObjectiveConfig

# Define multiple optimization goals
config = MultiObjectiveConfig(
    goals=[
        OptimizationGoal.ACCURACY(weight=0.4),
        OptimizationGoal.LATENCY(weight=0.3),
        OptimizationGoal.COST(weight=0.3)
    ],
    optimization_method="pareto_optimal"
)

response = client.complete(
    container_id="your-container",
    prompt="Complex analysis task",
    multi_objective_config=config
)

Reinforcement Learning from Human Feedback (RLHF)

Continuously improve based on user feedback:

# Enable RLHF optimization
client.enable_rlhf(
    container_id="your-container",
    feedback_collection=True,
    learning_rate=0.1,
    update_frequency="daily"
)

# Provide feedback on responses
response = client.complete(
    container_id="your-container",
    prompt="Generate a summary"
)

# User provides feedback
client.submit_feedback(
    response_id=response.id,
    rating=4,  # 1-5 scale
    feedback_text="Good summary but could be more concise"
)

Best Practices

1. Start with Basic Optimization

Enable basic optimization first, then add specific optimizations as needed.

2. Monitor Performance Impact

Track how optimization affects quality, latency, and costs.

3. Use Task-Specific Optimization

Different task types benefit from different optimization strategies.

4. Provide Quality Examples

High-quality examples lead to better few-shot optimization.

5. Regular Optimization Review

Periodically review and update your optimization strategies.

Common Optimization Patterns

Content Generation

response = client.complete(
    container_id="content-generator",
    prompt="Write a blog post about AI",
    optimization_strategy=OptimizationStrategy.QUALITY_FOCUSED,
    optimize_prompt=True,
    parameters={"temperature": 0.8}
)

Data Analysis

response = client.complete(
    container_id="data-analyst",
    prompt="Analyze this dataset",
    optimization_strategy=OptimizationStrategy.ACCURACY_FOCUSED,
    output_format=structured_format,
    optimize_context=True
)

Customer Support

response = client.complete(
    container_id="support-agent",
    prompt="Help with this issue",
    optimization_strategy=OptimizationStrategy.BALANCED,
    optimize_parameters=True,
    maintain_format_consistency=True
)

Next Steps

Last updated