shadcn/studio
Prompts

Gestión de Prompts

Versiona tus prompts, detecta variables automáticamente y mantén un historial de cambios para cada prompt de tu aplicación.

Características

Versionado
Cada actualización crea una nueva versión sin perder el historial
Variables
Detecta automáticamente {{variables}} en el contenido
Tags
Organiza prompts con etiquetas personalizadas

Endpoints

GET
/api/v1/projects/{id}/opik/prompts
Lista todos los prompts con sus versiones
POST
/api/v1/projects/{id}/opik/prompts
Crea un nuevo prompt
{
  "name": "Customer Support",
  "content": "Eres un asistente de soporte para {{company}}.\nEl cliente pregunta: {{question}}\nResponde de manera amable.",
  "description": "Prompt para atención al cliente",
  "tags": ["support", "production"]
}

// Variables detectadas automáticamente:
// ["company", "question"]
PUT
/api/v1/projects/{id}/opik/prompts
Actualiza prompt (crea nueva versión)
{
  "name": "Customer Support",  // Identificar por nombre
  "content": "Eres un asistente de {{company}}.\nContexto: {{context}}\nPregunta: {{question}}\nResponde de manera empática.",
  "tags": ["support", "production", "v2"]
}

// Crea versión 2 del prompt

Estructura de Respuesta

{
  "prompts": [
    {
      "id": "prompt-uuid",
      "name": "Customer Support",
      "description": "Prompt para atención al cliente",
      "currentVersion": 2,
      "versions": [
        {
          "id": "version-2",
          "version": 2,
          "content": "Eres un asistente de {{company}}...",
          "variables": ["company", "context", "question"],
          "createdAt": "2025-12-29T12:00:00Z"
        },
        {
          "id": "version-1",
          "version": 1,
          "content": "Eres un asistente de soporte...",
          "variables": ["company", "question"],
          "createdAt": "2025-12-28T10:00:00Z"
        }
      ],
      "tags": ["support", "production", "v2"],
      "createdAt": "2025-12-28T10:00:00Z",
      "updatedAt": "2025-12-29T12:00:00Z"
    }
  ]
}

Ejemplo de Uso

// 1. Crear prompt inicial
await fetch('/api/v1/projects/my-project/opik/prompts', {
  method: 'POST',
  body: JSON.stringify({
    name: 'Sales Bot',
    content: `Eres un vendedor de {{product}}.
El cliente dice: {{message}}
Responde promocionando las ventajas del producto.`,
    tags: ['sales']
  })
})

// 2. Actualizar con mejoras (nueva versión)
await fetch('/api/v1/projects/my-project/opik/prompts', {
  method: 'PUT',
  body: JSON.stringify({
    name: 'Sales Bot',
    content: `Eres un experto vendedor de {{product}}.
Contexto del cliente: {{context}}
Mensaje: {{message}}
Responde de manera persuasiva pero no invasiva.`,
    tags: ['sales', 'v2']
  })
})

// 3. Obtener prompt con todas las versiones
const response = await fetch('/api/v1/projects/my-project/opik/prompts?name=Sales Bot')
const { prompts } = await response.json()
console.log(`Versión actual: ${prompts[0].currentVersion}`)
console.log(`Variables: ${prompts[0].versions[0].variables.join(', ')}`)