
Pipeline de recherche qui construit des expériences réussies vérifiées et les organise en enregistrements de formation afin d'empoisonner progressivement les compétences du modèle via les étapes HTS, LEGSA et GCTIR.
Ce dépôt fournit l'implémentation de SkillPoison, un pipeline de phase de formation destiné à construire des expériences réussies vérifiées et à les organiser en enregistrements de formation.
.
├── assets/
│ └── framework.png
├── configs/
│ └── main.yaml
├── core/
│ ├── hts/
│ ├── legsa/
│ ├── gctir/
│ ├── utils/
│ ├── config.py
│ └── pipeline.py
├── prompts/
│ ├── legsa/
│ ├── target_audit.txt
│ ├── counterfactual_generation.txt
│ └── counterfactual_audit.txt
├── scripts/
│ └── run_skillpoison.py
├── .env.example
├── requirements.txt
└── README.md
core/ contient l'implémentation de HTS, LEGSA et GCTIR ; prompts/ stocke les modèles de prompts destinés au modèle ; configs/ stocke les paramètres d'expérimentation ; et scripts/run_skillpoison.py est le point d'entrée principal d'exécution.
Python 3.10 ou une version ultérieure est recommandé.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Définissez le point de terminaison du modèle avant une exécution réelle :
export MODEL_API_KEY="your-api-key"
export MODEL_BASE_URL="https://your-endpoint/v1"
export MODEL_NAME="your-model-name"
Un modèle de variables d'environnement est fourni dans .env.example.
Le fichier de configuration principal est :
configs/main.yaml
Il spécifie le répertoire de sortie, les paramètres du modèle, le comportement cible, le modèle d'embedding, les seuils HTS, le répertoire de prompts LEGSA et les paramètres de formation GCTIR.
Le pipeline accepte une entrée JSON ou JSONL. Pour JSON, utilisez une liste experiences :
{
"experiences": [
{
"id": "example_001",
"category": "category_name",
"task_text": "task input",
"solution": "externally verified solution",
"trajectory": {
"task_input": "task input",
"model_output": "recorded successful output"
},
"requirement_checks": [true],
"verified_success": true,
"output_format": "text"
}
]
}
Chaque candidat doit contenir un id unique, des informations de tâche/catégorie, une trajectoire réussie enregistrée, des résultats de vérification et un format de sortie (text, json ou python).
python scripts/run_skillpoison.py \
--config configs/main.yaml \
--input /path/to/candidate_experiences.json \
--out outputs/run
Le pipeline exécute :
Candidate Experiences
↓
HTS
↓
LEGSA
↓
GCTIR
↓
Formation Records
--out remplace le répertoire de sortie spécifié dans configs/main.yaml.
Une exécution standard écrit :
outputs/run/
├── selection_audit.json
├── formation_records.json
└── run_summary.json
selection_audit.json : résultats de sélection et de validation des candidats.formation_records.json : enregistrements de formation finaux.run_summary.json : statistiques d'exécution, configuration et résumé d'utilisation.Pour une ré-exécution déterministe à partir d'artefacts intermédiaires enregistrés :
python scripts/run_skillpoison.py \
--config configs/main.yaml \
--input /path/to/replay_input.json \
--out outputs/replay \
--replay
L'entrée de replay doit déjà contenir les artefacts enregistrés requis par le pipeline.