synthlabs-curation

Par mkurman · zorai

À utiliser lorsque la curation du dataset SynthLabs doit s'exécuter en tant que tâches HTTP d'arrière-plan reproductibles plutôt que sous forme de travail manuel via l'interface utilisateur.

npx skills add https://github.com/mkurman/zorai --skill synthlabs-curation

Curation SynthLabs

Vue d'ensemble

Utilisez cette skill pour la curation de datasets SynthLabs qui s'exécute via les routes HTTP job existantes au lieu d'un travail manuel axé sur l'UI. Ceci est une guidance de workflow pour une application externe ; ne supposez pas que zorai expose des outils SynthLabs dédiés.

Quand l'utiliser

Utilisez cette skill quand :

  • la tâche consiste à auto-scorer, réécrire, supprimer des éléments, ou migrer du contenu de raisonnement via des jobs de fond,
  • l'opérateur veut une boucle de polling répétable au lieu d'actions navigateur ligne par ligne,
  • l'exécution doit laisser une trace de vérification dans les notes de session active, de tâche ou d'objectif zorai,
  • ou les vérifications de maintenance telles que les statistiques de logs, le nettoyage de tags ou les scans d'orphelins aident à valider l'état du dataset.

N'utilisez pas cette skill quand :

  • la tâche est une revue manuelle au niveau ligne, approbation de vérificateur, aperçu de données ou autre inspection visuelle,
  • les credentials du fournisseur doivent être entrés de manière interactive dans l'UI SynthLabs,
  • ou le backend n'est pas encore sain et synthlabs-setup doit encore démarrer ou le réparer.

Règles agent

  • Lisez l'état du job ou de la session actuel avant de démarrer un nouveau job de curation.
  • Démarrez un job spécifique, enregistrez son jobId, puis faites du polling jusqu'à ce qu'il atteigne completed ou failed.
  • Traitez autoscore et rewrite comme des jobs soutenus par l'IA qui ont besoin d'une valeur apiKey chiffrée compatible avec SynthLabs.
  • Traitez remove-items, migrate-reasoning, les vérifications d'orphelins et la plupart du nettoyage de tags comme des maintenances non-IA qui ne nécessitent pas de credentials de modèle chiffré.
  • Routez la revue manuelle au niveau ligne, l'approbation de vérificateur et les vérifications ponctuelles visuelles vers synthlabs-ui-operator.

Boucle vérification-d'abord

  1. Inspectez le travail existant avec GET /api/jobs ou l'état de session pour ne pas démarrer de jobs en doublon.
  2. Démarrez exactement une route de curation avec la charge utile la plus étroite et sûre.
  3. Faites du polling GET /api/jobs/:id jusqu'à ce que le job soit completed ou failed.
  4. Examinez les champs progress, result et error avant de déclarer le succès.
  5. Mettez à jour les notes de session active, de tâche ou d'objectif zorai avec l'ID de session, l'ID de job, les filtres utilisés, les dénombrements finaux et si la vérification UI est toujours en attente.
  6. Si des lignes ont besoin d'un jugement humain ou d'une approbation visuelle, confiez ce suivi à synthlabs-ui-operator au lieu de continuer en mode HTTP aveugle.

Polling et découverte

Listez les jobs récents, optionnellement filtrés par type ou statut :

curl -fsS "http://localhost:8787/api/jobs?type=rewrite&status=running&limit=20"

Récupérez l'état complet d'un job après le démarrage :

curl -fsS "http://localhost:8787/api/jobs/job_123"

Préférez GET /api/jobs/:id une fois que vous avez un jobId ; utilisez GET /api/jobs pour la découverte, la visibilité de la queue ou pour confirmer si une exécution similaire est déjà active.

Jobs soutenus par l'IA

POST /api/jobs/autoscore

Utilisez autoscore quand les éléments d'une session ont besoin d'un scoring basé modèle de 1-5.

curl -fsS -X POST "http://localhost:8787/api/jobs/autoscore" \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId": "session_abc",
    "provider": "openai",
    "model": "gpt-4.1-mini",
    "baseUrl": "https://api.openai.com/v1",
    "apiKey": "<encrypted iv:ciphertext value>",
    "limit": 100,
    "offset": 0,
    "concurrency": 1,
    "maxRetries": 2,
    "retryDelay": 2000,
    "sleepMs": 500,
    "force": false
  }'

POST /api/jobs/rewrite

Utilisez rewrite quand le backend doit améliorer les champs query, reasoning ou answer sur place.

curl -fsS -X POST "http://localhost:8787/api/jobs/rewrite" \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId": "session_abc",
    "provider": "openai",
    "model": "gpt-4.1-mini",
    "baseUrl": "https://api.openai.com/v1",
    "apiKey": "<encrypted iv:ciphertext value>",
    "fields": ["reasoning", "answer"],
    "limit": 50,
    "concurrency": 1,
    "sleepMs": 500
  }'

Autoscore et rewrite appellent tous deux le client SynthLabs AI et déchiffrent l'apiKey soumis. Utilisez une valeur chiffrée compatible avec le comportement VITE_API_KEY_SALT ou API_KEY_SALT du backend. N'envoyez pas une clé de fournisseur en texte brut et n'inventez pas votre propre flux de chiffrement.

Jobs de migration et nettoyage non-IA

POST /api/jobs/remove-items

Utilisez remove-items pour le nettoyage déterministe. Cette route n'a pas besoin de credentials de modèle.

Testez d'abord un nettoyage par seuil :

curl -fsS -X POST "http://localhost:8787/api/jobs/remove-items" \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId": "session_abc",
    "scoreThreshold": 3,
    "scoreField": "score",
    "dryRun": true
  }'

La route accepte exactement une méthode de suppression : indices ou scoreThreshold, jamais les deux.

POST /api/jobs/migrate-reasoning

Utilisez migrate-reasoning pour déplacer le contenu assistant <think> dans les champs reasoning_content pour une session. Cette route n'a pas besoin de credentials de modèle.

curl -fsS -X POST "http://localhost:8787/api/jobs/migrate-reasoning" \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId": "session_abc",
    "limit": 200,
    "offset": 0,
    "concurrency": 5,
    "sleepMs": 100,
    "force": false
  }'

Surfaces de maintenance optionnelles

  • Utilisez GET /api/logs/stats pour les résumés au niveau log avant ou après une passe de curation.
curl -fsS "http://localhost:8787/api/logs/stats?sessionUid=session_abc"
  • Utilisez la gestion de tags quand l'organisation de session fait partie du flux de curation : GET /api/tags, POST /api/tags, DELETE /api/tags/:uid, GET /api/sessions/:sessionUid/tags, POST /api/sessions/:sessionUid/tags et DELETE /api/sessions/:sessionUid/tags.
  • Utilisez POST /api/orphans/check quand vous avez besoin d'un scan de fond pour les logs orphelins.
curl -fsS -X POST "http://localhost:8787/api/orphans/check"

Erreurs courantes

  • Démarrer un deuxième job avant de vérifier qu'un équivalent ne s'exécute pas déjà.
  • Traiter autoscore ou rewrite comme des routes à clés en texte brut quand elles nécessitent des credentials chiffrés.
  • Utiliser remove-items de manière destructive avant un test ou avant de capturer les critères de suppression dans les notes.
  • Déclarer le succès à partir de la réponse initiale { "jobId": ... } sans faire du polling GET /api/jobs/:id.
  • Garder le travail de revieweur au niveau ligne en mode HTTP uniquement au lieu de le confier à synthlabs-ui-operator.

Skills similaires