shadcn/studio
Feedback

Feedback Scores

Los feedback scores permiten evaluar la calidad de trazas y spans con métricas como satisfacción, precisión, relevancia, etc.

Fuentes de Feedback

UI
Feedback manual desde la interfaz de usuario
API
Feedback programático vía API
SDK
Feedback automático desde el SDK
LLM Judge
Evaluación automática por otro LLM

Endpoints

GET
/api/v1/projects/{id}/opik/feedback
Lista feedback scores con estadísticas
// Response
{
  "feedbackScores": [...],
  "stats": {
    "total": 150,
    "byName": {
      "quality": { "count": 80, "avgValue": 0.85 },
      "relevance": { "count": 70, "avgValue": 0.92 }
    },
    "avgValue": 0.88
  }
}
POST
/api/v1/projects/{id}/opik/feedback
Agrega un feedback score
{
  "target_id": "trace-uuid",
  "target_type": "trace",  // o "span"
  "name": "user_satisfaction",
  "value": 0.95,
  "reason": "Respuesta clara y útil",
  "source": "ui"
}
PUT
/api/v1/projects/{id}/opik/feedback
Agrega múltiples feedback scores en batch
{
  "scores": [
    { "target_id": "trace-1", "name": "quality", "value": 0.9 },
    { "target_id": "trace-2", "name": "quality", "value": 0.8 }
  ]
}

Ejemplo de Uso

// Agregar feedback después de interacción del usuario
async function submitFeedback(traceId: string, rating: number) {
  await fetch('/api/v1/projects/my-project/opik/feedback', {
    method: 'POST',
    body: JSON.stringify({
      target_id: traceId,
      target_type: 'trace',
      name: 'user_rating',
      value: rating / 5, // Normalizar a 0-1
      source: 'ui'
    })
  })
}

// Obtener estadísticas de feedback
const stats = await fetch('/api/v1/projects/my-project/opik/feedback')
const { stats: feedbackStats } = await stats.json()
console.log(`Satisfacción promedio: ${feedbackStats.avgValue * 100}%`)