Skip to main content
Chaque séquence porte deux types de métadonnées distincts :
  • Validité technique. L’enregistrement est-il exploitable ? Avala la rapporte à partir des critères d’acceptation et des objectifs de qualité. Consultez la section Validité technique.
  • Résultat comportemental. Qu’a fait la personne ou le robot, et la tâche a-t-elle réussi ? Avala le stocke comme étiquette de résultat de la séquence.
Une séquence peut être techniquement valide et montrer quand même une défaillance. Une séquence en échec est souvent la plus utile. Les deux axes restent séparés : un filtre sur les données propres ne supprime jamais une défaillance utile, et un filtre sur la réussite ne masque jamais un capteur défectueux.

L’étiquette de résultat

Chaque séquence a au plus une étiquette de résultat courante. Chaque écriture enregistre une nouvelle version. Les versions précédentes restent lisibles dans l’historique de l’étiquette.

Exemple

Voici l’étiquette d’une démonstration humaine avec un glissement et une récupération, telle que GET .../sequences/<sequence-uid>/outcome/ la renvoie :
Les valeurs illustrent la forme de l’étiquette. Elles ne décrivent pas une livraison réelle.

Champs

Tous les horodatages sont exprimés en secondes depuis le début de la séquence. mistake_type, recovery_type et failure_stage sont du texte libre. Utilisez les libellés de la taxonomie des défaillances de votre programme pour que les séquences se regroupent proprement.

Valeurs de résultat

Chaque sous-tâche peut porter son propre résultat, tiré de la même liste.

Niveau d’autonomie

Sous-tâches

Chaque sous-tâche a la forme {label, start_ts, end_ts, outcome}. Une étiquette contient au plus 256 sous-tâches. La liste doit être triée par start_ts. Deux sous-tâches sont soit disjointes, soit l’une contient entièrement l’autre, comme une phase et ses étapes. Des extrémités qui se touchent comptent comme disjointes. Un chevauchement partiel est rejeté. Lorsque deux sous-tâches commencent au même instant, placez d’abord celle qui englobe l’autre.

Actions des mains

hand_actions contient deux flux indépendants, left et right. Chaque élément décrit ce que fait une main sur une plage temporelle.
  • Pour une même main, les éléments sont triés par start_ts et ne doivent pas se chevaucher. Un élément commence à la fin du précédent ou après. Ils peuvent se toucher.
  • Les deux mains peuvent se chevaucher librement.
  • Chaque main contient au plus 3 600 éléments. Cela représente une heure à raison d’une étiquette par seconde.
  • left et right sont les seules clés. Vous pouvez omettre l’une ou l’autre. Une main omise est stockée comme une liste vide.
  • Un object ou un verb vide est stocké comme null. Chaque élément stocké possède les six champs.

Durée de la séquence

Lorsqu’Avala connaît la durée de la séquence, chaque end_ts de sous-tâche et chaque end_ts d’action de main doit être au plus égal à la durée plus 1 seconde. Cette seconde supplémentaire tient compte des étiquettes écrites à raison d’une par seconde. Avala connaît la durée lorsque la séquence a exactement un fichier MCAP extrait dont la durée est enregistrée. Pour les autres séquences, la vérification n’a pas lieu.

Appartenance à l’évaluation

evaluation_membership place la séquence dans une partition : Avala définit held_out_eval sur les séquences de chaque cohorte d’évaluation. Ces séquences n’apparaissent jamais dans une release d’entraînement. Consultez Évaluation.

Groupes de fuite

Les groupes de fuite empêchent des quasi-doublons de se retrouver des deux côtés d’une séparation entre entraînement et évaluation. leakage_groups accepte ces clés, chacune avec un identifiant de groupe de 255 caractères au plus : Toute autre clé est rejetée. Chaque clé est facultative. Avala construit les cohortes d’évaluation de sorte qu’aucune valeur de groupe d’une cohorte n’apparaisse dans une release d’entraînement. Vous pouvez séparer vos propres données de la même façon : mettez de côté par groupe, jamais par séquence aléatoire. Les identifiants de groupe d’Avala sont pseudonymes : vous pouvez regrouper et séparer les séquences sans savoir qui ni où.

Métadonnées de source

source_metadata indique d’où vient une étiquette importée, par exemple {"importer": "...", "run_id": "...", "task": "...", "log_path": "..."}.
  • C’est un objet plat d’au plus 20 clés.
  • Chaque clé compte de 1 à 64 caractères.
  • Chaque valeur est une chaîne de 512 caractères au plus, un nombre fini ou un booléen.
  • Les objets imbriqués, les listes et les valeurs null sont rejetés.

Fonctionnement des écritures

  • Une écriture remplace l’étiquette courante dans son ensemble et enregistre une nouvelle version. Tout champ facultatif que vous omettez est stocké comme non défini. Il n’est pas repris de la version précédente.
  • L’écriture nécessite un accès en modification au jeu de données. La lecture nécessite le même accès que la lecture de la séquence, y compris pour les jeux de données publics.
  • confidence est rejeté sauf si source vaut model.
  • La lecture d’une séquence sans étiquette renvoie 404.

Validité technique

La validité technique ne fait pas partie de l’étiquette de résultat. Avala la rapporte à partir du moteur d’acceptation et des objectifs de qualité. Elle n’a pas de schéma JSON propre. Critères d’acceptation. Chaque capture d’une campagne de capture reçoit un verdict automatique : accept, quarantine ou reject. Le verdict découle de ces critères : Chaque critère rapporte pass, fail, insufficient_evidence ou skipped. Un critère en échec enregistre un code de motif, comme acceptance_frame_rate_drop ou hands_not_visible. Un réviseur confirme ensuite le verdict ou le remplace. Les codes de motif sont listés dans Heure acceptée. Lisez l’acceptation avec les outils MCP get_result_acceptance pour une capture et get_campaign_acceptance_summary pour une campagne. list_capture_submissions inclut la synthèse d’acceptation automatique de chaque capture. Objectifs de qualité. Un projet peut fixer des seuils sur des métriques de qualité, comme le taux d’acceptation, le taux de rejet et le taux de problèmes. Avala émet une alerte lorsqu’une métrique franchit son seuil. Lisez-les avec l’outil MCP list_quality_targets. Les vérifications du programme qui ne sont pas des critères automatiques, comme la calibration, le consentement et la synchronisation des horodatages, sont rapportées comme motifs de rejet dans le rapport de couverture. Consultez Heure acceptée.

Lire et écrire les étiquettes de résultat

Les endpoints REST se trouvent sous https://api.avala.ai/api/v1 : La liste du jeu de données accepte les filtres outcome, evaluation_membership, source et autonomy_level. Chacun prend une valeur ou une liste séparée par des virgules, et une séquence correspond si elle a l’une des valeurs de la liste. model_version correspond à une seule version exacte. Une valeur de filtre inconnue renvoie 400. La liste des séquences, GET /datasets/{owner}/{slug}/sequences/, accepte outcome et evaluation_membership sous la même forme. Elle renvoie les séquences dont l’étiquette courante correspond.

Écrire une étiquette

Le SDK TypeScript prend des noms d’options en camelCase et envoie les champs en snake_case de l’API. Les clés à l’intérieur de sourceMetadata sont envoyées telles quelles. Dans la CLI, --hand-actions-file prend un fichier JSON de la forme {"left": [...], "right": [...]}, et --leakage-group KEY=ID peut être répété.

Lire les étiquettes

La liste du jeu de données renvoie jusqu’à 100 étiquettes par page. Passez le cursor de la page précédente pour continuer.

Lire les étiquettes avec le serveur MCP

Le serveur MCP lit les étiquettes de résultat. Il ne les écrit pas.
  • get_sequence_outcome prend owner, slug et sequenceUid. Il renvoie l’étiquette courante.
  • list_sequence_outcomes prend owner et slug, plus les filtres outcome, evaluationMembership, source, autonomyLevel et modelVersion, ainsi que limit et cursor.
Les deux outils renvoient une forme courte par défaut. Passez detail: "full" pour inclure les sous-tâches, les actions des mains, les libellés d’erreur et de récupération, les groupes de fuite, les métadonnées de source et l’auteur de l’étiquette. Consultez Utiliser Avala avec l’IA pour vous connecter.

Exporter les étiquettes de résultat avec LeRobot

L’exportateur LeRobot peut écrire l’étiquette de résultat courante de chaque séquence à côté du jeu de données. Une séquence Avala devient un épisode LeRobot.
Les étiquettes sont écrites dans meta/avala_sequence_outcomes.jsonl, avec un objet JSON par ligne et une ligne par épisode LeRobot enregistré. La table des épisodes de LeRobot n’a pas de place pour ces métadonnées, d’où ce fichier séparé. Chaque ligne contient ces clés : Une séquence sans étiquette reçoit une ligne avec seulement episode_index, avala_sequence_uid et "outcome": null.

La voie défaillance et récupération

Les défaillances récupérables sont livrées dans leur propre voie : les séquences dont le résultat est mistake_and_recovery ou intervention. Les sous-tâches et les actions des mains de chaque séquence indiquent où se produisent la défaillance et la récupération. La voie est livrée comme une slice distincte dans la release. Vous pouvez l’utiliser pour l’entraînement, la pondérer ou l’exclure. Vous pouvez aussi construire vous-même le même ensemble avec ?outcome=mistake_and_recovery,intervention. Les séquences dangereuses ne font pas partie de la voie.