diff --git a/backend/modules/evaluation/application/eval_target_app.go b/backend/modules/evaluation/application/eval_target_app.go index a16ea6f88..3f41b598e 100644 --- a/backend/modules/evaluation/application/eval_target_app.go +++ b/backend/modules/evaluation/application/eval_target_app.go @@ -5,10 +5,13 @@ package application import ( "context" + "fmt" "strconv" "sync" "time" + "github.com/pkg/errors" + "github.com/bytedance/gg/gmap" "github.com/bytedance/gg/gptr" @@ -27,6 +30,7 @@ import ( "github.com/coze-dev/coze-loop/backend/modules/evaluation/pkg/errno" "github.com/coze-dev/coze-loop/backend/pkg/errorx" "github.com/coze-dev/coze-loop/backend/pkg/json" + "github.com/coze-dev/coze-loop/backend/pkg/logs" ) var _ evaluation.EvalTargetService = &EvalTargetApplicationImpl{} @@ -547,9 +551,11 @@ func (e EvalTargetApplicationImpl) DebugEvalTarget(ctx context.Context, request // return nil, err // } + logID := logs.GetLogID(ctx) + inputFields := make(map[string]*spi.Content) if err := json.Unmarshal([]byte(request.GetParam()), &inputFields); err != nil { - return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("param json unmarshal fail")) + return nil, errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg(fmt.Sprintf("logid: %s, param json unmarshal fail", logID))) } switch request.GetEvalTargetType() { @@ -575,14 +581,19 @@ func (e EvalTargetApplicationImpl) DebugEvalTarget(ctx context.Context, request }, }) if err != nil { - return nil, err + return nil, errors.Wrap(err, fmt.Sprintf("logid: %s", logID)) + } + if record != nil && record.Status != nil && *record.Status == entity.EvalTargetRunStatusFail { + if record.EvalTargetOutputData != nil && record.EvalTargetOutputData.EvalTargetRunError != nil { + record.EvalTargetOutputData.EvalTargetRunError.Message = fmt.Sprintf("logid: %s, %s", logID, record.EvalTargetOutputData.EvalTargetRunError.Message) + } } return &eval_target.DebugEvalTargetResponse{ EvalTargetRecord: target.EvalTargetRecordDO2DTO(record), BaseResp: base.NewBaseResp(), }, err default: - return nil, errorx.New("unsupported eval target type %v", request.GetEvalTargetType()) + return nil, errorx.New("logid: %s, unsupported eval target type %v", logID, request.GetEvalTargetType()) } } diff --git a/backend/modules/evaluation/application/evaluator_app.go b/backend/modules/evaluation/application/evaluator_app.go index 6e43778fe..80a813e54 100644 --- a/backend/modules/evaluation/application/evaluator_app.go +++ b/backend/modules/evaluation/application/evaluator_app.go @@ -1043,6 +1043,11 @@ func (e *EvaluatorHandlerImpl) DebugEvaluator(ctx context.Context, request *eval return nil, errorx.NewByCode(errno.EvaluatorBenefitDenyCode) } + // 检查uri是否传递 + err = e.checkURIs(ctx, request.InputData.InputFields) + if err != nil { + return nil, err + } // URI转换处理 if request.InputData != nil { err = e.transformURIsToURLs(ctx, request.InputData.InputFields) @@ -1241,6 +1246,40 @@ func (e *EvaluatorHandlerImpl) CheckEvaluatorName(ctx context.Context, request * }, nil } +func (e *EvaluatorHandlerImpl) checkURIs(ctx context.Context, inputFields map[string]*evaluatorcommon.Content) error { + for _, field := range inputFields { + switch gptr.Indirect(field.ContentType) { + case evaluatorcommon.ContentTypeMultiPart: + return e.checkURIEmpty(ctx, field.MultiPart) + default: + continue + } + } + return nil +} + +func (e *EvaluatorHandlerImpl) checkURIEmpty(ctx context.Context, inputFields []*evaluatorcommon.Content) error { + for _, field := range inputFields { + switch gptr.Indirect(field.ContentType) { + case evaluatorcommon.ContentTypeImage: + if field.GetImage() != nil && field.GetImage().GetURI() == "" { + return errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("image URI is empty")) + } + case evaluatorcommon.ContentTypeAudio: + if field.GetAudio() != nil && field.GetAudio().GetURI() == "" { + return errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("audio URI is empty")) + } + case evaluatorcommon.ContentTypeVideo: + if field.GetVideo() != nil && field.GetVideo().GetURI() == "" { + return errorx.NewByCode(errno.CommonInvalidParamCode, errorx.WithExtraMsg("video URI is empty")) + } + default: + continue + } + } + return nil +} + // transformURIsToURLs 将InputFields中的URI转换为URL func (e *EvaluatorHandlerImpl) transformURIsToURLs(ctx context.Context, inputFields map[string]*evaluatorcommon.Content) error { if len(inputFields) == 0 {