from datetime import datetime, timezone
from opperai import Opper
import time
opper = Opper(http_bearer="YOUR_API_KEY")
# First, create a span and add multiple metrics to list
created_span = opper.spans.create(
    name="model_performance_analysis",
    start_time=datetime.now(timezone.utc),
    type="evaluation",
    input="Analyze the performance of our latest model deployment",
    output="Model shows 15% improvement in accuracy, 20% reduction in latency, and high user satisfaction scores.",
    meta={"model_version": "v2.1", "deployment_id": "deploy_456"},
)
print(f"Created span with ID: {created_span.id}")
# Add multiple metrics to demonstrate the list functionality
metrics_to_add = [
    ("accuracy_score", 0.92, "Model accuracy on test dataset"),
    ("latency_ms", 340.5, "Average response latency in milliseconds"),
    ("user_satisfaction", 8.7, "User satisfaction score (1-10)"),
    ("throughput_rps", 125.3, "Requests per second throughput"),
    ("error_rate", 0.02, "Error rate percentage"),
]
for dimension, value, comment in metrics_to_add:
    opper.span_metrics.create_metric(
        span_id=created_span.id, dimension=dimension, value=value, comment=comment
    )
print("Added performance metrics to span")
# List all metrics for the span
metrics = opper.span_metrics.list(span_id=created_span.id, offset=0, limit=20)
print(f"Total metrics for span: {metrics.meta.total_count}")
print(f"Showing {len(metrics.data)} metrics:")
print("=" * 50)
for metric in metrics.data:
    print(f"Dimension: {metric.dimension}")
    print(f"Value: {metric.value}")
    if metric.comment:
        print(f"Comment: {metric.comment}")
    print(f"Created: {metric.created_at}")
    print("---")
# Calculate average quality scores
quality_metrics = [m for m in metrics.data if "quality" in m.dimension.lower()]
if quality_metrics:
    avg_quality = sum(m.value for m in quality_metrics) / len(quality_metrics)
    print(f"\nAverage quality score: {avg_quality:.2f}")