
HTS, LEGSA, GCTIR 단계를 통해 검증된 성공 경험을 구축하고 이를 형성 기록으로 조직하여 모델 기술을 점진적으로 오염시키는 연구 파이프라인.
이 저장소는 검증된 성공 경험을 구성하고 이를 형성 기록(formation record)으로 정리하기 위한 형성 단계 파이프라인인 SkillPoison의 구현을 제공합니다.
.
├── 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/에는 HTS, LEGSA, GCTIR 구현이 포함되어 있고, prompts/에는 모델에 전달되는 프롬프트 템플릿이 저장되어 있으며, configs/에는 실험 설정이 저장되어 있습니다. 그리고 scripts/run_skillpoison.py는 주요 실행 진입점입니다.
Python 3.10 이상을 권장합니다.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
실제 실행 전에 모델 엔드포인트를 설정하세요:
export MODEL_API_KEY="your-api-key"
export MODEL_BASE_URL="https://your-endpoint/v1"
export MODEL_NAME="your-model-name"
환경 변수 템플릿은 .env.example에 제공되어 있습니다.
주요 구성 파일은 다음과 같습니다:
configs/main.yaml
이 파일은 출력 디렉터리, 모델 설정, 대상 동작, 임베딩 모델, HTS 임계값, LEGSA 프롬프트 디렉터리, GCTIR 형성 설정을 지정합니다.
파이프라인은 JSON 또는 JSONL 입력을 허용합니다. JSON의 경우 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"
}
]
}
각 후보는 고유한 id, 작업/카테고리 정보, 기록된 성공 궤적, 검증 결과, 그리고 출력 형식(text, json, 또는 python)을 포함해야 합니다.
python scripts/run_skillpoison.py \
--config configs/main.yaml \
--input /path/to/candidate_experiences.json \
--out outputs/run
파이프라인은 다음을 실행합니다:
Candidate Experiences
↓
HTS
↓
LEGSA
↓
GCTIR
↓
Formation Records
--out은 configs/main.yaml에 지정된 출력 디렉터리를 재정의합니다.
표준 실행은 다음을 기록합니다:
outputs/run/
├── selection_audit.json
├── formation_records.json
└── run_summary.json
selection_audit.json: 후보 선택 및 검증 결과.formation_records.json: 최종 형성 기록.run_summary.json: 실행 통계, 구성, 사용 요약.기록된 중간 산출물로부터 결정론적으로 재실행하려면:
python scripts/run_skillpoison.py \
--config configs/main.yaml \
--input /path/to/replay_input.json \
--out outputs/replay \
--replay
재생 입력에는 파이프라인에 필요한 기록된 산출물이 이미 포함되어 있어야 합니다.