ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

SkillOpt 首次实验实战:从零跑通 SearchQA 技能优化全流程

SkillOpt 首次实验实战:从零跑通 SearchQA 技能优化全流程 人工智能大模型AI Agent提示工程【免费下载链接】SkillOptSkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.项目地址https://gitcode.com/gh_mirrors/sk/SkillOpt点击查看免费下载SkillOpt 是一个在文本空间中优化可复用自然语言技能skill的框架通过轨迹驱动的编辑、验证门控的更新与可部署的best_skill.md产物为冻结的 LLM Agent 自动生成更好的提示词技能文档。本文以 SearchQA 这一纯文本问答基准为例完整讲解从数据物化、模型后端配置、训练启动、产物监控到测试集评估的端到端流程并逐层剖析scripts/train.py、scripts/eval_only.py、skillopt/evaluation/gate.py等源码实现让你读完即可独立复现一次完整的 SkillOpt 训练实验并理解每一步背后的优化机制。1. 选择基准SkillOpt 内置 benchmark 一览SkillOpt 仓库为多个基准提供了开箱即用的配置每个基准对应configs/benchmark/default.yaml及其环境适配器见skillopt/envs/下的同名目录。官方文档给出如下对照表Benchmark模态额外准备SearchQA纯文本 QA物化已发布的 ID manifestID 清单DocVQA文档/图片 QA获取并物化图片与示例ALFWorld具身 Agent安装 ALFWorld 并下载其资源需要说明的是端到端运行耗时取决于所选模型、供应商延迟、worker 并发数与数据集规模因此项目不承诺固定的墙钟时间估算。本指南选择SearchQA因为它是流程最简单的纯文本走查路径。从源码结构看scripts/train.py维护了一个环境适配器注册表_ENV_REGISTRY内置 SearchQA、DocVQA、ALFWorld、LiveMathematicianBench、SpreadsheetBench、OfficeQA 等多个适配器通过cfg[env]即配置中的env.name按需实例化scripts/train.py这解释了为什么一份train.py可以驱动所有内置基准。2. 安装并物化 SearchQA 数据仓库只包含一份稳定的 SearchQA ID manifest样本 ID 清单并不包含可直接运行的完整示例。因此从源码检出后需要先安装数据 extra 并物化一次数据划分python -m pip install -e .[searchqa] python scripts/materialize_searchqa.py物化脚本的工作原理scripts/materialize_searchqa.py是物化入口其默认行为如下从data/searchqa_id_split/--manifest-dir读取train/val/test三个目录下的items.json每个条目只含样本id从 Hugging Face 数据集lucadiliello/searchqa--dataset加载完整语料按 manifest 中的 ID 过滤、规整要求每条记录必须包含question、context、answers三个字段见 materialize_searchqa.py写入data/searchqa_split/--output-dir下的train/val/test/items.json同时生成一份split_manifest.json记录来源与各划分条数。脚本还内置了两道完整性校验跨划分重复 ID 校验_reject_duplicate_manifest_ids与缺失 ID 校验任何重复或缺失都会直接报错而非静默产出残缺数据materialize_searchqa.py。默认路径均可用命令行参数覆盖python scripts/materialize_searchqa.py \ --manifest-dir data/searchqa_id_split \ --output-dir data/searchqa_split \ --dataset lucadiliello/searchqa物化后的data/searchqa_split/正是configs/searchqa/default.yaml中env.split_dir: data/searchqa_split所指的预划分目录。3. 配置模型后端与环境变量训练/评估都需要至少一个可用的模型后端。按 安装指南 的说明从源码检出复制环境模板并只填写你要用的后端cp .env.example .env # 编辑 .env选择一种认证方式然后导出到当前 shell set -a; source .env; set a注意 SkillOpt 不会自动加载.env必须显式 source 导出。以 Azure OpenAI API Key 认证为例最小配置为AZURE_OPENAI_ENDPOINThttps://your-resource.openai.azure.com/ AZURE_OPENAI_API_VERSION2024-12-01-preview AZURE_OPENAI_API_KEYyour-key AZURE_OPENAI_AUTH_MODEapi_key角色化后端optimizer 与 targetSkillOpt 将模型拆分为两个角色见 配置指南optimizer_backend/optimizer负责反射分析与技能编辑类比“计算梯度/参数更新”target_backend/target负责任务 rollout 执行类比“前向传播”。遗留的backend字段仅作向后兼容的高层标签显式指定两个角色字段是最清晰的配置方式。基础_base_配置中默认optimizer: gpt-5.5、target: gpt-5.5、角色后端均为openai_chatconfigs/base/default.yaml。支持的聊天/执行后端及其可担任角色后端OptimizerTarget配置说明openai_chat✓✓Azure OpenAI或其显式兼容认证模式openai_compatible✓✓通用 OpenAI Chat Completions 端点claude_chat✓✓Claude Code CLIclaude -pqwen_chat✓✓通过 OpenAI 兼容端点服务的 Qwen自托管 vLLM/SGLang 或托管网关minimax_chat✓✓MiniMax APIcopilot_chat✓✓GitHub Copilot CLIcopilot -p别名copilotcodex_exec—✓Codex CLI 执行 harnessclaude_code_exec—✓Claude Code CLI 执行 harnesscursor_exec—✓Cursor Agent CLI 执行 harnesscopilot_exec—✓GitHub Copilot CLI 执行 harness完整的环境变量清单端点、API Key、认证模式、CLI 路径等请查阅 配置指南 与 配置参考。例如copilot_chat通过本地已登录的 CLI 同时充当两个角色--backend copilot即可跑完整训练而无需独立供应商 API Key推理仍走 GitHub Copilot 云服务注意其每次调用约 20–40 秒且不回报 token 用量。查看并理解 SearchQA 配置文件cat configs/searchqa/default.yamlconfigs/searchqa/default.yaml通过_base_: ../_base_/default.yaml继承全局默认值并覆写 SearchQA 专属参数configs/searchqa/default.yaml。关键参数及深度学习类比train: num_epochs: 4 # (epochs) batch_size: 40 # (batch size) optimizer: learning_rate: 4 # (max edits per step) lr_scheduler: cosine # (learning rate schedule) use_slow_update: true # (momentum at epoch boundary) use_meta_skill: true # (cross-epoch optimizer memory) gradient: analyst_workers: 16 # (parallel reflection workers) evaluation: use_gate: true # (validation gating)对照 配置指南 与 configs/base/default.yaml 中的完整定义这些参数的含义如下train.num_epochs默认 4训练轮数train.batch_size默认 40为每步任务数train.accumulation默认 1类比梯度累积train.seed默认 42optimizer.learning_rate默认 4每步最多应用的编辑条数edit budget类比梯度裁剪防止“步子迈太大”optimizer.min_learning_rate默认 2为衰减调度器的编辑下限lr_scheduler可选constant | linear | cosine | autonomousoptimizer.use_slow_updateepoch 边界的动量式混合纵向对比与指导optimizer.slow_update_samples默认 20为慢更新评估样本数optimizer.use_meta_skill跨 epoch 的优化器记忆策略笔记gradient.analyst_workers默认 16并行反射 worker 数gradient.minibatch_size默认 8为反射小批次大小gradient.failure_only默认 false为仅对失败样本做反射evaluation.use_gate默认与论文设置均为 true验证门控接受/拒绝更新关闭后仍记录选择分数但强制接受每个候选会改变优化语义应在报告中显式说明。SearchQA 专属配置还包含env.split_mode: split_dir使用预划分目录而非按比例切分、env.split_dir: data/searchqa_split、env.skill_init: skillopt/envs/searchqa/skills/initial.md初始技能文档、env.max_turns: 1单轮 QA、env.max_completion_tokens: 16384、env.workers: 24等。4. 启动训练配置好环境变量后执行python scripts/train.py \ --config configs/searchqa/default.yaml \ --out_root outputs/searchqa_first_runtrain.py启动后会打印解析后的环境、优化器模型、目标模型、两个角色后端、epoch、batch_size、edit_budget、lr_scheduler、update_mode、seed、meta_skill、skill_aware_reflection、slow_update 与最终输出目录等概要信息随后按步打印 rollout 与门控进度scripts/train.py。训练循环的六个阶段该命令背后的主循环在skillopt/engine/trainer.py的ReflACTTrainer中实现与 训练循环指南 描述一致Rollout前向传播target 模型使用当前技能文档作为提示词执行一批任务产出轨迹与分数Reflect反向传播optimizer 模型分析轨迹小批次生成结构化的编辑补丁patch失败小批次始终可分析成功轨迹仅在gradient.failure_only关闭时也分析独立小批次按gradient.analyst_workers并发Aggregate将语义相似的编辑补丁合并避免冗余修改Select梯度裁剪按相关性分数对编辑排序learning_rate决定每步实际应用多少条top_k(edits, klearning_rate)lr_scheduler随训练调整该数值Update参数更新将选中的编辑应用到技能文档产生新版本Gate验证在 selection 划分上评估更新后的技能仅当其门控分数严格高于当前技能分数时才接受。Epoch 边界处还有两个机制Slow Update自 epoch 2 起对上一 epoch 与当前技能的技能在同一批样本上做纵向对比产出高层指导用于对抗跨 epoch 遗忘与Meta Skill跨 epoch 累积高层策略记忆并在后续反射/更新阶段作为额外上下文。门控实现细节门控决策是纯函数位于 skillopt/evaluation/gate.py支持hard硬精确匹配准确率默认、soft逐样本软分数适合 selection 集过小时与mixed(1-w)*hard w*softgate_mixed_weight默认 0.5三种指标还可选开启use_semantic_density指令密度奖励对MUST/ALWAYS/NEVER等高影响力词占比加分默认权重 0.05。返回accept_new_best / accept / reject三种动作训练器据此更新当前技能与历史最佳技能。命令行覆盖任何配置除 YAML 外任何配置值都可在命令行覆盖python scripts/train.py \ --config configs/searchqa/default.yaml \ --cfg-options \ optimizer.learning_rate16 \ optimizer.lr_schedulerlinear \ gradient.analyst_workers8train.py的配置加载链路为YAML含_base_继承→--cfg-options点分键覆盖 → 遗留扁平 CLI 参数映射为结构化键 → 扁平化交给训练器scripts/train.py。若未显式传--out_root入口会按outputs/skillopt_env_optimizer_model_时间戳自动生成输出目录并转为绝对路径。5. 监控运行产物上面显式指定的--out_root会生成如下运行目录outputs/searchqa_first_run/ ├── config.json ├── runtime_state.json ├── history.json ├── best_skill.md ├── skills/ │ └── skill_vXXXX.md ├── steps/ │ └── step_XXXX/ │ ├── candidate_skill.md │ ├── step_record.json │ └── trajectory_digest.json ├── slow_update/ │ └── epoch_XX/ └── meta_skill/ └── epoch_XX/各产物的作用config.json本次运行解析后的完整扁平配置快照用于复现与审计runtime_state.json运行时状态当前技能、最佳技能、最佳步、门控分数等history.json训练历史记录best_skill.md训练全程门控接受的历史最佳技能文档即最终可部署产物skills/skill_vXXXX.md每次更新产生的技能版本快照steps/step_XXXX/每一步的候选技能、步记录与轨迹摘要slow_update/epoch_XX/与meta_skill/epoch_XX/epoch 边界的慢更新输出与元技能记忆。6. 评估最佳技能训练结束后用测试划分评估最佳技能python scripts/eval_only.py \ --config configs/searchqa/default.yaml \ --skill outputs/searchqa_first_run/best_skill.md \ --split valid_unseen要点说明--skill指向训练产物best_skill.md也可指向任意技能文档如skillopt/envs/searchqa/skills/initial.md--split的可选值为train / valid_seen / valid_unseen / all默认all由 eval_only.py 的 CLI 定义给出all会依次构建 train、valid_seen、valid_unseen 三个评估环境并合并评估会写入自己的时间戳目录outputs/eval_.../格式outputs/eval_env_target_model_时间戳除非显式传--out_root它不会覆盖训练运行目录评估结束会在该目录写eval_summary.json包含技能路径、划分、样本数与hard/soft分数并在终端打印Results: hard... soft... (n...)eval_only.py。eval_only.py与train.py共享同一套后端初始化逻辑加载配置 → 应用 CLI 覆盖 → 根据backend高层标签映射两个角色后端 → 初始化各后端Azure、Qwen、MiniMax、Codex/Claude Code/Cursor/Copilot exec 等→ 通过适配器如skillopt/envs/searchqa/adapter.py构建评估环境并执行 rollout。7. WebUI 图形化训练如果你更偏好图形界面可以安装并启动 WebUIpip install -e .[webui] python -m skillopt_webui.app然后在浏览器打开http://localhost:7860配置参数并启动训练。默认监听主机为0.0.0.0仅限本机访问时传--host 127.0.0.1。WebUI 入口位于 skillopt_webui/app.py。8. 进一步学习理解训练循环SkillOpt 的“技能文档优化 ≈ 神经网络训练”六阶段类比配置参考完整参数清单新增基准如何为 SkillOpt 接入你自己的任务环境配置指南模型后端与环境变量细节至此你已经完成了一次完整的 SkillOpt 首次实验物化 SearchQA 数据、配置角色化模型后端、启动门控训练、监控产物目录并在测试划分上评估best_skill.md。这套“轨迹驱动编辑 验证门控 可部署技能产物”的流程可以直接迁移到仓库内置的其他基准DocVQA、ALFWorld 等或你自己定义的任务环境中。赞分享人工智能大模型AI Agent提示工程【免费下载链接】SkillOptSkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.项目地址https://gitcode.com/gh_mirrors/sk/SkillOpt点击查看免费下载相关推荐torchtune 首次微调实战指南用 tune CLI 从模型下载到 LoRA 训练跑通全流程torchtune 首次微调实战指南用 tune CLI 从模型下载到 LoRA 训练跑通全流程 本文以 torchtune 官方教程「Fine Tune Y大模型微调RLHF分布式训练模型量化TigerBeetle Ruby 客户端实战从零跑通建账户—转账—验余额全流程TigerBeetle Ruby 客户端实战从零跑通建账户—转账—验余额全流程 本篇指南以仓库中的 Basic Ruby Sample https://l数据库金融科技分布式数据库后端Ultimate Vocal Remover v5.6 使用教程从安装到第一次人声分离跑通Ultimate Vocal Remover v5.6 使用教程从安装到第一次人声分离跑通 Ultimate Vocal Remover简称 UVR当前版音频处理人工智能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表