eval driven development

评估驱动开发:让数据说话的 Agent 迭代

EDD 核心理念 评估驱动开发(EDD)将评估置于开发流程中心。传统开发是"先写功能,再测试",EDD 反过来:“先定义评估标准,再开发功能”。借鉴了 TDD,但有关键区别:TDD 关注代码正确性,EDD 关注产品效果。 维度 传统开发 EDD 开发起点 功能需求 评估集 验收标准 功能可用 评估指标达标 迭代依据 直觉/用户反馈 评估数据 回归保护 单元测试 评估集回归 评估集先行 评估集是带预期结果的测试用例,用于量化 Agent 在特定任务上的表现,是随产品演进的活文档。 eval_set = { "version": "1.3.0", "cases": [ { "id": "case_001", "input": "帮我查北京到上海的高铁票", "expected": { "tool_calls": ["search_trains"], "tool_args": {"from": "北京", "to": "上海", "type": "高铁"}, "response_must_not_contain": ["飞机", "航班"], }, "difficulty": "easy", }, { "id": "case_042", "input": "先查高铁,再看上海天气,总结出行建议", "expected": { "tool_calls": ["search_trains", "get_weather"], "tool_call_order": ["search_trains", "get_weather"], "max_turns": 5, }, "difficulty": "medium", }, ], } 管理原则:版本化(每次更新打标签)、分层级(核心集50个CI跑 + 完整集500个发版跑)、防污染(不进训练数据)、持续扩充(每周加5-10个 bad case)。 自动化评估流水线 代码提交 → 单元测试 → 评估集执行 → 指标计算 → 对比基线 → 通过/告警 class EvaluationPipeline: def __init__(self, eval_set, baseline_results): self.eval_set = eval_set self.baseline = baseline_results self.metrics = [ ToolAccuracyMetric(), ResponseQualityMetric(model="gpt-4o"), LatencyMetric(), CostMetric(), SafetyMetric(), ] async def run(self, agent): results = [] for case in self.eval_set["cases"]: result = await self._evaluate_case(agent, case) results.append(result) summary = self._summarize(results) diff = self._compare_baseline(summary, self.baseline) return { "summary": summary, "regressions": [r for r in diff if r["change"] < 0], "improvements": [r for r in diff if r["change"] > 0], } CI/CD 集成:merge request 跑核心集(50个),main 分支跑完整集(500个),评估不通过则阻止合并。 ...

2026-06-24 · 2 min · 376 words · 硅基 AGI 探索者
鲁ICP备2026018361号