Parseable
AI InfrastructureAgent frameworks

DSPy

Copy page as Markdown
View page source on GitHub
Ask OpenAI about this page
Ask Claude about this page

Log DSPy programs, module executions, and optimization runs to Parseable.

Overview

Integrate DSPy with Parseable to:

  • Program Tracing - Track DSPy program executions
  • Module Monitoring - Log individual module calls
  • Optimization Tracking - Monitor optimization progress
  • Token Usage - Track LLM token consumption

Prerequisites

  • DSPy installed (pip install dspy-ai)
  • Parseable instance accessible
  • Python application

Custom Logger

import dspy
import requests
from datetime import datetime
from typing import Dict, Any
import uuid
import time

class ParseableDSPyLogger:
    def __init__(self, parseable_url: str, dataset: str, username: str, password: str):
        self.parseable_url = parseable_url
        self.dataset = dataset
        self.auth = (username, password)
        self.program_id = str(uuid.uuid4())
    
    def _log(self, entry: Dict[str, Any]):
        entry["timestamp"] = datetime.utcnow().isoformat() + "Z"
        entry["program_id"] = self.program_id
        try:
            requests.post(
                f"{self.parseable_url}/api/v1/ingest",
                json=[entry],
                auth=self.auth,
                headers={"X-P-Stream": self.dataset},
                timeout=5
            )
        except Exception as e:
            print(f"Logging failed: {e}")
    
    def log_module_call(self, module_name: str, inputs: Dict, outputs: Dict, duration_ms: float):
        self._log({
            "event": "module_call",
            "module_name": module_name,
            "inputs": {k: str(v)[:100] for k, v in inputs.items()},
            "outputs": {k: str(v)[:200] for k, v in outputs.items()},
            "duration_ms": duration_ms
        })
    
    def log_optimization_trial(self, trial_num: int, score: float):
        self._log({
            "event": "optimization_trial",
            "trial_num": trial_num,
            "score": score
        })

Querying DSPy Logs

-- Module performance
SELECT module_name, AVG(duration_ms) as avg_duration, COUNT(*) as calls
FROM "dspy-logs"
WHERE event = 'module_call'
GROUP BY module_name

-- Optimization progress
SELECT trial_num, score
FROM "dspy-logs"
WHERE event = 'optimization_trial'
ORDER BY trial_num

Next Steps

Was this page helpful?

On this page