AntOmniEvo上手实操:System、Evaluator、DataInst三大必写组件怎么写
【免费下载链接】AntOmniEvoAn auto-evolution framework that optimizes anything — your 7×24 team of algorithm engineers.项目地址https://gitcode.com/gh_mirrors/an/AntOmniEvo点击查看免费下载AntOmniEvo 是一个开源的 AI 系统自进化auto-evolution框架它把优化变成改文件你只需定义好系统怎么跑、怎么打分、数据长什么样框架负责进化主循环AI coding agent 负责改写可调产物。本文带你上手实操手把手讲清 AntOmniEvo 三大必写组件 System、Evaluator、DataInst 的设计契约、目录约定和常见坑零基础也能照着仓库里的参照实现跑起来。先给结论——AntOmniEvo 把「通用机器」和「任务插件」严格分离。框架自带 7 个可插拔组件其中只有目标侧的 3 个需要你亲自写组件职责要不要自己写System用候选的可调产物跑被优化系统返回轨迹 输出✅必写Evaluator给系统输出打 0–1 分打分标准即优化目标✅必写DataInst loader定义一条评估实例与数据加载方式✅必写Optimizer/Proposer/EvolutionAlgorithm/CandidateStore主循环、改写 agent、选择淘汰、落盘持久化默认实现够用通常不用也就是说scoring_criteria()里的打分规则就是你写的优化目标函数AI 会朝着它不断进化。完整组件清单见 docs/extensibility.zh-CN.md。环境准备克隆仓库并安装核心框架Python ≥ 3.10。克隆仓库后安装核心包约 1 分钟git clone https://gitcode.com/gh_mirrors/an/AntOmniEvo cd AntOmniEvo/antomnievo pip install -e .写组件前强烈建议先通读三份接口定义每个都只有几十行是全框架最重要的契约数据实例基类interface/data_inst.py系统运行基类interface/system.py打分器基类interface/evaluator.py第一步写 DataInst——定义好的标准DataInst是一个 pydantic 模型基类只强制 3 个字段其余字段随你的领域自由扩展字段含义id实例唯一标识贯穿运行记录、分数、归因链query输入问题 / 需求golden_answer标准答案结构化对象先json.dumps成字符串以仓库里的 MuSiQue 多跳问答为例dataset/musique/musique_data_inst.py子类只加了一个领域字段golden_context并提供from_raw()从原始 JSONL 构建实例class MusiqueDataInst(DataInst): golden_context: str Field(default, descriptionGolden context paragraphs ...) classmethod def from_raw(cls, item: dict) - MusiqueDataInst: return cls(idstr(item[id]), queryitem[question], golden_answeritem.get(answer, ), ...)配套再写一个loader读 JSONL/JSON 文件返回list[YourDataInst]train/val 怎么切随你。参照 dataset/bird/birdtest_dataset_loader.py 的load_birdtest_dataset()即可——支持max_samples截断与shuffle非常适合优化时先用小样本冒烟。 经验法则id用字符串、golden_answer尽量包含评分需要的全部信息这样 Evaluator 阶段不必再回查原始数据。第二步写 System——让候选产物真正跑起来System的契约极简接一个候选CandidateMeta 一条DataInst返回SystemResult轨迹 输出 token 用量。它的抽象方法在 interface/system.py。返回结构SystemResult只有 3 个字段model/system_result.pytrajectory逐步推理与工具调用span 树——AI 分析失败靠的就是它别留空output系统最终答案字符串usagetoken 用量没有就留NoneSystem 有两种写法按你的系统形态二选一形态 A进程内直接跑Agent、workflow、纯 Python 算法——实现_run方法基类自带的信号量会帮你控制并发run_batch自动 fan-out什么都不用额外写。最简参照是 RAG 场景的 system/langgraph/react_agent_system.py。形态 B整批调子进程外部 CLI、容器化运行时——重写run_batch一次子进程处理整批再从输出目录逐条读回结果。参照 system/text2sql/text2sql_system.pyasync def run_batch(self, candidate_meta, data_list, *, output_dir, contexts_path, **kwargs): skill_dir os.path.join(candidate_meta.artifact_dir, skill) # ← 关键 cmd [self.python_path, self.generate_script, --skill_dir, skill_dir, ...] proc await loop.run_in_executor(None, lambda: subprocess.run(cmd, capture_outputTrue, ...)) # 逐条 data_inst 读回产物 → SystemResult(trajectory..., outputRolloutResult(content...), usage...)两个必须记住的要点candidate_meta.artifact_dir是承重墙它指向当前候选的可调产物目录。你的系统必须从这个目录读 skill/prompt/配置——这是进化真正生效的地方每换一代候选这里就换一份文件。system_description()要认真写它会被注入分析 prompt告诉 AI 你的系统输入什么、能用什么工具、产出什么。写错或留空AI 会把系统/数据问题错误归因到可调产物头上详见 text2sql 的写法。第三步写 Evaluator——打分标准就是优化目标Evaluator有两个抽象成员interface/evaluator.pyscoring_criteria()→ 返回一段自然语言说明拿什么比、分数各代表什么、哪些规则决定高低分。这段文字会直接注入 Proposer 的 prompt——它是 AI 理解优化目标的唯一来源是整个组件里信息密度最高的一行代码。_evaluate(data_inst, system_result)→ 返回EvaluationResult字段契约见 model/evaluation_result.py字段要求data_id与DataInst.id对齐metric_name指标名如BirdTestEXscore必须归一化到 [0, 1]原始指标是 0–100 或复合分要自己换算reason有信息量写清漏了什么/错在哪空泛的 correct 是坏信号对照 BirdTest 的打分实现evaluator/text2sql/text2sql_evaluator.py它把「执行正确率 EX 效率惩罚 VES」组合成EX × (0.7 0.3 × VES)并在scoring_criteria()里逐条写清楚——这正是打分标准即目标定义的示范AI 进化时会知道正确性压倒效率。子进程形态的 Evaluator 与 System 对称重写evaluate_batch调外部evaluate.py再按data_id匹配逐条解析 score/reason缺结果的 case 给 0 分 明确 reason不要抛异常见 evaluate_batch 实现。组装入口把三大组件串起来写完后用一个入口脚本把组件 数据 超参拼起来核心就是最后那句await optimizer.optimize()。完整可运行的形状见 example/text2sql/birdtest_text2sql.py整批子进程形态和 example/rag/agentic_rag_internal.py最简进程内形态train await load_dataset(train_path) # 你的 DataInst loader val await load_dataset(val_path) store LocalCandidateStore(workspace) system MySystem(concurrency8, ...) # 组件 1 evaluator MyEvaluator() # 组件 2 optimizer Optimizer(systemsystem, proposerproposer, evaluatorevaluator, evolution_algorithmea, candidate_storestore, train_datasettrain, val_datasetval, budgetBudget(max_iterations1000), initial_artifacts_dir/path/to/tasks/my-base) await optimizer.optimize()常见坑清单写组件前先看这里⚠️ 结合仓库文档 skills/eddy-antomnievo-experiment/references/system-recipe.md 的实战总结新手最容易踩的 4 个坑system_description()/scoring_criteria()留空或泛泛→ AI 分析失败时错误归因进化方向跑偏。这两个字符串要像写产品文档一样认真写。trajectory留空→ 空轨迹 没有优化信号AI 无从下手。进程内形态把工具调用做成 span 子树即可仓库提供了现成解析器 common/utils/trajectory_parser.py别自己重写。子进程形态只写了 System/Evaluator没写 Optimizer 子类→ 基类调run_batch/evaluate_batch不传 kwargs你的output_dir/cases_path参数没人传。System、Evaluator、Optimizer 子类是一对联配套写签名必须对齐。轨迹文件不做截断→ 大 tool output 原样落盘会浪费磁盘和 AI 分析 token大输出要截断并保留truncated标记。跑起来之后用 Visualizer 验收进化过程每个候选、每次运行、每条分析、每个 changelog 都会落盘到workspace/目录store/candidate_store.py可随时中断、断点续跑见 docs/checkpoint-resume.zh-CN.md。装好可视化器后一条命令启动pip install -e ./visualizer cd visualizer npm install antomnievo-visualizer-manage start --workspace /path/to/workspace/run在网页端可以直观看到三大组件的工作成果最优分数曲线Stats、逐题得分覆盖网格Insights、候选之间的血缘树Lineage每个文件修改都能追溯到引发它的失败证据。小结AntOmniEvo 的分工非常清晰你定义怎么跑、怎么打分、什么是好System / Evaluator / DataInst框架控制进化循环AI agent 负责改写文件。三大组件加起来的核心代码量通常不超过 300 行仓库里antomnievo/system/、antomnievo/evaluator/、antomnievo/dataset/下都有 4 个以上可直接对照的场景参照实现。挑一个与你系统形态最接近的目录通读一遍替换成自己的领域逻辑你的第一个自进化优化任务就可以跑起来了。赞分享【免费下载链接】AntOmniEvoAn auto-evolution framework that optimizes anything — your 7×24 team of algorithm engineers.项目地址https://gitcode.com/gh_mirrors/an/AntOmniEvo点击查看免费下载相关推荐Create React App 在 Heroku 上 npm run build 因文件路径大小写失败怎么排查Create React App 在 Heroku 上 npm run build 因文件路径大小写失败怎么排查 把 Create React App 项目部署前端开发工具CLI构建工具Redux 异步副作用逻辑怎么写thunk 和 saga 怎么选Redux 异步副作用逻辑怎么写thunk 和 saga 怎么选 在 Redux 应用里写异步逻辑发请求、按结果再 dispatch action、需要读前端How-to-Make-a-Computer-Operating-System实战文件读写操作How to Make a Computer Operating System实战文件读写操作 你还在为操作系统开发中的文件读写功能头疼吗从底层实现文件系统操作系统教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考