Chinese version: README_CN.md
This repository is a research workspace for analyzing tool-calling failures in LLMs.
Completed:
- Phase 1: literature review and research positioning
- Phase 2: tool schemas, base tasks, prompt, runner, evaluator
- Phase 3: expanded task pool, external eval set, split metadata, annotation guideline, processed-data build pipeline
Not completed in this workspace yet:
- API-backed model runs
- merged real
episodes.jsonl - real
labels.csv - real
run_metadata.csv - real
boundary_subset.jsonl
The blocker is simple: this machine still has no GLM API credential or usable local-model endpoint configuration.
tasks/phase3_tasks_v1/250main tasks
tasks/external_eval_v1/100held-out external-eval tasks
data/annotations/annotation_guideline.mddata/annotations/adjudication.csvdata/processed/split.csvdata/processed/task_metadata.csvdata/processed/data_card.mdscripts/generate_phase3_assets.pyscripts/build_phase3_processed.pyscripts/validate_phase3_assets.pyconfigs/runs/phase3_*.yaml
paper/phase1/: literature and research-positioning notestools/: tool schemastasks/base_tasks_v1/: original Phase 2 seed taskstasks/phase3_tasks_v1/: expanded main task pooltasks/external_eval_v1/: held-out external-eval task poolprompts/: prompt templatesrunner/: model calling and batch executionevaluator/: automatic evaluation rulesdata/annotations/: annotation guideline and adjudication templatedata/processed/: split metadata, processed outputs, data cardscripts/: validation and data-build utilitiesconfigs/runs/: runnable configs for Phase 2 and Phase 3
Create and activate the recommended conda environment:
conda env create -f environment.yml
conda activate srtpCheck the environment and Phase 2 assets:
python scripts/check_env.py
python scripts/validate_assets.py
python -m pytest tests/test_evaluator.pyRebuild and validate Phase 3 assets:
python scripts/generate_phase3_assets.py
python scripts/build_phase3_processed.py
python scripts/validate_phase3_assets.py
python -m pytest tests/test_phase3_assets.pyAfter setting model credentials, run:
python runner/run_batch.py --config configs/runs/phase3_glm_main.yaml
python runner/run_batch.py --config configs/runs/phase3_qwen_main.yaml
python runner/run_batch.py --config configs/runs/phase3_glm_external_eval.yaml
python runner/run_batch.py --config configs/runs/phase3_qwen_external_eval.yaml
python scripts/build_phase3_processed.pyThis will populate:
data/raw_runs/<run_id>/...data/processed/episodes.jsonldata/processed/labels.csvdata/processed/run_metadata.csvdata/processed/boundary_subset.jsonl
The batch runner now writes one episode at a time.
If a run is interrupted, restart it with the same run_id:
python runner/run_batch.py --config configs/runs/phase3_glm_main.yaml --run-id <existing_run_id> --resumeResume mode skips sample_ids that already exist in episodes.jsonl.
data/processed/split.csvanddata/processed/task_metadata.csvare already generated.episodes.jsonl,labels.csv,run_metadata.csv, andboundary_subset.jsonlare structurally ready but still empty because no real model run has been executed.- The external eval set is a held-out realistic-style set, not a direct import from a public benchmark.
- The recommended model pair is
GLM-4.7 + Qwen2.5-7B-Instruct.