# DSPy BootstrapFinetune：把教师的多步骤记录蒸馏给小模型，分开保存提示与权重

已读取真实DSPy BootstrapFinetune API，已审计作者演示与假教师轨迹反例。未运行教师模型、蒸馏训练或生成任何模型权重。

## 运行

在本目录使用独立虚拟环境并安装requirements.txt；脚本结果写入results。

```sh
python reference/audit.py
python reference/run_sdk.py
```

fixtures是原创输入与故意失败样本；作者真值、离线合成provider和实际SDK记录各自标明，不是模型正确率。需要真实模型/账号/GPU的步骤按正文另行授权运行。

## 1. 先标清演示数据来源

author-demonstrations.json是8条作者示范，不是真实教师执行轨迹。negative-trace.json缺model与teacher_run_id，必须被来源审计器拒绝作为教师训练记录。

## 2. 核对教师与学生许可

在fine-tune-plan.json记录真实学生底座revision、许可证与训练环境。没有选定底座时保留明确待设置状态，不能生成一个空文件冒充模型权重。

## 3. 读取当前DSPy微调接口

运行reference/run_sdk.py读取BootstrapFinetune及compile签名，保留真实安装版本。这里不启动云端微调，也不配置任何训练密钥。

## 4. 用教师程序采集逐模块轨迹

授权实跑时对每条请求保存module_inputs、module_outputs、模型ID与run_id。路由模块和字段提取模块分开记录，不能只保存最终回答。

## 5. 把轨迹与留出题隔离

先检查教师错误和缺失字段，再形成学生训练材料。H01/H02等留出ID不进入教师示例和训练；作者示例仍保留独立origin字段。

## 6. 编译学生并保存实际产物

在支持微调的模型/环境中按当前compile接口运行。分别保存教师提示程序、学生适配器或完整权重、任务回执和训练失败；本文未执行该步骤。

## 7. 在新进程重载再对比

真正完成训练后重载学生权重，对同一未见任务比较教师与学生的路由和抽取。训练loss、推理正确率与成本是不同证据，不能只凭权重文件名判成功。

## 官方依据

- DSPy 官方文档或源码：https://raw.githubusercontent.com/stanfordnlp/dspy/main/docs/docs/learn/optimization/optimizers.md
