Schéma JSONL de test Qwen et son utilisation
Date de rédaction : 28 juin 2026
Objectif
Créer des morceaux de code Godot avec Qwen, puis associer à chaque morceau de code un JSONL de réponse correcte et un JSONL de réponse incorrecte afin de valider « oui »/« non ». Ce document résume le format JSONL de référence ainsi que l’usage de chaque JSONL.
Ce document ne fournit pas de données d’exemple. Il s’agit d’une documentation de schéma destinée à identifier le rôle de chaque JSONL lors des tests et les champs utilisés pour le jugement de preuve directe.
Critères communs
Chaque ligne d’un fichier JSONL contient un seul objet JSON.
{...}
{...}
{...}Dans les tests, on ne place pas de wrapper entourant le nom de la table, mais on met les champs correspondant aux colonnes de la table cible au niveau supérieur.
Bon:
{"chunk_id":"...","content":"...","code_blocks":[...]}
À éviter:
{"table":"docs_chunks","payload":{"chunk_id":"..."}}Les champs générés automatiquement par la base de données ou utilisés dans l'index de recherche n'ont pas besoin d'être remplis directement dans le JSONL de test.
| Champ DB opérationnel | Selon le JSONL de test |
|---|---|
id |
exclu |
embedding |
exclu ou null |
search_tsv |
exclu |
created_at |
exclu |
Dans la validation directe des preuves Qwen, l'important est de savoir « quel champ du JSONL correspond directement à la chaîne réelle / API / motif du CODE_SOURCE ».
docs_chunks
Utilisation
docs_chunks est un JSONL qui stocke les explications de la documentation officielle, les tutoriels et le corps des références de classe par morceaux (chunks).
Il est utilisé pour les demandes d'explication de code, la vérification de l'utilisation des API communes, la vérification des explications de la syntaxe commune de Godot 3/4. Plutôt que les règles de migration elles‑mêmes, il sert de preuve pour vérifier « à quelle explication de la documentation officielle ce code est directement lié ».
Format JSONL
{
"chunk_id": "text, required",
"doc_version": "text, required",
"source_url": "text, required",
"source_file": "text, required",
"source_sha256": "text, required",
"doc_type": "text, required",
"symbol": "text or null",
"section_path": "array, required",
"heading": "text or null",
"content": "text, required",
"code_blocks": "array, required",
"language_tags": "array<string>",
"godot_version_tags": "array<string>",
"api_symbols": "array<string>",
"token_count": "integer or null",
"metadata": "object"
}Directement basé sur les preuves de champ
| Champ | Critère de preuve directe |
|---|---|
content |
Doit décrire les API, noms de fonctions, noms de nœuds, modèles de code présents dans le CODE_SOURCE |
code_blocks |
Doit contenir la même chaîne de code ou le même motif d’appel que le CODE_SOURCE |
api_symbols |
Doit correspondre exactement aux API/symboles présents dans le CODE_SOURCE |
heading |
Preuve secondaire. Faible si seul le titre correspond sans preuve dans le corps ou le code |
godot_version_tags |
À titre de référence de version. Ne doit pas être utilisé seul pour juger « Oui » |
Rôle dans les tests
| Cas | Attendu |
|---|---|
Le CODE_SOURCE utilise get_viewport_rect().size et le même libellé apparaît dans content ou code_blocks |
Oui |
| Le CODE_SOURCE partage uniquement un sujet large sans chaîne réelle/API | Non |
| Description de la syntaxe commune Godot 3/4 avec la chaîne de code correspondant exactement | Oui |
| Seuls les tags de version correspondent, aucune preuve de code | Non |
api_mapping
Utilité
api_mapping est un fichier JSONL qui enregistre comment les noms, classes, fonctions et symboles ont changé de Godot 3 à Godot 4.
Il est utilisé pour les changements simples de nom, les renommages, remplacements, ou la détermination d’API dépréciées/supprimées. Les cas où la façon d’utiliser une fonction change complètement sont plutôt traités dans la section label_prototypes.
Format JSONL
{
"mapping_id": "text, required",
"source_api": "text, required",
"target_api": "text or null",
"change_type": "text, required",
"godot_from": "text, required",
"godot_to": "text, required",
"confidence": "text, required",
"evidence_chunk_ids": "array<string>",
"match_terms": "array<string>",
"notes": "text",
"negative_patterns": "array<string>"
}Directement basé sur les preuves du champ
| Champ | Critère de preuve directe |
|---|---|
source_api |
Doit réellement apparaître dans le CODE_SOURCE |
target_api |
Utilisé pour vérifier le code après transformation ou la description de la migration |
match_terms |
Doit correspondre exactement aux chaînes/API réelles dans le CODE_SOURCE |
notes |
Explication supplémentaire. Consulté avec source_api/match_terms plutôt que comme preuve isolée |
negative_patterns |
Si le CODE_SOURCE correspond à ce modèle, il constitue une preuve de « non » |
Rôle dans les tests
| Cas | Attendu |
|---|---|
Le CODE_SOURCE contient KinematicBody2D et le source_api du JSONL est également KinematicBody2D |
Oui |
Le CODE_SOURCE contient yield( et le match_terms du JSONL contient yield( |
Oui |
Le JSONL indique Camera -> Camera3D mais le CODE_SOURCE est KinematicBody2D |
Non |
| Seuls des mots généraux comme Godot 3/4, migration se recoupent | Non |
label_prototypes
Utilisation
label_prototypes est un fichier JSONL qui stocke des exemples où non seulement le nom change, mais aussi la façon d’utiliser la fonction, la composition des arguments et le modèle d’appel sont entièrement modifiés.
Si api_mapping répond à la question « Quel nom a été remplacé par quoi », alors label_prototypes se rapproche de « Comment le code doit‑il être écrit ».
Format JSONL
{
"prototype_id": "text, required",
"label": "text, required",
"task_type": "text, required",
"input_pattern": "text, required",
"expected_finding": "text, required",
"recommended_action": "text, required",
"evidence_mapping_ids": "array<string>",
"evidence_chunk_ids": "array<string>",
"severity": "text",
"validator_rules": "object"
}validator_rules peut avoir les sous‑champs suivants.
{
"required_when_seen_in_code": "array<string>",
"before_code": "text",
"after_code": "text",
"reject_when_seen_in_code": "array<string>"
}Directement basé sur les preuves de champ
| Champ | Critère de preuve directe |
|---|---|
input_pattern |
Doit correspondre exactement au modèle d’appel de SOURCE_CODE |
expected_finding |
Description du problème/modèle à rechercher |
recommended_action |
Direction de la transformation ou de l’explication |
validator_rules.required_when_seen_in_code |
Doit réellement être présent dans SOURCE_CODE pour constituer une preuve « oui » |
validator_rules.before_code |
Si le même modèle de code précédent apparaît dans SOURCE_CODE, c’est une preuve forte « oui » |
validator_rules.reject_when_seen_in_code |
Si SOURCE_CODE correspond à ce modèle, le prototype est « non » |
Rôle dans les tests
| Cas | Attendu |
|---|---|
SOURCE_CODE contient yield(get_tree().create_timer(...), "timeout") et before_code a le même modèle |
oui |
SOURCE_CODE contient move_and_slide(velocity) et le prototype explique le changement de mode d’appel correspondant |
oui |
SOURCE_CODE est yield mais le prototype concerne la conversion Color8 |
non |
| SOURCE_CODE partage uniquement le même label sans le modèle réel | non |
Frontières des trois JSONL
| JSONL | Question clé | Ce qui doit correspondre principalement |
|---|---|---|
docs_chunks |
Ce code est-il directement lié à une documentation officielle ou à un tutoriel | content, code_blocks, api_symbols |
api_mapping |
Les API/symboles de ce code ont-ils changé de nom ou de cible de Godot 3 à 4 | source_api, target_api, match_terms |
label_prototypes |
Le mode d’utilisation, les arguments ou le modèle d’appel de ce code correspondent-ils à un exemple de changement complet | input_pattern, validator_rules, before_code |
Traitement de la syntaxe commune
Les syntaxes identiques entre Godot 3 et Godot 4 ne sont pas considérées comme des différences de version.
| Situation | JSONL à utiliser | Critère de jugement |
|---|---|---|
Code commun comme _ready(), _process(delta), print() |
1 JSONL de code/fonction correspondant + 1 JSONL d’une fonction totalement différente | Si une preuve directe existe pour le même fragment de code, oui ; sinon, pour une fonction différente, non |
| JSONL de migration non lié au code commun | api_mapping ou label_prototypes incorrect |
Si aucune API/modèle réel n’est présent, non |
| API spécifique à Godot 3 apparaît | JSONL dédié à Godot 3 + JSONL dédié à Godot 4 | Le JSONL qui correspond directement aux chaînes/modèles Godot 3 du SOURCE_CODE est oui |
| API spécifique à Godot 4 apparaît | JSONL dédié à Godot 4 + JSONL dédié à Godot 3 | Le JSONL qui correspond directement aux chaînes/modèles Godot 4 du SOURCE_CODE est oui |