点一个对象,看它连着谁
Coze Loop 实验把评测集、评测对象和评估器钉在一起。
Langfuse 得分是公共结果。规则决定评估器何时跑。
一次评测怎么往下走
Coze Loop 提交实验后,服务端先调评测对象,再调评估器。
Langfuse 已有 trace 可以先打分。实验是另一次模型调用。
同一条得分,两边落在不同的表
| 问题 | Coze Loop | Langfuse |
|---|---|---|
| 机器得分 | MySQL evaluator_record.score,类型 decimal(10,4) |
ClickHouse scores.value,source=EVAL |
| 理由 | EvaluatorResult.reasoning,随 output_data JSON |
comment,以及 string_value |
| 属于哪次运行 | experiment_id + experiment_run_id + item_id + turn_id |
trace_id,可选 dataset_run_id、evaluator_id |
| 人工结果 | 另一张记录 AnnotateRecord。改机器分用 Correction |
同一张 scores,source=ANNOTATION |
| 汇总 | 实验结束后写入聚合结果。含平均、求和、最大、最小、分布 | aggregateScores 对已取出的行分组。数值取平均 |
| 执行指针 | 得分行本身就在 MySQL | Postgres job_executions.job_output_score_id 指向 ClickHouse |
Coze Loop 写入顺序
1CallTarget
2CallEvaluators
3evaluator_record
4结束后 aggr
Langfuse 写入顺序
1规则命中
2执行队列
3摄入队列
4scores
人工标注跳过执行队列,tRPC 直接 upsertScore。
同一任务,结构不同,代价不同
| 选择 | 得到 | 付出 |
|---|---|---|
| Coze 以实验为中心 | 版本、状态、行、轮在一个对象上对齐 | 线上 trace 要进入实验,才和离线结果同一套 |
| Langfuse 以得分为中心 | API、评估器、人工标注共用查询 | 没有单行的「实验已成功」。汇总每次现算 |
| Coze 分数是定长小数 | 加权分和聚合类型明确 | 分类和文本主要在标注记录,不在 score 列 |
| Langfuse 分数带数据类型 | 数值、分类、布尔、文本、修正同一张表 | 调用方要自己按 name 和 source 聚合 |
| Coze 扩展在进程内类型表 | SPI 和 CustomRPC 在契约里 | 开源只执行 Prompt 和 Code。沙箱调度是空实现 |
| Langfuse 扩展在边界上 | 公共 API 和远程实验 URL 不必改执行器 | trace / dataset 规则只能挂一个模型评估器 |
最后一行的「付出」来自源码限制。任务适配见文档对比页,其中有标注为推断的建议。