Skip to content

Commit 9a189ee

Browse files
author
tpfz
committed
add target field
1 parent 785412f commit 9a189ee

3 files changed

Lines changed: 81 additions & 15 deletions

File tree

backend/api/handler/coze/loop/apis/eval_open_apiservice.go

Lines changed: 2 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2039,7 +2039,7 @@ func OpenAPIExperimentFiltersDTO2Domain(filters *openapiExperiment.Filters) (*do
20392039
return nil, nil
20402040
}
20412041
if filters.LogicOp != nil {
2042-
lo := strings.ToLower(strings.TrimSpace(string(*filters.LogicOp)))
2042+
lo := strings.ToLower(strings.TrimSpace(*filters.LogicOp))
20432043
if lo != "" && lo != "and" {
20442044
return nil, fmt.Errorf("only logic_op 'and' is supported for experiment result filters")
20452045
}
@@ -2126,7 +2126,7 @@ func ExperimentResultDomainFiltersNeedAccelerator(f *domainExpt.Filters) bool {
21262126
}
21272127

21282128
func openAPIExperimentFilterFieldTypeToDomain(ft openapiExperiment.FilterFieldType) (domainExpt.FieldType, error) {
2129-
s := strings.TrimSpace(string(ft))
2129+
s := strings.TrimSpace(ft)
21302130
if s == "" {
21312131
return 0, fmt.Errorf("empty field_type")
21322132
}
@@ -2210,7 +2210,7 @@ func openAPIExperimentFilterFieldTypeToDomain(ft openapiExperiment.FilterFieldTy
22102210
}
22112211

22122212
func openAPIExperimentFilterOperatorToDomain(op openapiExperiment.FilterOperatorType) (domainExpt.FilterOperatorType, error) {
2213-
s := strings.TrimSpace(string(op))
2213+
s := strings.TrimSpace(op)
22142214
if s == "" {
22152215
return 0, fmt.Errorf("empty operator")
22162216
}

backend/modules/evaluation/application/eval_openapi_app.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414

1515
domaincommon "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common"
1616
domain_expt "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt"
17+
openapiCommon "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain_openapi/common"
1718
exptpb "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/expt"
1819
"github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/openapi"
1920
"github.com/coze-dev/coze-loop/backend/modules/evaluation/application/convertor/common"
@@ -893,6 +894,81 @@ func (e *EvalOpenAPIApplication) ReportEvalTargetInvokeResult_(ctx context.Conte
893894
return &openapi.ReportEvalTargetInvokeResultResponse{BaseResp: base.NewBaseResp()}, nil
894895
}
895896

897+
func (e *EvalOpenAPIApplication) GetEvalTargetOutputFieldContentOApi(ctx context.Context, req *openapi.GetEvalTargetOutputFieldContentOApiRequest) (r *openapi.GetEvalTargetOutputFieldContentOApiResponse, err error) {
898+
startTime := time.Now().UnixNano() / int64(time.Millisecond)
899+
defer func() {
900+
e.metric.EmitOpenAPIMetric(ctx, req.GetWorkspaceID(), 0, kitexutil.GetTOMethod(ctx), startTime, err)
901+
}()
902+
if req == nil {
903+
return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("req is nil"))
904+
}
905+
if req.GetWorkspaceID() == 0 {
906+
return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("workspace_id is required"))
907+
}
908+
if req.GetExperimentID() == 0 {
909+
return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("experiment_id is required"))
910+
}
911+
if req.GetItemID() == 0 {
912+
return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("item_id is required"))
913+
}
914+
if len(req.GetFieldKeys()) == 0 {
915+
return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("field_keys is required"))
916+
}
917+
918+
err = e.auth.Authorization(ctx, &rpc.AuthorizationParam{
919+
ObjectID: strconv.FormatInt(req.GetExperimentID(), 10),
920+
SpaceID: req.GetWorkspaceID(),
921+
ActionObjects: []*rpc.ActionObject{{Action: gptr.Of(consts.Read), EntityType: gptr.Of(rpc.AuthEntityType_EvaluationExperiment)}},
922+
})
923+
if err != nil {
924+
return nil, err
925+
}
926+
927+
turnResults, err := e.resultSvc.GetExptItemTurnResults(ctx, req.GetExperimentID(), req.GetItemID(), req.GetWorkspaceID(), nil)
928+
if err != nil {
929+
return nil, err
930+
}
931+
if len(turnResults) == 0 {
932+
return nil, errorx.NewByCode(errno.ResourceNotFoundCode, errorx.WithExtraMsg("no turn result found for the given experiment_id and item_id"))
933+
}
934+
935+
targetRecordID := turnResults[0].TargetResultID
936+
if targetRecordID == 0 {
937+
return nil, errorx.NewByCode(errno.ResourceNotFoundCode, errorx.WithExtraMsg("eval target record not found for the given experiment result"))
938+
}
939+
940+
record, err := e.targetSvc.GetRecordByID(ctx, req.GetWorkspaceID(), targetRecordID)
941+
if err != nil {
942+
return nil, err
943+
}
944+
if record == nil {
945+
return nil, errorx.NewByCode(errno.ResourceNotFoundCode, errorx.WithExtraMsg("eval target record not found"))
946+
}
947+
948+
if err := e.targetSvc.LoadRecordOutputFields(ctx, record, req.GetFieldKeys()); err != nil {
949+
return nil, err
950+
}
951+
952+
fieldContents := make(map[string]*openapiCommon.Content)
953+
if record.EvalTargetOutputData != nil && record.EvalTargetOutputData.OutputFields != nil {
954+
keySet := make(map[string]struct{}, len(req.GetFieldKeys()))
955+
for _, k := range req.GetFieldKeys() {
956+
keySet[k] = struct{}{}
957+
}
958+
for k, c := range record.EvalTargetOutputData.OutputFields {
959+
if _, ok := keySet[k]; ok {
960+
fieldContents[k] = common.OpenAPIContentDO2DTO(c)
961+
}
962+
}
963+
}
964+
965+
return &openapi.GetEvalTargetOutputFieldContentOApiResponse{
966+
Data: &openapi.GetEvalTargetOutputFieldContentOpenAPIData{
967+
FieldContents: fieldContents,
968+
},
969+
}, nil
970+
}
971+
896972
func (e *EvalOpenAPIApplication) SubmitExperimentOApi(ctx context.Context, req *openapi.SubmitExperimentOApiRequest) (r *openapi.SubmitExperimentOApiResponse, err error) {
897973
startTime := time.Now().UnixNano() / int64(time.Millisecond)
898974
defer func() {

0 commit comments

Comments
 (0)