Skip to content

Commit bd44b1d

Browse files
committed
add filter
1 parent 9aa07d6 commit bd44b1d

9 files changed

Lines changed: 102 additions & 44 deletions

File tree

backend/modules/evaluation/application/convertor/experiment/filter.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,11 @@ func (e *ExptFilterConvertor) ConvertFilters(ctx context.Context, filters *domai
8181
continue
8282
}
8383
ff.CreatedBy = intersectIgnoreNull(ff.CreatedBy, []string{cond.GetValue()})
84+
case domain_expt.FieldType_UpdatedBy:
85+
if len(cond.GetValue()) == 0 {
86+
continue
87+
}
88+
ff.UpdatedBy = intersectIgnoreNull(ff.UpdatedBy, []string{cond.GetValue()})
8489
case domain_expt.FieldType_ExptStatus:
8590
if len(cond.GetValue()) == 0 {
8691
continue
@@ -426,6 +431,9 @@ func ConvertExptTurnResultFilterAccelerator(experimentFilter *domain_expt.Experi
426431
case domain_expt.FieldType_EvaluatorScore:
427432
// 评估器相关,通常为float类型
428433
result.MapCond.EvaluatorScoreFilters = append(result.MapCond.EvaluatorScoreFilters, fieldFilter)
434+
case domain_expt.FieldType_EvaluatorWeightedScore:
435+
// 加权得分,通常为float类型
436+
result.MapCond.EvaluatorWeightedScoreFilter = fieldFilter
429437
case domain_expt.FieldType_ItemRunState:
430438
result.ItemRunStatus = append(result.ItemRunStatus, fieldFilter)
431439
// case domain_expt.FieldType_TurnRunState: // turn_run_state废弃

backend/modules/evaluation/domain/entity/expt_result.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,7 @@ type ExptListFilter struct {
392392

393393
type ExptFilterFields struct {
394394
CreatedBy []string
395+
UpdatedBy []string
395396
Status []int64
396397
EvalSetIDs []int64
397398
TargetIDs []int64
@@ -524,12 +525,13 @@ func NewSession(ctx context.Context) *Session {
524525
}
525526

526527
type ExptTurnResultFilterMapCond struct {
527-
EvalTargetDataFilters []*FieldFilter
528-
EvaluatorScoreFilters []*FieldFilter
529-
AnnotationFloatFilters []*FieldFilter
530-
AnnotationBoolFilters []*FieldFilter
531-
AnnotationStringFilters []*FieldFilter
532-
EvalTargetMetricsFilters []*FieldFilter
528+
EvalTargetDataFilters []*FieldFilter
529+
EvaluatorScoreFilters []*FieldFilter
530+
EvaluatorWeightedScoreFilter *FieldFilter
531+
AnnotationFloatFilters []*FieldFilter
532+
AnnotationBoolFilters []*FieldFilter
533+
AnnotationStringFilters []*FieldFilter
534+
EvalTargetMetricsFilters []*FieldFilter
533535
}
534536

535537
type FieldFilter struct {
@@ -745,6 +747,7 @@ type ExptTurnResultFilterEntity struct {
745747
Status ItemRunState `json:"status"`
746748
EvalTargetData map[string]string `json:"eval_target_data"`
747749
EvaluatorScore map[string]float64 `json:"evaluator_score"`
750+
EvaluatorWeightedScore *float64 `json:"evaluator_weighted_score"`
748751
AnnotationFloat map[string]float64 `json:"annotation_float"`
749752
AnnotationBool map[string]bool `json:"annotation_bool"`
750753
AnnotationString map[string]string `json:"annotation_string"`

backend/modules/evaluation/domain/service/expt_result_impl.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,6 +1188,8 @@ func (b *PayloadBuilder) fillExptTurnResultFilters(ctx context.Context, createdD
11881188
if ok {
11891189
exptTurnResultFilter.EvaluatorScoreCorrected = evaluatorScoreCorrected
11901190
}
1191+
// 填充加权得分
1192+
exptTurnResultFilter.EvaluatorWeightedScore = gptr.Of(exptTurnResult.WeightedScore)
11911193
exptTurnResultFilter.UpdatedAt = updatedAt
11921194
b.ExptTurnResultFilters = append(b.ExptTurnResultFilters, exptTurnResultFilter)
11931195
}

backend/modules/evaluation/infra/repo/experiment/ck/convertor/expt_turn_result_filter.go

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ package convertor
66
import (
77
"strconv"
88

9+
"github.com/bytedance/gg/gptr"
10+
911
"github.com/coze-dev/coze-loop/backend/modules/evaluation/domain/entity"
1012
"github.com/coze-dev/coze-loop/backend/modules/evaluation/infra/repo/experiment/ck/gorm_gen/model"
1113
)
@@ -26,21 +28,22 @@ func ExptTurnResultFilterEntity2PO(filterEntity *entity.ExptTurnResultFilterEnti
2628
}
2729

2830
exptTurnResultFilter := &model.ExptTurnResultFilter{
29-
SpaceID: strconv.FormatInt(filterEntity.SpaceID, 10),
30-
ExptID: strconv.FormatInt(filterEntity.ExptID, 10),
31-
ItemID: strconv.FormatInt(filterEntity.ItemID, 10),
32-
ItemIdx: filterEntity.ItemIdx,
33-
TurnID: strconv.FormatInt(filterEntity.TurnID, 10),
34-
Status: int32(filterEntity.Status),
35-
EvalTargetData: filterEntity.EvalTargetData,
36-
EvaluatorScore: filterEntity.EvaluatorScore,
37-
AnnotationFloat: filterEntity.AnnotationFloat,
38-
AnnotationBool: annotationBool,
39-
AnnotationString: filterEntity.AnnotationString,
40-
EvalTargetMetrics: filterEntity.EvalTargetMetrics,
41-
CreatedDate: filterEntity.CreatedDate,
42-
EvalSetVersionID: strconv.FormatInt(filterEntity.EvalSetVersionID, 10),
43-
UpdatedAt: filterEntity.UpdatedAt,
31+
SpaceID: strconv.FormatInt(filterEntity.SpaceID, 10),
32+
ExptID: strconv.FormatInt(filterEntity.ExptID, 10),
33+
ItemID: strconv.FormatInt(filterEntity.ItemID, 10),
34+
ItemIdx: filterEntity.ItemIdx,
35+
TurnID: strconv.FormatInt(filterEntity.TurnID, 10),
36+
Status: int32(filterEntity.Status),
37+
EvalTargetData: filterEntity.EvalTargetData,
38+
EvaluatorScore: filterEntity.EvaluatorScore,
39+
EvaluatorWeightedScore: gptr.Indirect(filterEntity.EvaluatorWeightedScore),
40+
AnnotationFloat: filterEntity.AnnotationFloat,
41+
AnnotationBool: annotationBool,
42+
AnnotationString: filterEntity.AnnotationString,
43+
EvalTargetMetrics: filterEntity.EvalTargetMetrics,
44+
CreatedDate: filterEntity.CreatedDate,
45+
EvalSetVersionID: strconv.FormatInt(filterEntity.EvalSetVersionID, 10),
46+
UpdatedAt: filterEntity.UpdatedAt,
4447
}
4548
if filterEntity.EvaluatorScoreCorrected {
4649
exptTurnResultFilter.EvaluatorScoreCorrected = 1
@@ -61,20 +64,21 @@ func ExptTurnResultFilterPO2Entity(filterPO *model.ExptTurnResultFilter) *entity
6164
}
6265

6366
exptTurnResultFilterEntity := &entity.ExptTurnResultFilterEntity{
64-
SpaceID: ParseStringToInt64(filterPO.SpaceID),
65-
ExptID: ParseStringToInt64(filterPO.ExptID),
66-
ItemID: ParseStringToInt64(filterPO.ItemID),
67-
ItemIdx: filterPO.ItemIdx,
68-
TurnID: ParseStringToInt64(filterPO.TurnID),
69-
Status: entity.ItemRunState(filterPO.Status),
70-
EvalTargetData: filterPO.EvalTargetData,
71-
EvaluatorScore: filterPO.EvaluatorScore,
72-
AnnotationFloat: filterPO.AnnotationFloat,
73-
AnnotationBool: annotationBool,
74-
AnnotationString: filterPO.AnnotationString,
75-
EvalTargetMetrics: filterPO.EvalTargetMetrics,
76-
CreatedDate: filterPO.CreatedDate,
77-
EvalSetVersionID: ParseStringToInt64(filterPO.EvalSetVersionID),
67+
SpaceID: ParseStringToInt64(filterPO.SpaceID),
68+
ExptID: ParseStringToInt64(filterPO.ExptID),
69+
ItemID: ParseStringToInt64(filterPO.ItemID),
70+
ItemIdx: filterPO.ItemIdx,
71+
TurnID: ParseStringToInt64(filterPO.TurnID),
72+
Status: entity.ItemRunState(filterPO.Status),
73+
EvalTargetData: filterPO.EvalTargetData,
74+
EvaluatorScore: filterPO.EvaluatorScore,
75+
EvaluatorWeightedScore: gptr.Of(filterPO.EvaluatorWeightedScore),
76+
AnnotationFloat: filterPO.AnnotationFloat,
77+
AnnotationBool: annotationBool,
78+
AnnotationString: filterPO.AnnotationString,
79+
EvalTargetMetrics: filterPO.EvalTargetMetrics,
80+
CreatedDate: filterPO.CreatedDate,
81+
EvalSetVersionID: ParseStringToInt64(filterPO.EvalSetVersionID),
7882
}
7983
if filterPO.EvaluatorScoreCorrected > 0 {
8084
exptTurnResultFilterEntity.EvaluatorScoreCorrected = true

backend/modules/evaluation/infra/repo/experiment/ck/expt_turn_result_filter.go

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,13 @@ type ItemSnapshotFilter struct {
4343
}
4444

4545
type ExptTurnResultFilterMapCond struct {
46-
EvalTargetDataFilters []*FieldFilter
47-
EvaluatorScoreFilters []*FieldFilter
48-
AnnotationFloatFilters []*FieldFilter
49-
AnnotationBoolFilters []*FieldFilter
50-
AnnotationStringFilters []*FieldFilter
51-
EvalTargetMetricsFilters []*FieldFilter
46+
EvalTargetDataFilters []*FieldFilter
47+
EvaluatorScoreFilters []*FieldFilter
48+
EvaluatorWeightedScoreFilter *FieldFilter
49+
AnnotationFloatFilters []*FieldFilter
50+
AnnotationBoolFilters []*FieldFilter
51+
AnnotationStringFilters []*FieldFilter
52+
EvalTargetMetricsFilters []*FieldFilter
5253
}
5354

5455
type KeywordMapCond struct {
@@ -284,6 +285,37 @@ func (d *exptTurnResultFilterDAOImpl) buildMapFieldConditions(cond *ExptTurnResu
284285
*args = append(*args, floatValue1, floatValue2)
285286
}
286287
}
288+
// 处理加权得分查询条件
289+
if cond.MapCond.EvaluatorWeightedScoreFilter != nil {
290+
f := cond.MapCond.EvaluatorWeightedScoreFilter
291+
switch f.Op {
292+
case "=":
293+
floatValue, err := strconv.ParseFloat(fmt.Sprintf("%v", f.Values[0]), 64)
294+
if err != nil {
295+
logs.CtxError(context.Background(), "Parse float value failed: %v", err)
296+
} else {
297+
*whereSQL += fmt.Sprintf(" AND abs(etrf.evaluator_weighted_score - ?) < %g", floatEpsilon)
298+
*args = append(*args, floatValue)
299+
}
300+
case ">", ">=", "<", "<=", "!=":
301+
floatValue, err := strconv.ParseFloat(fmt.Sprintf("%v", f.Values[0]), 64)
302+
if err != nil {
303+
logs.CtxError(context.Background(), "Parse float value failed: %v", err)
304+
} else {
305+
*whereSQL += fmt.Sprintf(" AND etrf.evaluator_weighted_score %s ?", f.Op)
306+
*args = append(*args, floatValue)
307+
}
308+
case "BETWEEN":
309+
floatValue1, err1 := strconv.ParseFloat(fmt.Sprintf("%v", f.Values[0]), 64)
310+
floatValue2, err2 := strconv.ParseFloat(fmt.Sprintf("%v", f.Values[1]), 64)
311+
if err1 != nil || err2 != nil {
312+
logs.CtxError(context.Background(), "Parse float value failed: %v, %v", err1, err2)
313+
} else {
314+
*whereSQL += " AND etrf.evaluator_weighted_score BETWEEN ? AND ?"
315+
*args = append(*args, floatValue1, floatValue2)
316+
}
317+
}
318+
}
287319
for _, f := range cond.MapCond.AnnotationFloatFilters {
288320
switch f.Op {
289321
case "=":
@@ -573,6 +605,7 @@ func (d *exptTurnResultFilterDAOImpl) buildGetByExptIDItemIDsSQL(ctx context.Con
573605
"etrf.evaluator_score['key8'] as evaluator_score_key_8, " +
574606
"etrf.evaluator_score['key9'] as evaluator_score_key_9, " +
575607
"etrf.evaluator_score['key10'] as evaluator_score_key_10, " +
608+
"etrf.evaluator_weighted_score, " +
576609
"etrf.evaluator_score_corrected " +
577610
"FROM " + getClickHouseDatabaseName() + ".expt_turn_result_filter" + " etrf " +
578611
"WHERE etrf.space_id = ? AND etrf.expt_id = ? AND etrf.created_date =?"

backend/modules/evaluation/infra/repo/experiment/ck/gorm_gen/model/expt_turn_result_filter.gen.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/modules/evaluation/infra/repo/experiment/ck/model/expt_turn_result_filter.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ type ExptTurnResultFilter struct {
2222
EvaluatorScoreKey7 *float64 `gorm:"column:evaluator_score_key_7"`
2323
EvaluatorScoreKey8 *float64 `gorm:"column:evaluator_score_key_8"`
2424
EvaluatorScoreKey9 *float64 `gorm:"column:evaluator_score_key_9"`
25-
EvaluatorScoreKey10 *float64 `gorm:"column:evaluator_score_key_10"`
26-
EvaluatorScoreCorrected int32 `gorm:"column:evaluator_score_corrected"`
27-
EvalSetVersionID string `gorm:"column:eval_set_version_id"`
25+
EvaluatorScoreKey10 *float64 `gorm:"column:evaluator_score_key_10"`
26+
EvaluatorWeightedScore *float64 `gorm:"column:evaluator_weighted_score"`
27+
EvaluatorScoreCorrected int32 `gorm:"column:evaluator_score_corrected"`
28+
EvalSetVersionID string `gorm:"column:eval_set_version_id"`
2829
CreatedDate time.Time `gorm:"column:created_date"`
2930
UpdatedAt time.Time `gorm:"column:updated_at"`
3031
CreatedAt time.Time `gorm:"column:created_at"`

backend/modules/evaluation/infra/repo/experiment/mysql/expt.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,11 @@ func (d *exptDAOImpl) toConditions(f *entity.ExptListFilter, orders []*entity.Or
182182
return db.Where(fmt.Sprintf("%screated_by %s (?)", exptPrefix, scopeComparator), ffields.CreatedBy)
183183
})
184184
}
185+
if ffields != nil && len(ffields.UpdatedBy) > 0 {
186+
conds = append(conds, func(db *gorm.DB) *gorm.DB {
187+
return db.Where(fmt.Sprintf("%supdated_by %s (?)", exptPrefix, scopeComparator), ffields.UpdatedBy)
188+
})
189+
}
185190
if ffields != nil && len(ffields.TargetIDs) > 0 {
186191
conds = append(conds, func(db *gorm.DB) *gorm.DB {
187192
return db.Where(fmt.Sprintf("%starget_id %s (?)", exptPrefix, scopeComparator), ffields.TargetIDs)

release/deployment/docker-compose/bootstrap/clickhouse-init/init-sql/evaluation.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ CREATE TABLE IF NOT EXISTS expt_turn_result_filter
2121
`created_at` DateTime,
2222
`updated_at` DateTime,
2323
`eval_target_metrics` Map(String, Int64),
24+
`evaluator_weighted_score` Float64
2425
INDEX idx_space_id space_id TYPE bloom_filter() GRANULARITY 1,
2526
INDEX idx_expt_id expt_id TYPE bloom_filter() GRANULARITY 1,
2627
INDEX idx_item_id item_id TYPE bloom_filter() GRANULARITY 1,

0 commit comments

Comments
 (0)