diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator.go b/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator.go index a26ee9138..d1a736491 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator.go @@ -40,6 +40,12 @@ const ( EvaluatorAccessProtocolRPC = "rpc" + AccessProtocolRPCOld = "rpc_old" + + AccessProtocolFaasHTTP = "faas_http" + + AccessProtocolFaasHTTPOld = "faas_http_old" + EvaluatorVersionTypeLatest = "Latest" EvaluatorVersionTypeBuiltinVisible = "BuiltinVisible" @@ -65,6 +71,10 @@ const ( EvaluatorFilterOperatorTypeIsNull = "IsNull" EvaluatorFilterOperatorTypeIsNotNull = "IsNotNull" + + HTTPMethodGet = "get" + + HTTPMethodPost = "post" ) type EvaluatorType int64 @@ -315,6 +325,8 @@ type EvaluatorFilterLogicOp = string // Evaluator筛选操作符 type EvaluatorFilterOperatorType = string +type EvaluatorHTTPMethod = string + type Tool struct { Type ToolType `thrift:"type,1" frugal:"1,default,ToolType" mapstructure:"type" form:"type" json:"type" query:"type"` Function *Function `thrift:"function,2,optional" frugal:"2,optional,Function" mapstructure:"function" form:"function" json:"function,omitempty" query:"function"` @@ -1986,10 +1998,14 @@ type CustomRPCEvaluator struct { AccessProtocol EvaluatorAccessProtocol `thrift:"access_protocol,2,required" frugal:"2,required,string" form:"access_protocol,required" json:"access_protocol,required" query:"access_protocol,required"` ServiceName *string `thrift:"service_name,3,optional" frugal:"3,optional,string" form:"service_name" json:"service_name,omitempty" query:"service_name"` Cluster *string `thrift:"cluster,4,optional" frugal:"4,optional,string" form:"cluster" json:"cluster,omitempty" query:"cluster"` + // 执行http信息 + InvokeHTTPInfo *EvaluatorHTTPInfo `thrift:"invoke_http_info,5,optional" frugal:"5,optional,EvaluatorHTTPInfo" form:"invoke_http_info" json:"invoke_http_info,omitempty" query:"invoke_http_info"` // ms Timeout *int64 `thrift:"timeout,10,optional" frugal:"10,optional,i64" form:"timeout" json:"timeout,omitempty" query:"timeout"` // 自定义评估器的限流配置 RateLimit *common.RateLimit `thrift:"rate_limit,11,optional" frugal:"11,optional,common.RateLimit" form:"rate_limit" json:"rate_limit,omitempty" query:"rate_limit"` + // extra fields + Ext map[string]string `thrift:"ext,12,optional" frugal:"12,optional,map" form:"ext" json:"ext,omitempty" query:"ext"` } func NewCustomRPCEvaluator() *CustomRPCEvaluator { @@ -2042,6 +2058,18 @@ func (p *CustomRPCEvaluator) GetCluster() (v string) { return *p.Cluster } +var CustomRPCEvaluator_InvokeHTTPInfo_DEFAULT *EvaluatorHTTPInfo + +func (p *CustomRPCEvaluator) GetInvokeHTTPInfo() (v *EvaluatorHTTPInfo) { + if p == nil { + return + } + if !p.IsSetInvokeHTTPInfo() { + return CustomRPCEvaluator_InvokeHTTPInfo_DEFAULT + } + return p.InvokeHTTPInfo +} + var CustomRPCEvaluator_Timeout_DEFAULT int64 func (p *CustomRPCEvaluator) GetTimeout() (v int64) { @@ -2065,6 +2093,18 @@ func (p *CustomRPCEvaluator) GetRateLimit() (v *common.RateLimit) { } return p.RateLimit } + +var CustomRPCEvaluator_Ext_DEFAULT map[string]string + +func (p *CustomRPCEvaluator) GetExt() (v map[string]string) { + if p == nil { + return + } + if !p.IsSetExt() { + return CustomRPCEvaluator_Ext_DEFAULT + } + return p.Ext +} func (p *CustomRPCEvaluator) SetProviderEvaluatorCode(val *string) { p.ProviderEvaluatorCode = val } @@ -2077,20 +2117,28 @@ func (p *CustomRPCEvaluator) SetServiceName(val *string) { func (p *CustomRPCEvaluator) SetCluster(val *string) { p.Cluster = val } +func (p *CustomRPCEvaluator) SetInvokeHTTPInfo(val *EvaluatorHTTPInfo) { + p.InvokeHTTPInfo = val +} func (p *CustomRPCEvaluator) SetTimeout(val *int64) { p.Timeout = val } func (p *CustomRPCEvaluator) SetRateLimit(val *common.RateLimit) { p.RateLimit = val } +func (p *CustomRPCEvaluator) SetExt(val map[string]string) { + p.Ext = val +} var fieldIDToName_CustomRPCEvaluator = map[int16]string{ 1: "provider_evaluator_code", 2: "access_protocol", 3: "service_name", 4: "cluster", + 5: "invoke_http_info", 10: "timeout", 11: "rate_limit", + 12: "ext", } func (p *CustomRPCEvaluator) IsSetProviderEvaluatorCode() bool { @@ -2105,6 +2153,10 @@ func (p *CustomRPCEvaluator) IsSetCluster() bool { return p.Cluster != nil } +func (p *CustomRPCEvaluator) IsSetInvokeHTTPInfo() bool { + return p.InvokeHTTPInfo != nil +} + func (p *CustomRPCEvaluator) IsSetTimeout() bool { return p.Timeout != nil } @@ -2113,6 +2165,10 @@ func (p *CustomRPCEvaluator) IsSetRateLimit() bool { return p.RateLimit != nil } +func (p *CustomRPCEvaluator) IsSetExt() bool { + return p.Ext != nil +} + func (p *CustomRPCEvaluator) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -2165,6 +2221,14 @@ func (p *CustomRPCEvaluator) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 5: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField5(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 10: if fieldTypeId == thrift.I64 { if err = p.ReadField10(iprot); err != nil { @@ -2181,6 +2245,14 @@ func (p *CustomRPCEvaluator) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 12: + if fieldTypeId == thrift.MAP { + if err = p.ReadField12(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -2260,6 +2332,14 @@ func (p *CustomRPCEvaluator) ReadField4(iprot thrift.TProtocol) error { p.Cluster = _field return nil } +func (p *CustomRPCEvaluator) ReadField5(iprot thrift.TProtocol) error { + _field := NewEvaluatorHTTPInfo() + if err := _field.Read(iprot); err != nil { + return err + } + p.InvokeHTTPInfo = _field + return nil +} func (p *CustomRPCEvaluator) ReadField10(iprot thrift.TProtocol) error { var _field *int64 @@ -2279,6 +2359,35 @@ func (p *CustomRPCEvaluator) ReadField11(iprot thrift.TProtocol) error { p.RateLimit = _field return nil } +func (p *CustomRPCEvaluator) ReadField12(iprot thrift.TProtocol) error { + _, _, size, err := iprot.ReadMapBegin() + if err != nil { + return err + } + _field := make(map[string]string, size) + for i := 0; i < size; i++ { + var _key string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _key = v + } + + var _val string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _val = v + } + + _field[_key] = _val + } + if err := iprot.ReadMapEnd(); err != nil { + return err + } + p.Ext = _field + return nil +} func (p *CustomRPCEvaluator) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -2302,6 +2411,10 @@ func (p *CustomRPCEvaluator) Write(oprot thrift.TProtocol) (err error) { fieldId = 4 goto WriteFieldError } + if err = p.writeField5(oprot); err != nil { + fieldId = 5 + goto WriteFieldError + } if err = p.writeField10(oprot); err != nil { fieldId = 10 goto WriteFieldError @@ -2310,6 +2423,10 @@ func (p *CustomRPCEvaluator) Write(oprot thrift.TProtocol) (err error) { fieldId = 11 goto WriteFieldError } + if err = p.writeField12(oprot); err != nil { + fieldId = 12 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -2398,6 +2515,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } +func (p *CustomRPCEvaluator) writeField5(oprot thrift.TProtocol) (err error) { + if p.IsSetInvokeHTTPInfo() { + if err = oprot.WriteFieldBegin("invoke_http_info", thrift.STRUCT, 5); err != nil { + goto WriteFieldBeginError + } + if err := p.InvokeHTTPInfo.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 5 end error: ", p), err) +} func (p *CustomRPCEvaluator) writeField10(oprot thrift.TProtocol) (err error) { if p.IsSetTimeout() { if err = oprot.WriteFieldBegin("timeout", thrift.I64, 10); err != nil { @@ -2434,6 +2569,35 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) } +func (p *CustomRPCEvaluator) writeField12(oprot thrift.TProtocol) (err error) { + if p.IsSetExt() { + if err = oprot.WriteFieldBegin("ext", thrift.MAP, 12); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteMapBegin(thrift.STRING, thrift.STRING, len(p.Ext)); err != nil { + return err + } + for k, v := range p.Ext { + if err := oprot.WriteString(k); err != nil { + return err + } + if err := oprot.WriteString(v); err != nil { + return err + } + } + if err := oprot.WriteMapEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 12 end error: ", p), err) +} func (p *CustomRPCEvaluator) String() string { if p == nil { @@ -2461,12 +2625,18 @@ func (p *CustomRPCEvaluator) DeepEqual(ano *CustomRPCEvaluator) bool { if !p.Field4DeepEqual(ano.Cluster) { return false } + if !p.Field5DeepEqual(ano.InvokeHTTPInfo) { + return false + } if !p.Field10DeepEqual(ano.Timeout) { return false } if !p.Field11DeepEqual(ano.RateLimit) { return false } + if !p.Field12DeepEqual(ano.Ext) { + return false + } return true } @@ -2513,6 +2683,13 @@ func (p *CustomRPCEvaluator) Field4DeepEqual(src *string) bool { } return true } +func (p *CustomRPCEvaluator) Field5DeepEqual(src *EvaluatorHTTPInfo) bool { + + if !p.InvokeHTTPInfo.DeepEqual(src) { + return false + } + return true +} func (p *CustomRPCEvaluator) Field10DeepEqual(src *int64) bool { if p.Timeout == src { @@ -2532,6 +2709,19 @@ func (p *CustomRPCEvaluator) Field11DeepEqual(src *common.RateLimit) bool { } return true } +func (p *CustomRPCEvaluator) Field12DeepEqual(src map[string]string) bool { + + if len(p.Ext) != len(src) { + return false + } + for k, v := range p.Ext { + _src := src[k] + if strings.Compare(v, _src) != 0 { + return false + } + } + return true +} type EvaluatorVersion struct { // 版本id @@ -3594,8 +3784,9 @@ func (p *EvaluatorContent) Field103DeepEqual(src *CustomRPCEvaluator) bool { // 明确有顺序的 evaluator 与版本映射元素 type EvaluatorIDVersionItem struct { - EvaluatorID *int64 `thrift:"evaluator_id,1,optional" frugal:"1,optional,i64" json:"evaluator_id" form:"evaluator_id" query:"evaluator_id"` - Version *string `thrift:"version,2,optional" frugal:"2,optional,string" json:"version" form:"version" query:"version"` + EvaluatorID *int64 `thrift:"evaluator_id,1,optional" frugal:"1,optional,i64" json:"evaluator_id" form:"evaluator_id" query:"evaluator_id"` + Version *string `thrift:"version,2,optional" frugal:"2,optional,string" json:"version" form:"version" query:"version"` + RunConfig *EvaluatorRunConfig `thrift:"run_config,3,optional" frugal:"3,optional,EvaluatorRunConfig" json:"run_config" form:"run_config" query:"run_config"` } func NewEvaluatorIDVersionItem() *EvaluatorIDVersionItem { @@ -3628,16 +3819,32 @@ func (p *EvaluatorIDVersionItem) GetVersion() (v string) { } return *p.Version } + +var EvaluatorIDVersionItem_RunConfig_DEFAULT *EvaluatorRunConfig + +func (p *EvaluatorIDVersionItem) GetRunConfig() (v *EvaluatorRunConfig) { + if p == nil { + return + } + if !p.IsSetRunConfig() { + return EvaluatorIDVersionItem_RunConfig_DEFAULT + } + return p.RunConfig +} func (p *EvaluatorIDVersionItem) SetEvaluatorID(val *int64) { p.EvaluatorID = val } func (p *EvaluatorIDVersionItem) SetVersion(val *string) { p.Version = val } +func (p *EvaluatorIDVersionItem) SetRunConfig(val *EvaluatorRunConfig) { + p.RunConfig = val +} var fieldIDToName_EvaluatorIDVersionItem = map[int16]string{ 1: "evaluator_id", 2: "version", + 3: "run_config", } func (p *EvaluatorIDVersionItem) IsSetEvaluatorID() bool { @@ -3648,6 +3855,10 @@ func (p *EvaluatorIDVersionItem) IsSetVersion() bool { return p.Version != nil } +func (p *EvaluatorIDVersionItem) IsSetRunConfig() bool { + return p.RunConfig != nil +} + func (p *EvaluatorIDVersionItem) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -3682,6 +3893,14 @@ func (p *EvaluatorIDVersionItem) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 3: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -3733,6 +3952,14 @@ func (p *EvaluatorIDVersionItem) ReadField2(iprot thrift.TProtocol) error { p.Version = _field return nil } +func (p *EvaluatorIDVersionItem) ReadField3(iprot thrift.TProtocol) error { + _field := NewEvaluatorRunConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.RunConfig = _field + return nil +} func (p *EvaluatorIDVersionItem) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -3748,6 +3975,10 @@ func (p *EvaluatorIDVersionItem) Write(oprot thrift.TProtocol) (err error) { fieldId = 2 goto WriteFieldError } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -3802,6 +4033,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) } +func (p *EvaluatorIDVersionItem) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetRunConfig() { + if err = oprot.WriteFieldBegin("run_config", thrift.STRUCT, 3); err != nil { + goto WriteFieldBeginError + } + if err := p.RunConfig.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} func (p *EvaluatorIDVersionItem) String() string { if p == nil { @@ -3823,6 +4072,9 @@ func (p *EvaluatorIDVersionItem) DeepEqual(ano *EvaluatorIDVersionItem) bool { if !p.Field2DeepEqual(ano.Version) { return false } + if !p.Field3DeepEqual(ano.RunConfig) { + return false + } return true } @@ -3850,6 +4102,13 @@ func (p *EvaluatorIDVersionItem) Field2DeepEqual(src *string) bool { } return true } +func (p *EvaluatorIDVersionItem) Field3DeepEqual(src *EvaluatorRunConfig) bool { + + if !p.RunConfig.DeepEqual(src) { + return false + } + return true +} type EvaluatorInfo struct { Benchmark *string `thrift:"benchmark,1,optional" frugal:"1,optional,string" json:"benchmark" form:"benchmark" query:"benchmark"` @@ -10787,3 +11046,511 @@ func (p *EvaluatorInputData) Field100DeepEqual(src map[string]string) bool { } return true } + +type EvaluatorHTTPInfo struct { + Method *EvaluatorHTTPMethod `thrift:"method,1,optional" frugal:"1,optional,string" form:"method" json:"method,omitempty" query:"method"` + Path *string `thrift:"path,2,optional" frugal:"2,optional,string" form:"path" json:"path,omitempty" query:"path"` +} + +func NewEvaluatorHTTPInfo() *EvaluatorHTTPInfo { + return &EvaluatorHTTPInfo{} +} + +func (p *EvaluatorHTTPInfo) InitDefault() { +} + +var EvaluatorHTTPInfo_Method_DEFAULT EvaluatorHTTPMethod + +func (p *EvaluatorHTTPInfo) GetMethod() (v EvaluatorHTTPMethod) { + if p == nil { + return + } + if !p.IsSetMethod() { + return EvaluatorHTTPInfo_Method_DEFAULT + } + return *p.Method +} + +var EvaluatorHTTPInfo_Path_DEFAULT string + +func (p *EvaluatorHTTPInfo) GetPath() (v string) { + if p == nil { + return + } + if !p.IsSetPath() { + return EvaluatorHTTPInfo_Path_DEFAULT + } + return *p.Path +} +func (p *EvaluatorHTTPInfo) SetMethod(val *EvaluatorHTTPMethod) { + p.Method = val +} +func (p *EvaluatorHTTPInfo) SetPath(val *string) { + p.Path = val +} + +var fieldIDToName_EvaluatorHTTPInfo = map[int16]string{ + 1: "method", + 2: "path", +} + +func (p *EvaluatorHTTPInfo) IsSetMethod() bool { + return p.Method != nil +} + +func (p *EvaluatorHTTPInfo) IsSetPath() bool { + return p.Path != nil +} + +func (p *EvaluatorHTTPInfo) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRING { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvaluatorHTTPInfo[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *EvaluatorHTTPInfo) ReadField1(iprot thrift.TProtocol) error { + + var _field *EvaluatorHTTPMethod + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Method = _field + return nil +} +func (p *EvaluatorHTTPInfo) ReadField2(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Path = _field + return nil +} + +func (p *EvaluatorHTTPInfo) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("EvaluatorHTTPInfo"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *EvaluatorHTTPInfo) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetMethod() { + if err = oprot.WriteFieldBegin("method", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Method); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *EvaluatorHTTPInfo) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetPath() { + if err = oprot.WriteFieldBegin("path", thrift.STRING, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Path); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *EvaluatorHTTPInfo) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("EvaluatorHTTPInfo(%+v)", *p) + +} + +func (p *EvaluatorHTTPInfo) DeepEqual(ano *EvaluatorHTTPInfo) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Method) { + return false + } + if !p.Field2DeepEqual(ano.Path) { + return false + } + return true +} + +func (p *EvaluatorHTTPInfo) Field1DeepEqual(src *EvaluatorHTTPMethod) bool { + + if p.Method == src { + return true + } else if p.Method == nil || src == nil { + return false + } + if strings.Compare(*p.Method, *src) != 0 { + return false + } + return true +} +func (p *EvaluatorHTTPInfo) Field2DeepEqual(src *string) bool { + + if p.Path == src { + return true + } else if p.Path == nil || src == nil { + return false + } + if strings.Compare(*p.Path, *src) != 0 { + return false + } + return true +} + +type EvaluatorRunConfig struct { + Env *string `thrift:"env,1,optional" frugal:"1,optional,string" form:"env" json:"env,omitempty" query:"env"` + EvaluatorRuntimeParam *common.RuntimeParam `thrift:"evaluator_runtime_param,2,optional" frugal:"2,optional,common.RuntimeParam" form:"evaluator_runtime_param" json:"evaluator_runtime_param,omitempty" query:"evaluator_runtime_param"` +} + +func NewEvaluatorRunConfig() *EvaluatorRunConfig { + return &EvaluatorRunConfig{} +} + +func (p *EvaluatorRunConfig) InitDefault() { +} + +var EvaluatorRunConfig_Env_DEFAULT string + +func (p *EvaluatorRunConfig) GetEnv() (v string) { + if p == nil { + return + } + if !p.IsSetEnv() { + return EvaluatorRunConfig_Env_DEFAULT + } + return *p.Env +} + +var EvaluatorRunConfig_EvaluatorRuntimeParam_DEFAULT *common.RuntimeParam + +func (p *EvaluatorRunConfig) GetEvaluatorRuntimeParam() (v *common.RuntimeParam) { + if p == nil { + return + } + if !p.IsSetEvaluatorRuntimeParam() { + return EvaluatorRunConfig_EvaluatorRuntimeParam_DEFAULT + } + return p.EvaluatorRuntimeParam +} +func (p *EvaluatorRunConfig) SetEnv(val *string) { + p.Env = val +} +func (p *EvaluatorRunConfig) SetEvaluatorRuntimeParam(val *common.RuntimeParam) { + p.EvaluatorRuntimeParam = val +} + +var fieldIDToName_EvaluatorRunConfig = map[int16]string{ + 1: "env", + 2: "evaluator_runtime_param", +} + +func (p *EvaluatorRunConfig) IsSetEnv() bool { + return p.Env != nil +} + +func (p *EvaluatorRunConfig) IsSetEvaluatorRuntimeParam() bool { + return p.EvaluatorRuntimeParam != nil +} + +func (p *EvaluatorRunConfig) Read(iprot thrift.TProtocol) (err error) { + var fieldTypeId thrift.TType + var fieldId int16 + + if _, err = iprot.ReadStructBegin(); err != nil { + goto ReadStructBeginError + } + + for { + _, fieldTypeId, fieldId, err = iprot.ReadFieldBegin() + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + if err = p.ReadField1(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 2: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + default: + if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + } + if err = iprot.ReadFieldEnd(); err != nil { + goto ReadFieldEndError + } + } + if err = iprot.ReadStructEnd(); err != nil { + goto ReadStructEndError + } + + return nil +ReadStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T read struct begin error: ", p), err) +ReadFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvaluatorRunConfig[fieldId]), err) +SkipFieldError: + return thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) + +ReadFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T read field end error", p), err) +ReadStructEndError: + return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err) +} + +func (p *EvaluatorRunConfig) ReadField1(iprot thrift.TProtocol) error { + + var _field *string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _field = &v + } + p.Env = _field + return nil +} +func (p *EvaluatorRunConfig) ReadField2(iprot thrift.TProtocol) error { + _field := common.NewRuntimeParam() + if err := _field.Read(iprot); err != nil { + return err + } + p.EvaluatorRuntimeParam = _field + return nil +} + +func (p *EvaluatorRunConfig) Write(oprot thrift.TProtocol) (err error) { + var fieldId int16 + if err = oprot.WriteStructBegin("EvaluatorRunConfig"); err != nil { + goto WriteStructBeginError + } + if p != nil { + if err = p.writeField1(oprot); err != nil { + fieldId = 1 + goto WriteFieldError + } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + } + if err = oprot.WriteFieldStop(); err != nil { + goto WriteFieldStopError + } + if err = oprot.WriteStructEnd(); err != nil { + goto WriteStructEndError + } + return nil +WriteStructBeginError: + return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err) +WriteFieldError: + return thrift.PrependError(fmt.Sprintf("%T write field %d error: ", p, fieldId), err) +WriteFieldStopError: + return thrift.PrependError(fmt.Sprintf("%T write field stop error: ", p), err) +WriteStructEndError: + return thrift.PrependError(fmt.Sprintf("%T write struct end error: ", p), err) +} + +func (p *EvaluatorRunConfig) writeField1(oprot thrift.TProtocol) (err error) { + if p.IsSetEnv() { + if err = oprot.WriteFieldBegin("env", thrift.STRING, 1); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteString(*p.Env); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) +} +func (p *EvaluatorRunConfig) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetEvaluatorRuntimeParam() { + if err = oprot.WriteFieldBegin("evaluator_runtime_param", thrift.STRUCT, 2); err != nil { + goto WriteFieldBeginError + } + if err := p.EvaluatorRuntimeParam.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} + +func (p *EvaluatorRunConfig) String() string { + if p == nil { + return "" + } + return fmt.Sprintf("EvaluatorRunConfig(%+v)", *p) + +} + +func (p *EvaluatorRunConfig) DeepEqual(ano *EvaluatorRunConfig) bool { + if p == ano { + return true + } else if p == nil || ano == nil { + return false + } + if !p.Field1DeepEqual(ano.Env) { + return false + } + if !p.Field2DeepEqual(ano.EvaluatorRuntimeParam) { + return false + } + return true +} + +func (p *EvaluatorRunConfig) Field1DeepEqual(src *string) bool { + + if p.Env == src { + return true + } else if p.Env == nil || src == nil { + return false + } + if strings.Compare(*p.Env, *src) != 0 { + return false + } + return true +} +func (p *EvaluatorRunConfig) Field2DeepEqual(src *common.RuntimeParam) bool { + + if !p.EvaluatorRuntimeParam.DeepEqual(src) { + return false + } + return true +} diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator_validator.go b/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator_validator.go index 290cf14da..905416ade 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator_validator.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/evaluator_validator.go @@ -44,6 +44,11 @@ func (p *CodeEvaluator) IsValid() error { return nil } func (p *CustomRPCEvaluator) IsValid() error { + if p.InvokeHTTPInfo != nil { + if err := p.InvokeHTTPInfo.IsValid(); err != nil { + return fmt.Errorf("field InvokeHTTPInfo not valid, %w", err) + } + } if p.RateLimit != nil { if err := p.RateLimit.IsValid(); err != nil { return fmt.Errorf("field RateLimit not valid, %w", err) @@ -83,6 +88,11 @@ func (p *EvaluatorContent) IsValid() error { return nil } func (p *EvaluatorIDVersionItem) IsValid() error { + if p.RunConfig != nil { + if err := p.RunConfig.IsValid(); err != nil { + return fmt.Errorf("field RunConfig not valid, %w", err) + } + } return nil } func (p *EvaluatorInfo) IsValid() error { @@ -194,3 +204,14 @@ func (p *EvaluatorRunError) IsValid() error { func (p *EvaluatorInputData) IsValid() error { return nil } +func (p *EvaluatorHTTPInfo) IsValid() error { + return nil +} +func (p *EvaluatorRunConfig) IsValid() error { + if p.EvaluatorRuntimeParam != nil { + if err := p.EvaluatorRuntimeParam.IsValid(); err != nil { + return fmt.Errorf("field EvaluatorRuntimeParam not valid, %w", err) + } + } + return nil +} diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/k-evaluator.go b/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/k-evaluator.go index ec99307f3..1f2cf66a0 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/k-evaluator.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/evaluator/k-evaluator.go @@ -1326,6 +1326,20 @@ func (p *CustomRPCEvaluator) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 5: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField5(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 10: if fieldTypeId == thrift.I64 { l, err = p.FastReadField10(buf[offset:]) @@ -1354,6 +1368,20 @@ func (p *CustomRPCEvaluator) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 12: + if fieldTypeId == thrift.MAP { + l, err = p.FastReadField12(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -1434,6 +1462,18 @@ func (p *CustomRPCEvaluator) FastReadField4(buf []byte) (int, error) { return offset, nil } +func (p *CustomRPCEvaluator) FastReadField5(buf []byte) (int, error) { + offset := 0 + _field := NewEvaluatorHTTPInfo() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.InvokeHTTPInfo = _field + return offset, nil +} + func (p *CustomRPCEvaluator) FastReadField10(buf []byte) (int, error) { offset := 0 @@ -1460,6 +1500,38 @@ func (p *CustomRPCEvaluator) FastReadField11(buf []byte) (int, error) { return offset, nil } +func (p *CustomRPCEvaluator) FastReadField12(buf []byte) (int, error) { + offset := 0 + + _, _, size, l, err := thrift.Binary.ReadMapBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make(map[string]string, size) + for i := 0; i < size; i++ { + var _key string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _key = v + } + + var _val string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _val = v + } + + _field[_key] = _val + } + p.Ext = _field + return offset, nil +} + func (p *CustomRPCEvaluator) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -1472,7 +1544,9 @@ func (p *CustomRPCEvaluator) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField5(buf[offset:], w) offset += p.fastWriteField11(buf[offset:], w) + offset += p.fastWriteField12(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -1485,8 +1559,10 @@ func (p *CustomRPCEvaluator) BLength() int { l += p.field2Length() l += p.field3Length() l += p.field4Length() + l += p.field5Length() l += p.field10Length() l += p.field11Length() + l += p.field12Length() } l += thrift.Binary.FieldStopLength() return l @@ -1526,6 +1602,15 @@ func (p *CustomRPCEvaluator) fastWriteField4(buf []byte, w thrift.NocopyWriter) return offset } +func (p *CustomRPCEvaluator) fastWriteField5(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetInvokeHTTPInfo() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 5) + offset += p.InvokeHTTPInfo.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *CustomRPCEvaluator) fastWriteField10(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetTimeout() { @@ -1544,6 +1629,23 @@ func (p *CustomRPCEvaluator) fastWriteField11(buf []byte, w thrift.NocopyWriter) return offset } +func (p *CustomRPCEvaluator) fastWriteField12(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetExt() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.MAP, 12) + mapBeginOffset := offset + offset += thrift.Binary.MapBeginLength() + var length int + for k, v := range p.Ext { + length++ + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, k) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, v) + } + thrift.Binary.WriteMapBegin(buf[mapBeginOffset:], thrift.STRING, thrift.STRING, length) + } + return offset +} + func (p *CustomRPCEvaluator) field1Length() int { l := 0 if p.IsSetProviderEvaluatorCode() { @@ -1578,6 +1680,15 @@ func (p *CustomRPCEvaluator) field4Length() int { return l } +func (p *CustomRPCEvaluator) field5Length() int { + l := 0 + if p.IsSetInvokeHTTPInfo() { + l += thrift.Binary.FieldBeginLength() + l += p.InvokeHTTPInfo.BLength() + } + return l +} + func (p *CustomRPCEvaluator) field10Length() int { l := 0 if p.IsSetTimeout() { @@ -1596,6 +1707,21 @@ func (p *CustomRPCEvaluator) field11Length() int { return l } +func (p *CustomRPCEvaluator) field12Length() int { + l := 0 + if p.IsSetExt() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.MapBeginLength() + for k, v := range p.Ext { + _, _ = k, v + + l += thrift.Binary.StringLengthNocopy(k) + l += thrift.Binary.StringLengthNocopy(v) + } + } + return l +} + func (p *CustomRPCEvaluator) DeepCopy(s interface{}) error { src, ok := s.(*CustomRPCEvaluator) if !ok { @@ -1628,6 +1754,15 @@ func (p *CustomRPCEvaluator) DeepCopy(s interface{}) error { p.Cluster = &tmp } + var _invokeHTTPInfo *EvaluatorHTTPInfo + if src.InvokeHTTPInfo != nil { + _invokeHTTPInfo = &EvaluatorHTTPInfo{} + if err := _invokeHTTPInfo.DeepCopy(src.InvokeHTTPInfo); err != nil { + return err + } + } + p.InvokeHTTPInfo = _invokeHTTPInfo + if src.Timeout != nil { tmp := *src.Timeout p.Timeout = &tmp @@ -1642,6 +1777,23 @@ func (p *CustomRPCEvaluator) DeepCopy(s interface{}) error { } p.RateLimit = _rateLimit + if src.Ext != nil { + p.Ext = make(map[string]string, len(src.Ext)) + for key, val := range src.Ext { + var _key string + if key != "" { + _key = kutils.StringDeepCopy(key) + } + + var _val string + if val != "" { + _val = kutils.StringDeepCopy(val) + } + + p.Ext[_key] = _val + } + } + return nil } @@ -2481,6 +2633,20 @@ func (p *EvaluatorIDVersionItem) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 3: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -2527,6 +2693,18 @@ func (p *EvaluatorIDVersionItem) FastReadField2(buf []byte) (int, error) { return offset, nil } +func (p *EvaluatorIDVersionItem) FastReadField3(buf []byte) (int, error) { + offset := 0 + _field := NewEvaluatorRunConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.RunConfig = _field + return offset, nil +} + func (p *EvaluatorIDVersionItem) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -2536,6 +2714,7 @@ func (p *EvaluatorIDVersionItem) FastWriteNocopy(buf []byte, w thrift.NocopyWrit if p != nil { offset += p.fastWriteField1(buf[offset:], w) offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -2546,6 +2725,7 @@ func (p *EvaluatorIDVersionItem) BLength() int { if p != nil { l += p.field1Length() l += p.field2Length() + l += p.field3Length() } l += thrift.Binary.FieldStopLength() return l @@ -2569,6 +2749,15 @@ func (p *EvaluatorIDVersionItem) fastWriteField2(buf []byte, w thrift.NocopyWrit return offset } +func (p *EvaluatorIDVersionItem) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetRunConfig() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 3) + offset += p.RunConfig.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *EvaluatorIDVersionItem) field1Length() int { l := 0 if p.IsSetEvaluatorID() { @@ -2587,6 +2776,15 @@ func (p *EvaluatorIDVersionItem) field2Length() int { return l } +func (p *EvaluatorIDVersionItem) field3Length() int { + l := 0 + if p.IsSetRunConfig() { + l += thrift.Binary.FieldBeginLength() + l += p.RunConfig.BLength() + } + return l +} + func (p *EvaluatorIDVersionItem) DeepCopy(s interface{}) error { src, ok := s.(*EvaluatorIDVersionItem) if !ok { @@ -2606,6 +2804,15 @@ func (p *EvaluatorIDVersionItem) DeepCopy(s interface{}) error { p.Version = &tmp } + var _runConfig *EvaluatorRunConfig + if src.RunConfig != nil { + _runConfig = &EvaluatorRunConfig{} + if err := _runConfig.DeepCopy(src.RunConfig); err != nil { + return err + } + } + p.RunConfig = _runConfig + return nil } @@ -7740,3 +7947,351 @@ func (p *EvaluatorInputData) DeepCopy(s interface{}) error { return nil } + +func (p *EvaluatorHTTPInfo) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvaluatorHTTPInfo[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *EvaluatorHTTPInfo) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *EvaluatorHTTPMethod + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Method = _field + return offset, nil +} + +func (p *EvaluatorHTTPInfo) FastReadField2(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Path = _field + return offset, nil +} + +func (p *EvaluatorHTTPInfo) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *EvaluatorHTTPInfo) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *EvaluatorHTTPInfo) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *EvaluatorHTTPInfo) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetMethod() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Method) + } + return offset +} + +func (p *EvaluatorHTTPInfo) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetPath() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 2) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Path) + } + return offset +} + +func (p *EvaluatorHTTPInfo) field1Length() int { + l := 0 + if p.IsSetMethod() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Method) + } + return l +} + +func (p *EvaluatorHTTPInfo) field2Length() int { + l := 0 + if p.IsSetPath() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Path) + } + return l +} + +func (p *EvaluatorHTTPInfo) DeepCopy(s interface{}) error { + src, ok := s.(*EvaluatorHTTPInfo) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Method != nil { + tmp := *src.Method + p.Method = &tmp + } + + if src.Path != nil { + var tmp string + if *src.Path != "" { + tmp = kutils.StringDeepCopy(*src.Path) + } + p.Path = &tmp + } + + return nil +} + +func (p *EvaluatorRunConfig) FastRead(buf []byte) (int, error) { + + var err error + var offset int + var l int + var fieldTypeId thrift.TType + var fieldId int16 + for { + fieldTypeId, fieldId, l, err = thrift.Binary.ReadFieldBegin(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldBeginError + } + if fieldTypeId == thrift.STOP { + break + } + switch fieldId { + case 1: + if fieldTypeId == thrift.STRING { + l, err = p.FastReadField1(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 2: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + default: + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + } + + return offset, nil +ReadFieldBeginError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d begin error: ", p, fieldId), err) +ReadFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T read field %d '%s' error: ", p, fieldId, fieldIDToName_EvaluatorRunConfig[fieldId]), err) +SkipFieldError: + return offset, thrift.PrependError(fmt.Sprintf("%T field %d skip type %d error: ", p, fieldId, fieldTypeId), err) +} + +func (p *EvaluatorRunConfig) FastReadField1(buf []byte) (int, error) { + offset := 0 + + var _field *string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _field = &v + } + p.Env = _field + return offset, nil +} + +func (p *EvaluatorRunConfig) FastReadField2(buf []byte) (int, error) { + offset := 0 + _field := common.NewRuntimeParam() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.EvaluatorRuntimeParam = _field + return offset, nil +} + +func (p *EvaluatorRunConfig) FastWrite(buf []byte) int { + return p.FastWriteNocopy(buf, nil) +} + +func (p *EvaluatorRunConfig) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p != nil { + offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + } + offset += thrift.Binary.WriteFieldStop(buf[offset:]) + return offset +} + +func (p *EvaluatorRunConfig) BLength() int { + l := 0 + if p != nil { + l += p.field1Length() + l += p.field2Length() + } + l += thrift.Binary.FieldStopLength() + return l +} + +func (p *EvaluatorRunConfig) fastWriteField1(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEnv() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRING, 1) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, *p.Env) + } + return offset +} + +func (p *EvaluatorRunConfig) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvaluatorRuntimeParam() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 2) + offset += p.EvaluatorRuntimeParam.FastWriteNocopy(buf[offset:], w) + } + return offset +} + +func (p *EvaluatorRunConfig) field1Length() int { + l := 0 + if p.IsSetEnv() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.StringLengthNocopy(*p.Env) + } + return l +} + +func (p *EvaluatorRunConfig) field2Length() int { + l := 0 + if p.IsSetEvaluatorRuntimeParam() { + l += thrift.Binary.FieldBeginLength() + l += p.EvaluatorRuntimeParam.BLength() + } + return l +} + +func (p *EvaluatorRunConfig) DeepCopy(s interface{}) error { + src, ok := s.(*EvaluatorRunConfig) + if !ok { + return fmt.Errorf("%T's type not matched %T", s, p) + } + + if src.Env != nil { + var tmp string + if *src.Env != "" { + tmp = kutils.StringDeepCopy(*src.Env) + } + p.Env = &tmp + } + + var _evaluatorRuntimeParam *common.RuntimeParam + if src.EvaluatorRuntimeParam != nil { + _evaluatorRuntimeParam = &common.RuntimeParam{} + if err := _evaluatorRuntimeParam.DeepCopy(src.EvaluatorRuntimeParam); err != nil { + return err + } + } + p.EvaluatorRuntimeParam = _evaluatorRuntimeParam + + return nil +} diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go b/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go index 42f756729..33327981c 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/expt/expt.go @@ -936,6 +936,8 @@ type Experiment struct { MaxAliveTime *int64 `thrift:"max_alive_time,41,optional" frugal:"41,optional,i64" form:"max_alive_time" json:"max_alive_time,omitempty" query:"max_alive_time"` SourceType *SourceType `thrift:"source_type,42,optional" frugal:"42,optional,SourceType" form:"source_type" json:"source_type,omitempty" query:"source_type"` SourceID *string `thrift:"source_id,43,optional" frugal:"43,optional,string" form:"source_id" json:"source_id,omitempty" query:"source_id"` + // 评估器版本ID对应的评估器运行配置信息 + EvaluatorVersionRunConfigs map[int64]*evaluator.EvaluatorRunConfig `thrift:"evaluator_version_run_configs,51,optional" frugal:"51,optional,map" form:"evaluator_version_run_configs" json:"evaluator_version_run_configs,string,omitempty" query:"evaluator_version_run_configs"` } func NewExperiment() *Experiment { @@ -1256,6 +1258,18 @@ func (p *Experiment) GetSourceID() (v string) { } return *p.SourceID } + +var Experiment_EvaluatorVersionRunConfigs_DEFAULT map[int64]*evaluator.EvaluatorRunConfig + +func (p *Experiment) GetEvaluatorVersionRunConfigs() (v map[int64]*evaluator.EvaluatorRunConfig) { + if p == nil { + return + } + if !p.IsSetEvaluatorVersionRunConfigs() { + return Experiment_EvaluatorVersionRunConfigs_DEFAULT + } + return p.EvaluatorVersionRunConfigs +} func (p *Experiment) SetID(val *int64) { p.ID = val } @@ -1334,6 +1348,9 @@ func (p *Experiment) SetSourceType(val *SourceType) { func (p *Experiment) SetSourceID(val *string) { p.SourceID = val } +func (p *Experiment) SetEvaluatorVersionRunConfigs(val map[int64]*evaluator.EvaluatorRunConfig) { + p.EvaluatorVersionRunConfigs = val +} var fieldIDToName_Experiment = map[int16]string{ 1: "id", @@ -1362,6 +1379,7 @@ var fieldIDToName_Experiment = map[int16]string{ 41: "max_alive_time", 42: "source_type", 43: "source_id", + 51: "evaluator_version_run_configs", } func (p *Experiment) IsSetID() bool { @@ -1468,6 +1486,10 @@ func (p *Experiment) IsSetSourceID() bool { return p.SourceID != nil } +func (p *Experiment) IsSetEvaluatorVersionRunConfigs() bool { + return p.EvaluatorVersionRunConfigs != nil +} + func (p *Experiment) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -1694,6 +1716,14 @@ func (p *Experiment) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 51: + if fieldTypeId == thrift.MAP { + if err = p.ReadField51(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -2030,6 +2060,35 @@ func (p *Experiment) ReadField43(iprot thrift.TProtocol) error { p.SourceID = _field return nil } +func (p *Experiment) ReadField51(iprot thrift.TProtocol) error { + _, _, size, err := iprot.ReadMapBegin() + if err != nil { + return err + } + _field := make(map[int64]*evaluator.EvaluatorRunConfig, size) + values := make([]evaluator.EvaluatorRunConfig, size) + for i := 0; i < size; i++ { + var _key int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _key = v + } + + _val := &values[i] + _val.InitDefault() + if err := _val.Read(iprot); err != nil { + return err + } + + _field[_key] = _val + } + if err := iprot.ReadMapEnd(); err != nil { + return err + } + p.EvaluatorVersionRunConfigs = _field + return nil +} func (p *Experiment) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -2141,6 +2200,10 @@ func (p *Experiment) Write(oprot thrift.TProtocol) (err error) { fieldId = 43 goto WriteFieldError } + if err = p.writeField51(oprot); err != nil { + fieldId = 51 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -2651,6 +2714,35 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 43 end error: ", p), err) } +func (p *Experiment) writeField51(oprot thrift.TProtocol) (err error) { + if p.IsSetEvaluatorVersionRunConfigs() { + if err = oprot.WriteFieldBegin("evaluator_version_run_configs", thrift.MAP, 51); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteMapBegin(thrift.I64, thrift.STRUCT, len(p.EvaluatorVersionRunConfigs)); err != nil { + return err + } + for k, v := range p.EvaluatorVersionRunConfigs { + if err := oprot.WriteI64(k); err != nil { + return err + } + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteMapEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 51 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 51 end error: ", p), err) +} func (p *Experiment) String() string { if p == nil { @@ -2744,6 +2836,9 @@ func (p *Experiment) DeepEqual(ano *Experiment) bool { if !p.Field43DeepEqual(ano.SourceID) { return false } + if !p.Field51DeepEqual(ano.EvaluatorVersionRunConfigs) { + return false + } return true } @@ -3032,6 +3127,19 @@ func (p *Experiment) Field43DeepEqual(src *string) bool { } return true } +func (p *Experiment) Field51DeepEqual(src map[int64]*evaluator.EvaluatorRunConfig) bool { + + if len(p.EvaluatorVersionRunConfigs) != len(src) { + return false + } + for k, v := range p.EvaluatorVersionRunConfigs { + _src := src[k] + if !v.DeepEqual(_src) { + return false + } + } + return true +} type TokenUsage struct { InputTokens *int64 `thrift:"input_tokens,1,optional" frugal:"1,optional,i64" json:"input_tokens" form:"input_tokens" query:"input_tokens"` diff --git a/backend/kitex_gen/coze/loop/evaluation/domain/expt/k-expt.go b/backend/kitex_gen/coze/loop/evaluation/domain/expt/k-expt.go index f281ebbfc..de2aa7311 100644 --- a/backend/kitex_gen/coze/loop/evaluation/domain/expt/k-expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/domain/expt/k-expt.go @@ -416,6 +416,20 @@ func (p *Experiment) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 51: + if fieldTypeId == thrift.MAP { + l, err = p.FastReadField51(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -824,6 +838,39 @@ func (p *Experiment) FastReadField43(buf []byte) (int, error) { return offset, nil } +func (p *Experiment) FastReadField51(buf []byte) (int, error) { + offset := 0 + + _, _, size, l, err := thrift.Binary.ReadMapBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make(map[int64]*evaluator.EvaluatorRunConfig, size) + values := make([]evaluator.EvaluatorRunConfig, size) + for i := 0; i < size; i++ { + var _key int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _key = v + } + + _val := &values[i] + _val.InitDefault() + if l, err := _val.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field[_key] = _val + } + p.EvaluatorVersionRunConfigs = _field + return offset, nil +} + func (p *Experiment) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -857,6 +904,7 @@ func (p *Experiment) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) int { offset += p.fastWriteField40(buf[offset:], w) offset += p.fastWriteField42(buf[offset:], w) offset += p.fastWriteField43(buf[offset:], w) + offset += p.fastWriteField51(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -891,6 +939,7 @@ func (p *Experiment) BLength() int { l += p.field41Length() l += p.field42Length() l += p.field43Length() + l += p.field51Length() } l += thrift.Binary.FieldStopLength() return l @@ -1151,6 +1200,23 @@ func (p *Experiment) fastWriteField43(buf []byte, w thrift.NocopyWriter) int { return offset } +func (p *Experiment) fastWriteField51(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvaluatorVersionRunConfigs() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.MAP, 51) + mapBeginOffset := offset + offset += thrift.Binary.MapBeginLength() + var length int + for k, v := range p.EvaluatorVersionRunConfigs { + length++ + offset += thrift.Binary.WriteI64(buf[offset:], k) + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteMapBegin(buf[mapBeginOffset:], thrift.I64, thrift.STRUCT, length) + } + return offset +} + func (p *Experiment) field1Length() int { l := 0 if p.IsSetID() { @@ -1395,6 +1461,21 @@ func (p *Experiment) field43Length() int { return l } +func (p *Experiment) field51Length() int { + l := 0 + if p.IsSetEvaluatorVersionRunConfigs() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.MapBeginLength() + for k, v := range p.EvaluatorVersionRunConfigs { + _, _ = k, v + + l += thrift.Binary.I64Length() + l += v.BLength() + } + } + return l +} + func (p *Experiment) DeepCopy(s interface{}) error { src, ok := s.(*Experiment) if !ok { @@ -1594,6 +1675,24 @@ func (p *Experiment) DeepCopy(s interface{}) error { p.SourceID = &tmp } + if src.EvaluatorVersionRunConfigs != nil { + p.EvaluatorVersionRunConfigs = make(map[int64]*evaluator.EvaluatorRunConfig, len(src.EvaluatorVersionRunConfigs)) + for key, val := range src.EvaluatorVersionRunConfigs { + var _key int64 + _key = key + + var _val *evaluator.EvaluatorRunConfig + if val != nil { + _val = &evaluator.EvaluatorRunConfig{} + if err := _val.DeepCopy(val); err != nil { + return err + } + } + + p.EvaluatorVersionRunConfigs[_key] = _val + } + } + return nil } diff --git a/backend/kitex_gen/coze/loop/evaluation/evaluator/coze.loop.evaluation.evaluator.go b/backend/kitex_gen/coze/loop/evaluation/evaluator/coze.loop.evaluation.evaluator.go index e389e678b..5f35921ac 100644 --- a/backend/kitex_gen/coze/loop/evaluation/evaluator/coze.loop.evaluation.evaluator.go +++ b/backend/kitex_gen/coze/loop/evaluation/evaluator/coze.loop.evaluation.evaluator.go @@ -9836,11 +9836,13 @@ type RunEvaluatorRequest struct { // experiment id ExperimentID *int64 `thrift:"experiment_id,4,optional" frugal:"4,optional,i64" json:"experiment_id" form:"experiment_id" ` // experiment run id - ExperimentRunID *int64 `thrift:"experiment_run_id,5,optional" frugal:"5,optional,i64" json:"experiment_run_id" form:"experiment_run_id" ` - ItemID *int64 `thrift:"item_id,6,optional" frugal:"6,optional,i64" json:"item_id" form:"item_id" ` - TurnID *int64 `thrift:"turn_id,7,optional" frugal:"7,optional,i64" json:"turn_id" form:"turn_id" ` - Ext map[string]string `thrift:"ext,100,optional" frugal:"100,optional,map" form:"ext" json:"ext,omitempty"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` + ExperimentRunID *int64 `thrift:"experiment_run_id,5,optional" frugal:"5,optional,i64" json:"experiment_run_id" form:"experiment_run_id" ` + ItemID *int64 `thrift:"item_id,6,optional" frugal:"6,optional,i64" json:"item_id" form:"item_id" ` + TurnID *int64 `thrift:"turn_id,7,optional" frugal:"7,optional,i64" json:"turn_id" form:"turn_id" ` + // 评估器运行配置参数 + EvaluatorRunConf *evaluator.EvaluatorRunConfig `thrift:"evaluator_run_conf,11,optional" frugal:"11,optional,evaluator.EvaluatorRunConfig" form:"evaluator_run_conf" json:"evaluator_run_conf,omitempty"` + Ext map[string]string `thrift:"ext,100,optional" frugal:"100,optional,map" form:"ext" json:"ext,omitempty"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } func NewRunEvaluatorRequest() *RunEvaluatorRequest { @@ -9924,6 +9926,18 @@ func (p *RunEvaluatorRequest) GetTurnID() (v int64) { return *p.TurnID } +var RunEvaluatorRequest_EvaluatorRunConf_DEFAULT *evaluator.EvaluatorRunConfig + +func (p *RunEvaluatorRequest) GetEvaluatorRunConf() (v *evaluator.EvaluatorRunConfig) { + if p == nil { + return + } + if !p.IsSetEvaluatorRunConf() { + return RunEvaluatorRequest_EvaluatorRunConf_DEFAULT + } + return p.EvaluatorRunConf +} + var RunEvaluatorRequest_Ext_DEFAULT map[string]string func (p *RunEvaluatorRequest) GetExt() (v map[string]string) { @@ -9968,6 +9982,9 @@ func (p *RunEvaluatorRequest) SetItemID(val *int64) { func (p *RunEvaluatorRequest) SetTurnID(val *int64) { p.TurnID = val } +func (p *RunEvaluatorRequest) SetEvaluatorRunConf(val *evaluator.EvaluatorRunConfig) { + p.EvaluatorRunConf = val +} func (p *RunEvaluatorRequest) SetExt(val map[string]string) { p.Ext = val } @@ -9983,6 +10000,7 @@ var fieldIDToName_RunEvaluatorRequest = map[int16]string{ 5: "experiment_run_id", 6: "item_id", 7: "turn_id", + 11: "evaluator_run_conf", 100: "ext", 255: "Base", } @@ -10007,6 +10025,10 @@ func (p *RunEvaluatorRequest) IsSetTurnID() bool { return p.TurnID != nil } +func (p *RunEvaluatorRequest) IsSetEvaluatorRunConf() bool { + return p.EvaluatorRunConf != nil +} + func (p *RunEvaluatorRequest) IsSetExt() bool { return p.Ext != nil } @@ -10095,6 +10117,14 @@ func (p *RunEvaluatorRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 11: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField11(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 100: if fieldTypeId == thrift.MAP { if err = p.ReadField100(iprot); err != nil { @@ -10230,6 +10260,14 @@ func (p *RunEvaluatorRequest) ReadField7(iprot thrift.TProtocol) error { p.TurnID = _field return nil } +func (p *RunEvaluatorRequest) ReadField11(iprot thrift.TProtocol) error { + _field := evaluator.NewEvaluatorRunConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.EvaluatorRunConf = _field + return nil +} func (p *RunEvaluatorRequest) ReadField100(iprot thrift.TProtocol) error { _, _, size, err := iprot.ReadMapBegin() if err != nil { @@ -10302,6 +10340,10 @@ func (p *RunEvaluatorRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 7 goto WriteFieldError } + if err = p.writeField11(oprot); err != nil { + fieldId = 11 + goto WriteFieldError + } if err = p.writeField100(oprot); err != nil { fieldId = 100 goto WriteFieldError @@ -10448,6 +10490,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 7 end error: ", p), err) } +func (p *RunEvaluatorRequest) writeField11(oprot thrift.TProtocol) (err error) { + if p.IsSetEvaluatorRunConf() { + if err = oprot.WriteFieldBegin("evaluator_run_conf", thrift.STRUCT, 11); err != nil { + goto WriteFieldBeginError + } + if err := p.EvaluatorRunConf.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) +} func (p *RunEvaluatorRequest) writeField100(oprot thrift.TProtocol) (err error) { if p.IsSetExt() { if err = oprot.WriteFieldBegin("ext", thrift.MAP, 100); err != nil { @@ -10531,6 +10591,9 @@ func (p *RunEvaluatorRequest) DeepEqual(ano *RunEvaluatorRequest) bool { if !p.Field7DeepEqual(ano.TurnID) { return false } + if !p.Field11DeepEqual(ano.EvaluatorRunConf) { + return false + } if !p.Field100DeepEqual(ano.Ext) { return false } @@ -10609,6 +10672,13 @@ func (p *RunEvaluatorRequest) Field7DeepEqual(src *int64) bool { } return true } +func (p *RunEvaluatorRequest) Field11DeepEqual(src *evaluator.EvaluatorRunConfig) bool { + + if !p.EvaluatorRunConf.DeepEqual(src) { + return false + } + return true +} func (p *RunEvaluatorRequest) Field100DeepEqual(src map[string]string) bool { if len(p.Ext) != len(src) { @@ -10884,7 +10954,9 @@ type DebugEvaluatorRequest struct { // 评测数据输入: 数据集行内容 + 评测目标输出内容与历史记录 + 评测目标的 trace InputData *evaluator.EvaluatorInputData `thrift:"input_data,3,required" frugal:"3,required,evaluator.EvaluatorInputData" form:"input_data,required" json:"input_data,required"` EvaluatorType evaluator.EvaluatorType `thrift:"evaluator_type,4,required" frugal:"4,required,EvaluatorType" json:"evaluator_type" form:"evaluator_type,required" ` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` + // 评估器运行配置参数 + EvaluatorRunConf *evaluator.EvaluatorRunConfig `thrift:"evaluator_run_conf,11,optional" frugal:"11,optional,evaluator.EvaluatorRunConfig" form:"evaluator_run_conf" json:"evaluator_run_conf,omitempty"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } func NewDebugEvaluatorRequest() *DebugEvaluatorRequest { @@ -10932,6 +11004,18 @@ func (p *DebugEvaluatorRequest) GetEvaluatorType() (v evaluator.EvaluatorType) { return } +var DebugEvaluatorRequest_EvaluatorRunConf_DEFAULT *evaluator.EvaluatorRunConfig + +func (p *DebugEvaluatorRequest) GetEvaluatorRunConf() (v *evaluator.EvaluatorRunConfig) { + if p == nil { + return + } + if !p.IsSetEvaluatorRunConf() { + return DebugEvaluatorRequest_EvaluatorRunConf_DEFAULT + } + return p.EvaluatorRunConf +} + var DebugEvaluatorRequest_Base_DEFAULT *base.Base func (p *DebugEvaluatorRequest) GetBase() (v *base.Base) { @@ -10955,6 +11039,9 @@ func (p *DebugEvaluatorRequest) SetInputData(val *evaluator.EvaluatorInputData) func (p *DebugEvaluatorRequest) SetEvaluatorType(val evaluator.EvaluatorType) { p.EvaluatorType = val } +func (p *DebugEvaluatorRequest) SetEvaluatorRunConf(val *evaluator.EvaluatorRunConfig) { + p.EvaluatorRunConf = val +} func (p *DebugEvaluatorRequest) SetBase(val *base.Base) { p.Base = val } @@ -10964,6 +11051,7 @@ var fieldIDToName_DebugEvaluatorRequest = map[int16]string{ 2: "evaluator_content", 3: "input_data", 4: "evaluator_type", + 11: "evaluator_run_conf", 255: "Base", } @@ -10975,6 +11063,10 @@ func (p *DebugEvaluatorRequest) IsSetInputData() bool { return p.InputData != nil } +func (p *DebugEvaluatorRequest) IsSetEvaluatorRunConf() bool { + return p.EvaluatorRunConf != nil +} + func (p *DebugEvaluatorRequest) IsSetBase() bool { return p.Base != nil } @@ -11037,6 +11129,14 @@ func (p *DebugEvaluatorRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 11: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField11(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -11133,6 +11233,14 @@ func (p *DebugEvaluatorRequest) ReadField4(iprot thrift.TProtocol) error { p.EvaluatorType = _field return nil } +func (p *DebugEvaluatorRequest) ReadField11(iprot thrift.TProtocol) error { + _field := evaluator.NewEvaluatorRunConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.EvaluatorRunConf = _field + return nil +} func (p *DebugEvaluatorRequest) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBase() if err := _field.Read(iprot); err != nil { @@ -11164,6 +11272,10 @@ func (p *DebugEvaluatorRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 4 goto WriteFieldError } + if err = p.writeField11(oprot); err != nil { + fieldId = 11 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -11250,6 +11362,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } +func (p *DebugEvaluatorRequest) writeField11(oprot thrift.TProtocol) (err error) { + if p.IsSetEvaluatorRunConf() { + if err = oprot.WriteFieldBegin("evaluator_run_conf", thrift.STRUCT, 11); err != nil { + goto WriteFieldBeginError + } + if err := p.EvaluatorRunConf.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) +} func (p *DebugEvaluatorRequest) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBase() { if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { @@ -11295,6 +11425,9 @@ func (p *DebugEvaluatorRequest) DeepEqual(ano *DebugEvaluatorRequest) bool { if !p.Field4DeepEqual(ano.EvaluatorType) { return false } + if !p.Field11DeepEqual(ano.EvaluatorRunConf) { + return false + } if !p.Field255DeepEqual(ano.Base) { return false } @@ -11329,6 +11462,13 @@ func (p *DebugEvaluatorRequest) Field4DeepEqual(src evaluator.EvaluatorType) boo } return true } +func (p *DebugEvaluatorRequest) Field11DeepEqual(src *evaluator.EvaluatorRunConfig) bool { + + if !p.EvaluatorRunConf.DeepEqual(src) { + return false + } + return true +} func (p *DebugEvaluatorRequest) Field255DeepEqual(src *base.Base) bool { if !p.Base.DeepEqual(src) { @@ -11586,7 +11726,9 @@ type BatchDebugEvaluatorRequest struct { // 评测数据输入: 数据集行内容 + 评测目标输出内容与历史记录 + 评测目标的 trace InputData []*evaluator.EvaluatorInputData `thrift:"input_data,3,required" frugal:"3,required,list" form:"input_data,required" json:"input_data,required"` EvaluatorType evaluator.EvaluatorType `thrift:"evaluator_type,4,required" frugal:"4,required,EvaluatorType" json:"evaluator_type" form:"evaluator_type,required" ` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` + // 评估器运行配置参数 + EvaluatorRunConf *evaluator.EvaluatorRunConfig `thrift:"evaluator_run_conf,11,optional" frugal:"11,optional,evaluator.EvaluatorRunConfig" form:"evaluator_run_conf" json:"evaluator_run_conf,omitempty"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } func NewBatchDebugEvaluatorRequest() *BatchDebugEvaluatorRequest { @@ -11629,6 +11771,18 @@ func (p *BatchDebugEvaluatorRequest) GetEvaluatorType() (v evaluator.EvaluatorTy return } +var BatchDebugEvaluatorRequest_EvaluatorRunConf_DEFAULT *evaluator.EvaluatorRunConfig + +func (p *BatchDebugEvaluatorRequest) GetEvaluatorRunConf() (v *evaluator.EvaluatorRunConfig) { + if p == nil { + return + } + if !p.IsSetEvaluatorRunConf() { + return BatchDebugEvaluatorRequest_EvaluatorRunConf_DEFAULT + } + return p.EvaluatorRunConf +} + var BatchDebugEvaluatorRequest_Base_DEFAULT *base.Base func (p *BatchDebugEvaluatorRequest) GetBase() (v *base.Base) { @@ -11652,6 +11806,9 @@ func (p *BatchDebugEvaluatorRequest) SetInputData(val []*evaluator.EvaluatorInpu func (p *BatchDebugEvaluatorRequest) SetEvaluatorType(val evaluator.EvaluatorType) { p.EvaluatorType = val } +func (p *BatchDebugEvaluatorRequest) SetEvaluatorRunConf(val *evaluator.EvaluatorRunConfig) { + p.EvaluatorRunConf = val +} func (p *BatchDebugEvaluatorRequest) SetBase(val *base.Base) { p.Base = val } @@ -11661,6 +11818,7 @@ var fieldIDToName_BatchDebugEvaluatorRequest = map[int16]string{ 2: "evaluator_content", 3: "input_data", 4: "evaluator_type", + 11: "evaluator_run_conf", 255: "Base", } @@ -11668,6 +11826,10 @@ func (p *BatchDebugEvaluatorRequest) IsSetEvaluatorContent() bool { return p.EvaluatorContent != nil } +func (p *BatchDebugEvaluatorRequest) IsSetEvaluatorRunConf() bool { + return p.EvaluatorRunConf != nil +} + func (p *BatchDebugEvaluatorRequest) IsSetBase() bool { return p.Base != nil } @@ -11730,6 +11892,14 @@ func (p *BatchDebugEvaluatorRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 11: + if fieldTypeId == thrift.STRUCT { + if err = p.ReadField11(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 255: if fieldTypeId == thrift.STRUCT { if err = p.ReadField255(iprot); err != nil { @@ -11841,6 +12011,14 @@ func (p *BatchDebugEvaluatorRequest) ReadField4(iprot thrift.TProtocol) error { p.EvaluatorType = _field return nil } +func (p *BatchDebugEvaluatorRequest) ReadField11(iprot thrift.TProtocol) error { + _field := evaluator.NewEvaluatorRunConfig() + if err := _field.Read(iprot); err != nil { + return err + } + p.EvaluatorRunConf = _field + return nil +} func (p *BatchDebugEvaluatorRequest) ReadField255(iprot thrift.TProtocol) error { _field := base.NewBase() if err := _field.Read(iprot); err != nil { @@ -11872,6 +12050,10 @@ func (p *BatchDebugEvaluatorRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 4 goto WriteFieldError } + if err = p.writeField11(oprot); err != nil { + fieldId = 11 + goto WriteFieldError + } if err = p.writeField255(oprot); err != nil { fieldId = 255 goto WriteFieldError @@ -11966,6 +12148,24 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 4 end error: ", p), err) } +func (p *BatchDebugEvaluatorRequest) writeField11(oprot thrift.TProtocol) (err error) { + if p.IsSetEvaluatorRunConf() { + if err = oprot.WriteFieldBegin("evaluator_run_conf", thrift.STRUCT, 11); err != nil { + goto WriteFieldBeginError + } + if err := p.EvaluatorRunConf.Write(oprot); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 11 end error: ", p), err) +} func (p *BatchDebugEvaluatorRequest) writeField255(oprot thrift.TProtocol) (err error) { if p.IsSetBase() { if err = oprot.WriteFieldBegin("Base", thrift.STRUCT, 255); err != nil { @@ -12011,6 +12211,9 @@ func (p *BatchDebugEvaluatorRequest) DeepEqual(ano *BatchDebugEvaluatorRequest) if !p.Field4DeepEqual(ano.EvaluatorType) { return false } + if !p.Field11DeepEqual(ano.EvaluatorRunConf) { + return false + } if !p.Field255DeepEqual(ano.Base) { return false } @@ -12051,6 +12254,13 @@ func (p *BatchDebugEvaluatorRequest) Field4DeepEqual(src evaluator.EvaluatorType } return true } +func (p *BatchDebugEvaluatorRequest) Field11DeepEqual(src *evaluator.EvaluatorRunConfig) bool { + + if !p.EvaluatorRunConf.DeepEqual(src) { + return false + } + return true +} func (p *BatchDebugEvaluatorRequest) Field255DeepEqual(src *base.Base) bool { if !p.Base.DeepEqual(src) { diff --git a/backend/kitex_gen/coze/loop/evaluation/evaluator/coze.loop.evaluation.evaluator_validator.go b/backend/kitex_gen/coze/loop/evaluation/evaluator/coze.loop.evaluation.evaluator_validator.go index e08876a63..d65d76d98 100644 --- a/backend/kitex_gen/coze/loop/evaluation/evaluator/coze.loop.evaluation.evaluator_validator.go +++ b/backend/kitex_gen/coze/loop/evaluation/evaluator/coze.loop.evaluation.evaluator_validator.go @@ -300,6 +300,11 @@ func (p *RunEvaluatorRequest) IsValid() error { return fmt.Errorf("field InputData not valid, %w", err) } } + if p.EvaluatorRunConf != nil { + if err := p.EvaluatorRunConf.IsValid(); err != nil { + return fmt.Errorf("field EvaluatorRunConf not valid, %w", err) + } + } if p.Base != nil { if err := p.Base.IsValid(); err != nil { return fmt.Errorf("field Base not valid, %w", err) @@ -331,6 +336,11 @@ func (p *DebugEvaluatorRequest) IsValid() error { return fmt.Errorf("field InputData not valid, %w", err) } } + if p.EvaluatorRunConf != nil { + if err := p.EvaluatorRunConf.IsValid(); err != nil { + return fmt.Errorf("field EvaluatorRunConf not valid, %w", err) + } + } if p.Base != nil { if err := p.Base.IsValid(); err != nil { return fmt.Errorf("field Base not valid, %w", err) @@ -357,6 +367,11 @@ func (p *BatchDebugEvaluatorRequest) IsValid() error { return fmt.Errorf("field EvaluatorContent not valid, %w", err) } } + if p.EvaluatorRunConf != nil { + if err := p.EvaluatorRunConf.IsValid(); err != nil { + return fmt.Errorf("field EvaluatorRunConf not valid, %w", err) + } + } if p.Base != nil { if err := p.Base.IsValid(); err != nil { return fmt.Errorf("field Base not valid, %w", err) diff --git a/backend/kitex_gen/coze/loop/evaluation/evaluator/k-coze.loop.evaluation.evaluator.go b/backend/kitex_gen/coze/loop/evaluation/evaluator/k-coze.loop.evaluation.evaluator.go index 1235c6cc9..f588c033c 100644 --- a/backend/kitex_gen/coze/loop/evaluation/evaluator/k-coze.loop.evaluation.evaluator.go +++ b/backend/kitex_gen/coze/loop/evaluation/evaluator/k-coze.loop.evaluation.evaluator.go @@ -7263,6 +7263,20 @@ func (p *RunEvaluatorRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 11: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField11(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 100: if fieldTypeId == thrift.MAP { l, err = p.FastReadField100(buf[offset:]) @@ -7421,6 +7435,18 @@ func (p *RunEvaluatorRequest) FastReadField7(buf []byte) (int, error) { return offset, nil } +func (p *RunEvaluatorRequest) FastReadField11(buf []byte) (int, error) { + offset := 0 + _field := evaluator.NewEvaluatorRunConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.EvaluatorRunConf = _field + return offset, nil +} + func (p *RunEvaluatorRequest) FastReadField100(buf []byte) (int, error) { offset := 0 @@ -7479,6 +7505,7 @@ func (p *RunEvaluatorRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWriter) offset += p.fastWriteField6(buf[offset:], w) offset += p.fastWriteField7(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField11(buf[offset:], w) offset += p.fastWriteField100(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } @@ -7496,6 +7523,7 @@ func (p *RunEvaluatorRequest) BLength() int { l += p.field5Length() l += p.field6Length() l += p.field7Length() + l += p.field11Length() l += p.field100Length() l += p.field255Length() } @@ -7560,6 +7588,15 @@ func (p *RunEvaluatorRequest) fastWriteField7(buf []byte, w thrift.NocopyWriter) return offset } +func (p *RunEvaluatorRequest) fastWriteField11(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvaluatorRunConf() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 11) + offset += p.EvaluatorRunConf.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *RunEvaluatorRequest) fastWriteField100(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetExt() { @@ -7643,6 +7680,15 @@ func (p *RunEvaluatorRequest) field7Length() int { return l } +func (p *RunEvaluatorRequest) field11Length() int { + l := 0 + if p.IsSetEvaluatorRunConf() { + l += thrift.Binary.FieldBeginLength() + l += p.EvaluatorRunConf.BLength() + } + return l +} + func (p *RunEvaluatorRequest) field100Length() int { l := 0 if p.IsSetExt() { @@ -7706,6 +7752,15 @@ func (p *RunEvaluatorRequest) DeepCopy(s interface{}) error { p.TurnID = &tmp } + var _evaluatorRunConf *evaluator.EvaluatorRunConfig + if src.EvaluatorRunConf != nil { + _evaluatorRunConf = &evaluator.EvaluatorRunConfig{} + if err := _evaluatorRunConf.DeepCopy(src.EvaluatorRunConf); err != nil { + return err + } + } + p.EvaluatorRunConf = _evaluatorRunConf + if src.Ext != nil { p.Ext = make(map[string]string, len(src.Ext)) for key, val := range src.Ext { @@ -7990,6 +8045,20 @@ func (p *DebugEvaluatorRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 11: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField11(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 255: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField255(buf[offset:]) @@ -8096,6 +8165,18 @@ func (p *DebugEvaluatorRequest) FastReadField4(buf []byte) (int, error) { return offset, nil } +func (p *DebugEvaluatorRequest) FastReadField11(buf []byte) (int, error) { + offset := 0 + _field := evaluator.NewEvaluatorRunConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.EvaluatorRunConf = _field + return offset, nil +} + func (p *DebugEvaluatorRequest) FastReadField255(buf []byte) (int, error) { offset := 0 _field := base.NewBase() @@ -8119,6 +8200,7 @@ func (p *DebugEvaluatorRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWrite offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField11(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) @@ -8132,6 +8214,7 @@ func (p *DebugEvaluatorRequest) BLength() int { l += p.field2Length() l += p.field3Length() l += p.field4Length() + l += p.field11Length() l += p.field255Length() } l += thrift.Binary.FieldStopLength() @@ -8166,6 +8249,15 @@ func (p *DebugEvaluatorRequest) fastWriteField4(buf []byte, w thrift.NocopyWrite return offset } +func (p *DebugEvaluatorRequest) fastWriteField11(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvaluatorRunConf() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 11) + offset += p.EvaluatorRunConf.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *DebugEvaluatorRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetBase() { @@ -8203,6 +8295,15 @@ func (p *DebugEvaluatorRequest) field4Length() int { return l } +func (p *DebugEvaluatorRequest) field11Length() int { + l := 0 + if p.IsSetEvaluatorRunConf() { + l += thrift.Binary.FieldBeginLength() + l += p.EvaluatorRunConf.BLength() + } + return l +} + func (p *DebugEvaluatorRequest) field255Length() int { l := 0 if p.IsSetBase() { @@ -8240,6 +8341,15 @@ func (p *DebugEvaluatorRequest) DeepCopy(s interface{}) error { p.EvaluatorType = src.EvaluatorType + var _evaluatorRunConf *evaluator.EvaluatorRunConfig + if src.EvaluatorRunConf != nil { + _evaluatorRunConf = &evaluator.EvaluatorRunConfig{} + if err := _evaluatorRunConf.DeepCopy(src.EvaluatorRunConf); err != nil { + return err + } + } + p.EvaluatorRunConf = _evaluatorRunConf + var _base *base.Base if src.Base != nil { _base = &base.Base{} @@ -8503,6 +8613,20 @@ func (p *BatchDebugEvaluatorRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 11: + if fieldTypeId == thrift.STRUCT { + l, err = p.FastReadField11(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 255: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField255(buf[offset:]) @@ -8622,6 +8746,18 @@ func (p *BatchDebugEvaluatorRequest) FastReadField4(buf []byte) (int, error) { return offset, nil } +func (p *BatchDebugEvaluatorRequest) FastReadField11(buf []byte) (int, error) { + offset := 0 + _field := evaluator.NewEvaluatorRunConfig() + if l, err := _field.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + p.EvaluatorRunConf = _field + return offset, nil +} + func (p *BatchDebugEvaluatorRequest) FastReadField255(buf []byte) (int, error) { offset := 0 _field := base.NewBase() @@ -8645,6 +8781,7 @@ func (p *BatchDebugEvaluatorRequest) FastWriteNocopy(buf []byte, w thrift.Nocopy offset += p.fastWriteField2(buf[offset:], w) offset += p.fastWriteField3(buf[offset:], w) offset += p.fastWriteField4(buf[offset:], w) + offset += p.fastWriteField11(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) @@ -8658,6 +8795,7 @@ func (p *BatchDebugEvaluatorRequest) BLength() int { l += p.field2Length() l += p.field3Length() l += p.field4Length() + l += p.field11Length() l += p.field255Length() } l += thrift.Binary.FieldStopLength() @@ -8699,6 +8837,15 @@ func (p *BatchDebugEvaluatorRequest) fastWriteField4(buf []byte, w thrift.Nocopy return offset } +func (p *BatchDebugEvaluatorRequest) fastWriteField11(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvaluatorRunConf() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.STRUCT, 11) + offset += p.EvaluatorRunConf.FastWriteNocopy(buf[offset:], w) + } + return offset +} + func (p *BatchDebugEvaluatorRequest) fastWriteField255(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetBase() { @@ -8740,6 +8887,15 @@ func (p *BatchDebugEvaluatorRequest) field4Length() int { return l } +func (p *BatchDebugEvaluatorRequest) field11Length() int { + l := 0 + if p.IsSetEvaluatorRunConf() { + l += thrift.Binary.FieldBeginLength() + l += p.EvaluatorRunConf.BLength() + } + return l +} + func (p *BatchDebugEvaluatorRequest) field255Length() int { l := 0 if p.IsSetBase() { @@ -8783,6 +8939,15 @@ func (p *BatchDebugEvaluatorRequest) DeepCopy(s interface{}) error { p.EvaluatorType = src.EvaluatorType + var _evaluatorRunConf *evaluator.EvaluatorRunConfig + if src.EvaluatorRunConf != nil { + _evaluatorRunConf = &evaluator.EvaluatorRunConfig{} + if err := _evaluatorRunConf.DeepCopy(src.EvaluatorRunConf); err != nil { + return err + } + } + p.EvaluatorRunConf = _evaluatorRunConf + var _base *base.Base if src.Base != nil { _base = &base.Base{} diff --git a/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go b/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go index e7aa91950..9095feb73 100644 --- a/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/expt/coze.loop.evaluation.expt.go @@ -45,8 +45,10 @@ type CreateExperimentRequest struct { MaxAliveTime *int64 `thrift:"max_alive_time,31,optional" frugal:"31,optional,i64" form:"max_alive_time" json:"max_alive_time,omitempty"` SourceType *expt.SourceType `thrift:"source_type,32,optional" frugal:"32,optional,SourceType" form:"source_type" json:"source_type,omitempty"` SourceID *string `thrift:"source_id,33,optional" frugal:"33,optional,string" form:"source_id" json:"source_id,omitempty"` - Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"session" json:"session,omitempty" query:"session"` - Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` + // 评估器版本ID对应的评估器运行配置信息 + EvaluatorVersionRunConfigs map[int64]*evaluator.EvaluatorRunConfig `thrift:"evaluator_version_run_configs,41,optional" frugal:"41,optional,map" form:"evaluator_version_run_configs" json:"evaluator_version_run_configs,string,omitempty"` + Session *common.Session `thrift:"session,200,optional" frugal:"200,optional,common.Session" form:"session" json:"session,omitempty" query:"session"` + Base *base.Base `thrift:"Base,255,optional" frugal:"255,optional,base.Base" form:"Base" json:"Base,omitempty" query:"Base"` } func NewCreateExperimentRequest() *CreateExperimentRequest { @@ -267,6 +269,18 @@ func (p *CreateExperimentRequest) GetSourceID() (v string) { return *p.SourceID } +var CreateExperimentRequest_EvaluatorVersionRunConfigs_DEFAULT map[int64]*evaluator.EvaluatorRunConfig + +func (p *CreateExperimentRequest) GetEvaluatorVersionRunConfigs() (v map[int64]*evaluator.EvaluatorRunConfig) { + if p == nil { + return + } + if !p.IsSetEvaluatorVersionRunConfigs() { + return CreateExperimentRequest_EvaluatorVersionRunConfigs_DEFAULT + } + return p.EvaluatorVersionRunConfigs +} + var CreateExperimentRequest_Session_DEFAULT *common.Session func (p *CreateExperimentRequest) GetSession() (v *common.Session) { @@ -344,6 +358,9 @@ func (p *CreateExperimentRequest) SetSourceType(val *expt.SourceType) { func (p *CreateExperimentRequest) SetSourceID(val *string) { p.SourceID = val } +func (p *CreateExperimentRequest) SetEvaluatorVersionRunConfigs(val map[int64]*evaluator.EvaluatorRunConfig) { + p.EvaluatorVersionRunConfigs = val +} func (p *CreateExperimentRequest) SetSession(val *common.Session) { p.Session = val } @@ -370,6 +387,7 @@ var fieldIDToName_CreateExperimentRequest = map[int16]string{ 31: "max_alive_time", 32: "source_type", 33: "source_id", + 41: "evaluator_version_run_configs", 200: "session", 255: "Base", } @@ -442,6 +460,10 @@ func (p *CreateExperimentRequest) IsSetSourceID() bool { return p.SourceID != nil } +func (p *CreateExperimentRequest) IsSetEvaluatorVersionRunConfigs() bool { + return p.EvaluatorVersionRunConfigs != nil +} + func (p *CreateExperimentRequest) IsSetSession() bool { return p.Session != nil } @@ -614,6 +636,14 @@ func (p *CreateExperimentRequest) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 41: + if fieldTypeId == thrift.MAP { + if err = p.ReadField41(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } case 200: if fieldTypeId == thrift.STRUCT { if err = p.ReadField200(iprot); err != nil { @@ -880,6 +910,35 @@ func (p *CreateExperimentRequest) ReadField33(iprot thrift.TProtocol) error { p.SourceID = _field return nil } +func (p *CreateExperimentRequest) ReadField41(iprot thrift.TProtocol) error { + _, _, size, err := iprot.ReadMapBegin() + if err != nil { + return err + } + _field := make(map[int64]*evaluator.EvaluatorRunConfig, size) + values := make([]evaluator.EvaluatorRunConfig, size) + for i := 0; i < size; i++ { + var _key int64 + if v, err := iprot.ReadI64(); err != nil { + return err + } else { + _key = v + } + + _val := &values[i] + _val.InitDefault() + if err := _val.Read(iprot); err != nil { + return err + } + + _field[_key] = _val + } + if err := iprot.ReadMapEnd(); err != nil { + return err + } + p.EvaluatorVersionRunConfigs = _field + return nil +} func (p *CreateExperimentRequest) ReadField200(iprot thrift.TProtocol) error { _field := common.NewSession() if err := _field.Read(iprot); err != nil { @@ -975,6 +1034,10 @@ func (p *CreateExperimentRequest) Write(oprot thrift.TProtocol) (err error) { fieldId = 33 goto WriteFieldError } + if err = p.writeField41(oprot); err != nil { + fieldId = 41 + goto WriteFieldError + } if err = p.writeField200(oprot); err != nil { fieldId = 200 goto WriteFieldError @@ -1339,6 +1402,35 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 33 end error: ", p), err) } +func (p *CreateExperimentRequest) writeField41(oprot thrift.TProtocol) (err error) { + if p.IsSetEvaluatorVersionRunConfigs() { + if err = oprot.WriteFieldBegin("evaluator_version_run_configs", thrift.MAP, 41); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteMapBegin(thrift.I64, thrift.STRUCT, len(p.EvaluatorVersionRunConfigs)); err != nil { + return err + } + for k, v := range p.EvaluatorVersionRunConfigs { + if err := oprot.WriteI64(k); err != nil { + return err + } + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteMapEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 41 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 41 end error: ", p), err) +} func (p *CreateExperimentRequest) writeField200(oprot thrift.TProtocol) (err error) { if p.IsSetSession() { if err = oprot.WriteFieldBegin("session", thrift.STRUCT, 200); err != nil { @@ -1444,6 +1536,9 @@ func (p *CreateExperimentRequest) DeepEqual(ano *CreateExperimentRequest) bool { if !p.Field33DeepEqual(ano.SourceID) { return false } + if !p.Field41DeepEqual(ano.EvaluatorVersionRunConfigs) { + return false + } if !p.Field200DeepEqual(ano.Session) { return false } @@ -1651,6 +1746,19 @@ func (p *CreateExperimentRequest) Field33DeepEqual(src *string) bool { } return true } +func (p *CreateExperimentRequest) Field41DeepEqual(src map[int64]*evaluator.EvaluatorRunConfig) bool { + + if len(p.EvaluatorVersionRunConfigs) != len(src) { + return false + } + for k, v := range p.EvaluatorVersionRunConfigs { + _src := src[k] + if !v.DeepEqual(_src) { + return false + } + } + return true +} func (p *CreateExperimentRequest) Field200DeepEqual(src *common.Session) bool { if !p.Session.DeepEqual(src) { diff --git a/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go b/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go index c77ba145a..b4af38f59 100644 --- a/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go +++ b/backend/kitex_gen/coze/loop/evaluation/expt/k-coze.loop.evaluation.expt.go @@ -310,6 +310,20 @@ func (p *CreateExperimentRequest) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 41: + if fieldTypeId == thrift.MAP { + l, err = p.FastReadField41(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } case 200: if fieldTypeId == thrift.STRUCT { l, err = p.FastReadField200(buf[offset:]) @@ -633,6 +647,39 @@ func (p *CreateExperimentRequest) FastReadField33(buf []byte) (int, error) { return offset, nil } +func (p *CreateExperimentRequest) FastReadField41(buf []byte) (int, error) { + offset := 0 + + _, _, size, l, err := thrift.Binary.ReadMapBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make(map[int64]*evaluator.EvaluatorRunConfig, size) + values := make([]evaluator.EvaluatorRunConfig, size) + for i := 0; i < size; i++ { + var _key int64 + if v, l, err := thrift.Binary.ReadI64(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _key = v + } + + _val := &values[i] + _val.InitDefault() + if l, err := _val.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field[_key] = _val + } + p.EvaluatorVersionRunConfigs = _field + return offset, nil +} + func (p *CreateExperimentRequest) FastReadField200(buf []byte) (int, error) { offset := 0 _field := common.NewSession() @@ -682,6 +729,7 @@ func (p *CreateExperimentRequest) FastWriteNocopy(buf []byte, w thrift.NocopyWri offset += p.fastWriteField30(buf[offset:], w) offset += p.fastWriteField32(buf[offset:], w) offset += p.fastWriteField33(buf[offset:], w) + offset += p.fastWriteField41(buf[offset:], w) offset += p.fastWriteField200(buf[offset:], w) offset += p.fastWriteField255(buf[offset:], w) } @@ -710,6 +758,7 @@ func (p *CreateExperimentRequest) BLength() int { l += p.field31Length() l += p.field32Length() l += p.field33Length() + l += p.field41Length() l += p.field200Length() l += p.field255Length() } @@ -891,6 +940,23 @@ func (p *CreateExperimentRequest) fastWriteField33(buf []byte, w thrift.NocopyWr return offset } +func (p *CreateExperimentRequest) fastWriteField41(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvaluatorVersionRunConfigs() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.MAP, 41) + mapBeginOffset := offset + offset += thrift.Binary.MapBeginLength() + var length int + for k, v := range p.EvaluatorVersionRunConfigs { + length++ + offset += thrift.Binary.WriteI64(buf[offset:], k) + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteMapBegin(buf[mapBeginOffset:], thrift.I64, thrift.STRUCT, length) + } + return offset +} + func (p *CreateExperimentRequest) fastWriteField200(buf []byte, w thrift.NocopyWriter) int { offset := 0 if p.IsSetSession() { @@ -1075,6 +1141,21 @@ func (p *CreateExperimentRequest) field33Length() int { return l } +func (p *CreateExperimentRequest) field41Length() int { + l := 0 + if p.IsSetEvaluatorVersionRunConfigs() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.MapBeginLength() + for k, v := range p.EvaluatorVersionRunConfigs { + _, _ = k, v + + l += thrift.Binary.I64Length() + l += v.BLength() + } + } + return l +} + func (p *CreateExperimentRequest) field200Length() int { l := 0 if p.IsSetSession() { @@ -1221,6 +1302,24 @@ func (p *CreateExperimentRequest) DeepCopy(s interface{}) error { p.SourceID = &tmp } + if src.EvaluatorVersionRunConfigs != nil { + p.EvaluatorVersionRunConfigs = make(map[int64]*evaluator.EvaluatorRunConfig, len(src.EvaluatorVersionRunConfigs)) + for key, val := range src.EvaluatorVersionRunConfigs { + var _key int64 + _key = key + + var _val *evaluator.EvaluatorRunConfig + if val != nil { + _val = &evaluator.EvaluatorRunConfig{} + if err := _val.DeepCopy(val); err != nil { + return err + } + } + + p.EvaluatorVersionRunConfigs[_key] = _val + } + } + var _session *common.Session if src.Session != nil { _session = &common.Session{} diff --git a/backend/kitex_gen/coze/loop/evaluation/spi/coze.loop.evaluation.spi.go b/backend/kitex_gen/coze/loop/evaluation/spi/coze.loop.evaluation.spi.go index 79e584c0c..9c5b09bca 100644 --- a/backend/kitex_gen/coze/loop/evaluation/spi/coze.loop.evaluation.spi.go +++ b/backend/kitex_gen/coze/loop/evaluation/spi/coze.loop.evaluation.spi.go @@ -4625,6 +4625,12 @@ func (p *InvokeCustomEvaluator) Field1DeepEqual(src *string) bool { type InvokeEvaluatorInputData struct { // key-value structure of input variables required by the evaluator InputFields map[string]*Content `thrift:"input_fields,1,optional" frugal:"1,optional,map" form:"input_fields" json:"input_fields,omitempty" query:"input_fields"` + // key-value structure of dataset variables required by the evaluator + EvaluateDatasetFields map[string]*Content `thrift:"evaluate_dataset_fields,2,optional" frugal:"2,optional,map" form:"evaluate_dataset_fields" json:"evaluate_dataset_fields,omitempty" query:"evaluate_dataset_fields"` + // key-value structure of target output variables required by the evaluator + EvaluateTargetOutputFields map[string]*Content `thrift:"evaluate_target_output_fields,3,optional" frugal:"3,optional,map" form:"evaluate_target_output_fields" json:"evaluate_target_output_fields,omitempty" query:"evaluate_target_output_fields"` + // dynamic fields for inject parameters + Ext map[string]string `thrift:"ext,20,optional" frugal:"20,optional,map" form:"ext" json:"ext,omitempty" query:"ext"` } func NewInvokeEvaluatorInputData() *InvokeEvaluatorInputData { @@ -4645,18 +4651,78 @@ func (p *InvokeEvaluatorInputData) GetInputFields() (v map[string]*Content) { } return p.InputFields } + +var InvokeEvaluatorInputData_EvaluateDatasetFields_DEFAULT map[string]*Content + +func (p *InvokeEvaluatorInputData) GetEvaluateDatasetFields() (v map[string]*Content) { + if p == nil { + return + } + if !p.IsSetEvaluateDatasetFields() { + return InvokeEvaluatorInputData_EvaluateDatasetFields_DEFAULT + } + return p.EvaluateDatasetFields +} + +var InvokeEvaluatorInputData_EvaluateTargetOutputFields_DEFAULT map[string]*Content + +func (p *InvokeEvaluatorInputData) GetEvaluateTargetOutputFields() (v map[string]*Content) { + if p == nil { + return + } + if !p.IsSetEvaluateTargetOutputFields() { + return InvokeEvaluatorInputData_EvaluateTargetOutputFields_DEFAULT + } + return p.EvaluateTargetOutputFields +} + +var InvokeEvaluatorInputData_Ext_DEFAULT map[string]string + +func (p *InvokeEvaluatorInputData) GetExt() (v map[string]string) { + if p == nil { + return + } + if !p.IsSetExt() { + return InvokeEvaluatorInputData_Ext_DEFAULT + } + return p.Ext +} func (p *InvokeEvaluatorInputData) SetInputFields(val map[string]*Content) { p.InputFields = val } +func (p *InvokeEvaluatorInputData) SetEvaluateDatasetFields(val map[string]*Content) { + p.EvaluateDatasetFields = val +} +func (p *InvokeEvaluatorInputData) SetEvaluateTargetOutputFields(val map[string]*Content) { + p.EvaluateTargetOutputFields = val +} +func (p *InvokeEvaluatorInputData) SetExt(val map[string]string) { + p.Ext = val +} var fieldIDToName_InvokeEvaluatorInputData = map[int16]string{ - 1: "input_fields", + 1: "input_fields", + 2: "evaluate_dataset_fields", + 3: "evaluate_target_output_fields", + 20: "ext", } func (p *InvokeEvaluatorInputData) IsSetInputFields() bool { return p.InputFields != nil } +func (p *InvokeEvaluatorInputData) IsSetEvaluateDatasetFields() bool { + return p.EvaluateDatasetFields != nil +} + +func (p *InvokeEvaluatorInputData) IsSetEvaluateTargetOutputFields() bool { + return p.EvaluateTargetOutputFields != nil +} + +func (p *InvokeEvaluatorInputData) IsSetExt() bool { + return p.Ext != nil +} + func (p *InvokeEvaluatorInputData) Read(iprot thrift.TProtocol) (err error) { var fieldTypeId thrift.TType var fieldId int16 @@ -4683,6 +4749,30 @@ func (p *InvokeEvaluatorInputData) Read(iprot thrift.TProtocol) (err error) { } else if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError } + case 2: + if fieldTypeId == thrift.MAP { + if err = p.ReadField2(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 3: + if fieldTypeId == thrift.MAP { + if err = p.ReadField3(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } + case 20: + if fieldTypeId == thrift.MAP { + if err = p.ReadField20(iprot); err != nil { + goto ReadFieldError + } + } else if err = iprot.Skip(fieldTypeId); err != nil { + goto SkipFieldError + } default: if err = iprot.Skip(fieldTypeId); err != nil { goto SkipFieldError @@ -4741,6 +4831,93 @@ func (p *InvokeEvaluatorInputData) ReadField1(iprot thrift.TProtocol) error { p.InputFields = _field return nil } +func (p *InvokeEvaluatorInputData) ReadField2(iprot thrift.TProtocol) error { + _, _, size, err := iprot.ReadMapBegin() + if err != nil { + return err + } + _field := make(map[string]*Content, size) + values := make([]Content, size) + for i := 0; i < size; i++ { + var _key string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _key = v + } + + _val := &values[i] + _val.InitDefault() + if err := _val.Read(iprot); err != nil { + return err + } + + _field[_key] = _val + } + if err := iprot.ReadMapEnd(); err != nil { + return err + } + p.EvaluateDatasetFields = _field + return nil +} +func (p *InvokeEvaluatorInputData) ReadField3(iprot thrift.TProtocol) error { + _, _, size, err := iprot.ReadMapBegin() + if err != nil { + return err + } + _field := make(map[string]*Content, size) + values := make([]Content, size) + for i := 0; i < size; i++ { + var _key string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _key = v + } + + _val := &values[i] + _val.InitDefault() + if err := _val.Read(iprot); err != nil { + return err + } + + _field[_key] = _val + } + if err := iprot.ReadMapEnd(); err != nil { + return err + } + p.EvaluateTargetOutputFields = _field + return nil +} +func (p *InvokeEvaluatorInputData) ReadField20(iprot thrift.TProtocol) error { + _, _, size, err := iprot.ReadMapBegin() + if err != nil { + return err + } + _field := make(map[string]string, size) + for i := 0; i < size; i++ { + var _key string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _key = v + } + + var _val string + if v, err := iprot.ReadString(); err != nil { + return err + } else { + _val = v + } + + _field[_key] = _val + } + if err := iprot.ReadMapEnd(); err != nil { + return err + } + p.Ext = _field + return nil +} func (p *InvokeEvaluatorInputData) Write(oprot thrift.TProtocol) (err error) { var fieldId int16 @@ -4752,6 +4929,18 @@ func (p *InvokeEvaluatorInputData) Write(oprot thrift.TProtocol) (err error) { fieldId = 1 goto WriteFieldError } + if err = p.writeField2(oprot); err != nil { + fieldId = 2 + goto WriteFieldError + } + if err = p.writeField3(oprot); err != nil { + fieldId = 3 + goto WriteFieldError + } + if err = p.writeField20(oprot); err != nil { + fieldId = 20 + goto WriteFieldError + } } if err = oprot.WriteFieldStop(); err != nil { goto WriteFieldStopError @@ -4799,6 +4988,93 @@ WriteFieldBeginError: WriteFieldEndError: return thrift.PrependError(fmt.Sprintf("%T write field 1 end error: ", p), err) } +func (p *InvokeEvaluatorInputData) writeField2(oprot thrift.TProtocol) (err error) { + if p.IsSetEvaluateDatasetFields() { + if err = oprot.WriteFieldBegin("evaluate_dataset_fields", thrift.MAP, 2); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteMapBegin(thrift.STRING, thrift.STRUCT, len(p.EvaluateDatasetFields)); err != nil { + return err + } + for k, v := range p.EvaluateDatasetFields { + if err := oprot.WriteString(k); err != nil { + return err + } + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteMapEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 2 end error: ", p), err) +} +func (p *InvokeEvaluatorInputData) writeField3(oprot thrift.TProtocol) (err error) { + if p.IsSetEvaluateTargetOutputFields() { + if err = oprot.WriteFieldBegin("evaluate_target_output_fields", thrift.MAP, 3); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteMapBegin(thrift.STRING, thrift.STRUCT, len(p.EvaluateTargetOutputFields)); err != nil { + return err + } + for k, v := range p.EvaluateTargetOutputFields { + if err := oprot.WriteString(k); err != nil { + return err + } + if err := v.Write(oprot); err != nil { + return err + } + } + if err := oprot.WriteMapEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 3 end error: ", p), err) +} +func (p *InvokeEvaluatorInputData) writeField20(oprot thrift.TProtocol) (err error) { + if p.IsSetExt() { + if err = oprot.WriteFieldBegin("ext", thrift.MAP, 20); err != nil { + goto WriteFieldBeginError + } + if err := oprot.WriteMapBegin(thrift.STRING, thrift.STRING, len(p.Ext)); err != nil { + return err + } + for k, v := range p.Ext { + if err := oprot.WriteString(k); err != nil { + return err + } + if err := oprot.WriteString(v); err != nil { + return err + } + } + if err := oprot.WriteMapEnd(); err != nil { + return err + } + if err = oprot.WriteFieldEnd(); err != nil { + goto WriteFieldEndError + } + } + return nil +WriteFieldBeginError: + return thrift.PrependError(fmt.Sprintf("%T write field 20 begin error: ", p), err) +WriteFieldEndError: + return thrift.PrependError(fmt.Sprintf("%T write field 20 end error: ", p), err) +} func (p *InvokeEvaluatorInputData) String() string { if p == nil { @@ -4817,6 +5093,15 @@ func (p *InvokeEvaluatorInputData) DeepEqual(ano *InvokeEvaluatorInputData) bool if !p.Field1DeepEqual(ano.InputFields) { return false } + if !p.Field2DeepEqual(ano.EvaluateDatasetFields) { + return false + } + if !p.Field3DeepEqual(ano.EvaluateTargetOutputFields) { + return false + } + if !p.Field20DeepEqual(ano.Ext) { + return false + } return true } @@ -4833,6 +5118,45 @@ func (p *InvokeEvaluatorInputData) Field1DeepEqual(src map[string]*Content) bool } return true } +func (p *InvokeEvaluatorInputData) Field2DeepEqual(src map[string]*Content) bool { + + if len(p.EvaluateDatasetFields) != len(src) { + return false + } + for k, v := range p.EvaluateDatasetFields { + _src := src[k] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *InvokeEvaluatorInputData) Field3DeepEqual(src map[string]*Content) bool { + + if len(p.EvaluateTargetOutputFields) != len(src) { + return false + } + for k, v := range p.EvaluateTargetOutputFields { + _src := src[k] + if !v.DeepEqual(_src) { + return false + } + } + return true +} +func (p *InvokeEvaluatorInputData) Field20DeepEqual(src map[string]string) bool { + + if len(p.Ext) != len(src) { + return false + } + for k, v := range p.Ext { + _src := src[k] + if strings.Compare(v, _src) != 0 { + return false + } + } + return true +} // the output data structure for custom evaluator type InvokeEvaluatorOutputData struct { diff --git a/backend/kitex_gen/coze/loop/evaluation/spi/k-coze.loop.evaluation.spi.go b/backend/kitex_gen/coze/loop/evaluation/spi/k-coze.loop.evaluation.spi.go index 3339ea2a0..09df86e51 100644 --- a/backend/kitex_gen/coze/loop/evaluation/spi/k-coze.loop.evaluation.spi.go +++ b/backend/kitex_gen/coze/loop/evaluation/spi/k-coze.loop.evaluation.spi.go @@ -3302,6 +3302,48 @@ func (p *InvokeEvaluatorInputData) FastRead(buf []byte) (int, error) { goto SkipFieldError } } + case 2: + if fieldTypeId == thrift.MAP { + l, err = p.FastReadField2(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 3: + if fieldTypeId == thrift.MAP { + l, err = p.FastReadField3(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } + case 20: + if fieldTypeId == thrift.MAP { + l, err = p.FastReadField20(buf[offset:]) + offset += l + if err != nil { + goto ReadFieldError + } + } else { + l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) + offset += l + if err != nil { + goto SkipFieldError + } + } default: l, err = thrift.Binary.Skip(buf[offset:], fieldTypeId) offset += l @@ -3353,6 +3395,104 @@ func (p *InvokeEvaluatorInputData) FastReadField1(buf []byte) (int, error) { return offset, nil } +func (p *InvokeEvaluatorInputData) FastReadField2(buf []byte) (int, error) { + offset := 0 + + _, _, size, l, err := thrift.Binary.ReadMapBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make(map[string]*Content, size) + values := make([]Content, size) + for i := 0; i < size; i++ { + var _key string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _key = v + } + + _val := &values[i] + _val.InitDefault() + if l, err := _val.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field[_key] = _val + } + p.EvaluateDatasetFields = _field + return offset, nil +} + +func (p *InvokeEvaluatorInputData) FastReadField3(buf []byte) (int, error) { + offset := 0 + + _, _, size, l, err := thrift.Binary.ReadMapBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make(map[string]*Content, size) + values := make([]Content, size) + for i := 0; i < size; i++ { + var _key string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _key = v + } + + _val := &values[i] + _val.InitDefault() + if l, err := _val.FastRead(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + } + + _field[_key] = _val + } + p.EvaluateTargetOutputFields = _field + return offset, nil +} + +func (p *InvokeEvaluatorInputData) FastReadField20(buf []byte) (int, error) { + offset := 0 + + _, _, size, l, err := thrift.Binary.ReadMapBegin(buf[offset:]) + offset += l + if err != nil { + return offset, err + } + _field := make(map[string]string, size) + for i := 0; i < size; i++ { + var _key string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _key = v + } + + var _val string + if v, l, err := thrift.Binary.ReadString(buf[offset:]); err != nil { + return offset, err + } else { + offset += l + _val = v + } + + _field[_key] = _val + } + p.Ext = _field + return offset, nil +} + func (p *InvokeEvaluatorInputData) FastWrite(buf []byte) int { return p.FastWriteNocopy(buf, nil) } @@ -3361,6 +3501,9 @@ func (p *InvokeEvaluatorInputData) FastWriteNocopy(buf []byte, w thrift.NocopyWr offset := 0 if p != nil { offset += p.fastWriteField1(buf[offset:], w) + offset += p.fastWriteField2(buf[offset:], w) + offset += p.fastWriteField3(buf[offset:], w) + offset += p.fastWriteField20(buf[offset:], w) } offset += thrift.Binary.WriteFieldStop(buf[offset:]) return offset @@ -3370,6 +3513,9 @@ func (p *InvokeEvaluatorInputData) BLength() int { l := 0 if p != nil { l += p.field1Length() + l += p.field2Length() + l += p.field3Length() + l += p.field20Length() } l += thrift.Binary.FieldStopLength() return l @@ -3392,6 +3538,57 @@ func (p *InvokeEvaluatorInputData) fastWriteField1(buf []byte, w thrift.NocopyWr return offset } +func (p *InvokeEvaluatorInputData) fastWriteField2(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvaluateDatasetFields() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.MAP, 2) + mapBeginOffset := offset + offset += thrift.Binary.MapBeginLength() + var length int + for k, v := range p.EvaluateDatasetFields { + length++ + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, k) + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteMapBegin(buf[mapBeginOffset:], thrift.STRING, thrift.STRUCT, length) + } + return offset +} + +func (p *InvokeEvaluatorInputData) fastWriteField3(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetEvaluateTargetOutputFields() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.MAP, 3) + mapBeginOffset := offset + offset += thrift.Binary.MapBeginLength() + var length int + for k, v := range p.EvaluateTargetOutputFields { + length++ + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, k) + offset += v.FastWriteNocopy(buf[offset:], w) + } + thrift.Binary.WriteMapBegin(buf[mapBeginOffset:], thrift.STRING, thrift.STRUCT, length) + } + return offset +} + +func (p *InvokeEvaluatorInputData) fastWriteField20(buf []byte, w thrift.NocopyWriter) int { + offset := 0 + if p.IsSetExt() { + offset += thrift.Binary.WriteFieldBegin(buf[offset:], thrift.MAP, 20) + mapBeginOffset := offset + offset += thrift.Binary.MapBeginLength() + var length int + for k, v := range p.Ext { + length++ + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, k) + offset += thrift.Binary.WriteStringNocopy(buf[offset:], w, v) + } + thrift.Binary.WriteMapBegin(buf[mapBeginOffset:], thrift.STRING, thrift.STRING, length) + } + return offset +} + func (p *InvokeEvaluatorInputData) field1Length() int { l := 0 if p.IsSetInputFields() { @@ -3407,6 +3604,51 @@ func (p *InvokeEvaluatorInputData) field1Length() int { return l } +func (p *InvokeEvaluatorInputData) field2Length() int { + l := 0 + if p.IsSetEvaluateDatasetFields() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.MapBeginLength() + for k, v := range p.EvaluateDatasetFields { + _, _ = k, v + + l += thrift.Binary.StringLengthNocopy(k) + l += v.BLength() + } + } + return l +} + +func (p *InvokeEvaluatorInputData) field3Length() int { + l := 0 + if p.IsSetEvaluateTargetOutputFields() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.MapBeginLength() + for k, v := range p.EvaluateTargetOutputFields { + _, _ = k, v + + l += thrift.Binary.StringLengthNocopy(k) + l += v.BLength() + } + } + return l +} + +func (p *InvokeEvaluatorInputData) field20Length() int { + l := 0 + if p.IsSetExt() { + l += thrift.Binary.FieldBeginLength() + l += thrift.Binary.MapBeginLength() + for k, v := range p.Ext { + _, _ = k, v + + l += thrift.Binary.StringLengthNocopy(k) + l += thrift.Binary.StringLengthNocopy(v) + } + } + return l +} + func (p *InvokeEvaluatorInputData) DeepCopy(s interface{}) error { src, ok := s.(*InvokeEvaluatorInputData) if !ok { @@ -3433,6 +3675,63 @@ func (p *InvokeEvaluatorInputData) DeepCopy(s interface{}) error { } } + if src.EvaluateDatasetFields != nil { + p.EvaluateDatasetFields = make(map[string]*Content, len(src.EvaluateDatasetFields)) + for key, val := range src.EvaluateDatasetFields { + var _key string + if key != "" { + _key = kutils.StringDeepCopy(key) + } + + var _val *Content + if val != nil { + _val = &Content{} + if err := _val.DeepCopy(val); err != nil { + return err + } + } + + p.EvaluateDatasetFields[_key] = _val + } + } + + if src.EvaluateTargetOutputFields != nil { + p.EvaluateTargetOutputFields = make(map[string]*Content, len(src.EvaluateTargetOutputFields)) + for key, val := range src.EvaluateTargetOutputFields { + var _key string + if key != "" { + _key = kutils.StringDeepCopy(key) + } + + var _val *Content + if val != nil { + _val = &Content{} + if err := _val.DeepCopy(val); err != nil { + return err + } + } + + p.EvaluateTargetOutputFields[_key] = _val + } + } + + if src.Ext != nil { + p.Ext = make(map[string]string, len(src.Ext)) + for key, val := range src.Ext { + var _key string + if key != "" { + _key = kutils.StringDeepCopy(key) + } + + var _val string + if val != "" { + _val = kutils.StringDeepCopy(val) + } + + p.Ext[_key] = _val + } + } + return nil } diff --git a/backend/modules/evaluation/application/convertor/common/common.go b/backend/modules/evaluation/application/convertor/common/common.go index 3f8f47362..40ff678b6 100644 --- a/backend/modules/evaluation/application/convertor/common/common.go +++ b/backend/modules/evaluation/application/convertor/common/common.go @@ -422,3 +422,23 @@ func ConvertRateLimitDTO2DO(limit *commondto.RateLimit) (*commonentity.RateLimit Period: period, }, nil } + +func ConvertRuntimeParamDTO2DO(dto *commondto.RuntimeParam) *commonentity.RuntimeParam { + if dto == nil { + return nil + } + return &commonentity.RuntimeParam{ + JSONValue: dto.JSONValue, + JSONDemo: dto.JSONDemo, + } +} + +func ConvertRuntimeParamDO2DTO(do *commonentity.RuntimeParam) *commondto.RuntimeParam { + if do == nil { + return nil + } + return &commondto.RuntimeParam{ + JSONValue: do.JSONValue, + JSONDemo: do.JSONDemo, + } +} diff --git a/backend/modules/evaluation/application/convertor/evaluator/evaluator.go b/backend/modules/evaluation/application/convertor/evaluator/evaluator.go index 4562beffd..cbd12c063 100644 --- a/backend/modules/evaluation/application/convertor/evaluator/evaluator.go +++ b/backend/modules/evaluation/application/convertor/evaluator/evaluator.go @@ -489,6 +489,7 @@ func ConvertCustomRPCEvaluatorVersionDTO2DO(evaluatorID, spaceID int64, dto *eva customRPCEvaluatorVersion.AccessProtocol = dto.EvaluatorContent.CustomRPCEvaluator.AccessProtocol customRPCEvaluatorVersion.ServiceName = dto.EvaluatorContent.CustomRPCEvaluator.ServiceName customRPCEvaluatorVersion.Cluster = dto.EvaluatorContent.CustomRPCEvaluator.Cluster + customRPCEvaluatorVersion.InvokeHTTPInfo = ConvertEvaluatorHTTPInfoDTO2DO(dto.EvaluatorContent.CustomRPCEvaluator.InvokeHTTPInfo) customRPCEvaluatorVersion.Timeout = dto.EvaluatorContent.CustomRPCEvaluator.Timeout if dto.EvaluatorContent.CustomRPCEvaluator.RateLimit != nil { rateLimit, err := commonconvertor.ConvertRateLimitDTO2DO(dto.EvaluatorContent.CustomRPCEvaluator.RateLimit) @@ -497,6 +498,7 @@ func ConvertCustomRPCEvaluatorVersionDTO2DO(evaluatorID, spaceID int64, dto *eva } customRPCEvaluatorVersion.RateLimit = rateLimit } + customRPCEvaluatorVersion.Ext = dto.EvaluatorContent.CustomRPCEvaluator.Ext } } return customRPCEvaluatorVersion, nil @@ -521,9 +523,51 @@ func ConvertCustomRPCEvaluatorVersionDO2DTO(do *evaluatordo.CustomRPCEvaluatorVe ServiceName: do.ServiceName, Cluster: do.Cluster, Timeout: do.Timeout, + InvokeHTTPInfo: ConvertEvaluatorHTTPInfoDO2DTO(do.InvokeHTTPInfo), RateLimit: commonconvertor.ConvertRateLimitDO2DTO(do.RateLimit), + Ext: do.Ext, }, }, } return dto } + +func ConvertEvaluatorHTTPInfoDTO2DO(dto *evaluatordto.EvaluatorHTTPInfo) *evaluatordo.EvaluatorHTTPInfo { + if dto == nil { + return nil + } + return &evaluatordo.EvaluatorHTTPInfo{ + Method: dto.Method, + Path: dto.Path, + } +} + +func ConvertEvaluatorHTTPInfoDO2DTO(do *evaluatordo.EvaluatorHTTPInfo) *evaluatordto.EvaluatorHTTPInfo { + if do == nil { + return nil + } + return &evaluatordto.EvaluatorHTTPInfo{ + Method: do.Method, + Path: do.Path, + } +} + +func ConvertEvaluatorRunConfDTO2DO(dto *evaluatordto.EvaluatorRunConfig) *evaluatordo.EvaluatorRunConfig { + if dto == nil { + return nil + } + return &evaluatordo.EvaluatorRunConfig{ + Env: dto.Env, + EvaluatorRuntimeParam: commonconvertor.ConvertRuntimeParamDTO2DO(dto.EvaluatorRuntimeParam), + } +} + +func ConvertEvaluatorRunConfDO2DTO(do *evaluatordo.EvaluatorRunConfig) *evaluatordto.EvaluatorRunConfig { + if do == nil { + return nil + } + return &evaluatordto.EvaluatorRunConfig{ + Env: do.Env, + EvaluatorRuntimeParam: commonconvertor.ConvertRuntimeParamDO2DTO(do.EvaluatorRuntimeParam), + } +} diff --git a/backend/modules/evaluation/application/convertor/experiment/expt.go b/backend/modules/evaluation/application/convertor/experiment/expt.go index bd50c6042..bcde3e419 100644 --- a/backend/modules/evaluation/application/convertor/experiment/expt.go +++ b/backend/modules/evaluation/application/convertor/experiment/expt.go @@ -38,7 +38,7 @@ func (e *EvalConfConvert) ConvertToEntity(cer *expt.CreateExperimentRequest) (*e if cer.GetEvaluatorFieldMapping() != nil { ec.ConnectorConf.EvaluatorsConf = &entity.EvaluatorsConf{ EvaluatorConcurNum: ptr.ConvIntPtr[int32, int](cer.EvaluatorsConcurNum), - EvaluatorConf: toEvaluatorFieldMappingDo(cer.GetEvaluatorFieldMapping()), + EvaluatorConf: toEvaluatorConfDO(cer.GetEvaluatorFieldMapping(), cer.EvaluatorVersionRunConfigs), } } return ec, nil @@ -70,7 +70,7 @@ func toTargetFieldMappingDO(mapping *domain_expt.TargetFieldMapping, rtp *common return tic } -func toEvaluatorFieldMappingDo(mapping []*domain_expt.EvaluatorFieldMapping) []*entity.EvaluatorConf { +func toEvaluatorConfDO(mapping []*domain_expt.EvaluatorFieldMapping, runConfigMap map[int64]*evaluatordto.EvaluatorRunConfig) []*entity.EvaluatorConf { if mapping == nil { return nil } @@ -92,23 +92,29 @@ func toEvaluatorFieldMappingDo(mapping []*domain_expt.EvaluatorFieldMapping) []* Value: ft.GetConstValue(), }) } + var runConf *evaluatordto.EvaluatorRunConfig = nil + if len(runConfigMap) > 0 { + runConf = runConfigMap[fm.GetEvaluatorVersionID()] + } ec = append(ec, &entity.EvaluatorConf{ EvaluatorVersionID: fm.GetEvaluatorVersionID(), IngressConf: &entity.EvaluatorIngressConf{ EvalSetAdapter: &entity.FieldAdapter{FieldConfs: esf}, TargetAdapter: &entity.FieldAdapter{FieldConfs: tf}, }, + RunConf: evaluator.ConvertEvaluatorRunConfDTO2DO(runConf), }) } return ec } -func (e *EvalConfConvert) ConvertEntityToDTO(ec *entity.EvaluationConfiguration) (*domain_expt.TargetFieldMapping, []*domain_expt.EvaluatorFieldMapping, *common.RuntimeParam) { +func (e *EvalConfConvert) ConvertEntityToDTO(ec *entity.EvaluationConfiguration) (*domain_expt.TargetFieldMapping, []*domain_expt.EvaluatorFieldMapping, *common.RuntimeParam, map[int64]*evaluatordto.EvaluatorRunConfig) { if ec == nil { - return nil, nil, nil + return nil, nil, nil, nil } var evaluatorMappings []*domain_expt.EvaluatorFieldMapping + evaluatorVersionRunConfMap := make(map[int64]*evaluatordto.EvaluatorRunConfig) if evaluatorsConf := ec.ConnectorConf.EvaluatorsConf; evaluatorsConf != nil { for _, evaluatorConf := range evaluatorsConf.EvaluatorConf { if evaluatorConf.IngressConf == nil { @@ -136,6 +142,10 @@ func (e *EvalConfConvert) ConvertEntityToDTO(ec *entity.EvaluationConfiguration) } } evaluatorMappings = append(evaluatorMappings, m) + + if evaluatorConf.RunConf != nil { + evaluatorVersionRunConfMap[evaluatorConf.EvaluatorVersionID] = evaluator.ConvertEvaluatorRunConfDO2DTO(evaluatorConf.RunConf) + } } } @@ -160,7 +170,7 @@ func (e *EvalConfConvert) ConvertEntityToDTO(ec *entity.EvaluationConfiguration) } } - return targetMapping, evaluatorMappings, trtp + return targetMapping, evaluatorMappings, trtp, evaluatorVersionRunConfMap } func ToExptStatsInfoDTO(experiment *entity.Experiment, stats *entity.ExptStats) *domain_expt.ExptStatsInfo { @@ -189,28 +199,29 @@ func ToExptDTO(experiment *entity.Experiment) *domain_expt.Experiment { evaluatorVersionIDs = append(evaluatorVersionIDs, ref.EvaluatorVersionID) } - tm, ems, trtp := NewEvalConfConvert().ConvertEntityToDTO(experiment.EvalConf) + tm, ems, trtp, evrcs := NewEvalConfConvert().ConvertEntityToDTO(experiment.EvalConf) res := &domain_expt.Experiment{ - ID: gptr.Of(experiment.ID), - Name: gptr.Of(experiment.Name), - Desc: gptr.Of(experiment.Description), - CreatorBy: gptr.Of(experiment.CreatedBy), - EvalSetVersionID: gptr.Of(experiment.EvalSetVersionID), - TargetVersionID: gptr.Of(experiment.TargetVersionID), - EvalSetID: gptr.Of(experiment.EvalSetID), - TargetID: gptr.Of(experiment.TargetID), - EvaluatorVersionIds: evaluatorVersionIDs, - Status: gptr.Of(domain_expt.ExptStatus(experiment.Status)), - StatusMessage: gptr.Of(experiment.StatusMessage), - ExptStats: ToExptStatsDTO(experiment.Stats, experiment.AggregateResult), - TargetFieldMapping: tm, - EvaluatorFieldMapping: ems, - SourceType: gptr.Of(domain_expt.SourceType(experiment.SourceType)), - SourceID: gptr.Of(experiment.SourceID), - ExptType: gptr.Of(domain_expt.ExptType(experiment.ExptType)), - MaxAliveTime: gptr.Of(experiment.MaxAliveTime), - TargetRuntimeParam: trtp, + ID: gptr.Of(experiment.ID), + Name: gptr.Of(experiment.Name), + Desc: gptr.Of(experiment.Description), + CreatorBy: gptr.Of(experiment.CreatedBy), + EvalSetVersionID: gptr.Of(experiment.EvalSetVersionID), + TargetVersionID: gptr.Of(experiment.TargetVersionID), + EvalSetID: gptr.Of(experiment.EvalSetID), + TargetID: gptr.Of(experiment.TargetID), + EvaluatorVersionIds: evaluatorVersionIDs, + Status: gptr.Of(domain_expt.ExptStatus(experiment.Status)), + StatusMessage: gptr.Of(experiment.StatusMessage), + ExptStats: ToExptStatsDTO(experiment.Stats, experiment.AggregateResult), + TargetFieldMapping: tm, + EvaluatorFieldMapping: ems, + SourceType: gptr.Of(domain_expt.SourceType(experiment.SourceType)), + SourceID: gptr.Of(experiment.SourceID), + ExptType: gptr.Of(domain_expt.ExptType(experiment.ExptType)), + MaxAliveTime: gptr.Of(experiment.MaxAliveTime), + TargetRuntimeParam: trtp, + EvaluatorVersionRunConfigs: evrcs, } if experiment.StartAt != nil { diff --git a/backend/modules/evaluation/application/evaluator_app.go b/backend/modules/evaluation/application/evaluator_app.go index 590d75f61..373185be0 100644 --- a/backend/modules/evaluation/application/evaluator_app.go +++ b/backend/modules/evaluation/application/evaluator_app.go @@ -983,8 +983,20 @@ func buildRunEvaluatorRequest(evaluatorName string, request *evaluatorservice.Ru ExperimentRunID: request.GetExperimentRunID(), ItemID: request.GetItemID(), TurnID: request.GetTurnID(), + EvaluatorRunConf: evaluatorconvertor.ConvertEvaluatorRunConfDTO2DO(request.GetEvaluatorRunConf()), } inputData := evaluatorconvertor.ConvertEvaluatorInputDataDTO2DO(request.GetInputData()) + if request.IsSetEvaluatorRunConf() && request.GetEvaluatorRunConf().IsSetEvaluatorRuntimeParam() && + request.GetEvaluatorRunConf().GetEvaluatorRuntimeParam().IsSetJSONValue() { + if inputData == nil { + inputData = &entity.EvaluatorInputData{} + } + if inputData.Ext == nil { + inputData.Ext = make(map[string]string) + } + inputData.Ext[consts.FieldAdapterBuiltinFieldNameRuntimeParam] = request.GetEvaluatorRunConf().GetEvaluatorRuntimeParam().GetJSONValue() + } + srvReq.InputData = inputData return srvReq } @@ -1039,7 +1051,18 @@ func (e *EvaluatorHandlerImpl) DebugEvaluator(ctx context.Context, request *eval return nil, err } inputData := evaluatorconvertor.ConvertEvaluatorInputDataDTO2DO(request.GetInputData()) - outputData, err := e.evaluatorService.DebugEvaluator(ctx, do, inputData, request.WorkspaceID) + evaluatorRunConf := evaluatorconvertor.ConvertEvaluatorRunConfDTO2DO(request.GetEvaluatorRunConf()) + if request.IsSetEvaluatorRunConf() && request.GetEvaluatorRunConf().IsSetEvaluatorRuntimeParam() && + request.GetEvaluatorRunConf().GetEvaluatorRuntimeParam().IsSetJSONValue() { + if inputData == nil { + inputData = &entity.EvaluatorInputData{} + } + if inputData.Ext == nil { + inputData.Ext = make(map[string]string) + } + inputData.Ext[consts.FieldAdapterBuiltinFieldNameRuntimeParam] = request.GetEvaluatorRunConf().GetEvaluatorRuntimeParam().GetJSONValue() + } + outputData, err := e.evaluatorService.DebugEvaluator(ctx, do, inputData, evaluatorRunConf, request.WorkspaceID) if err != nil { return nil, err } @@ -1378,12 +1401,15 @@ func (e *EvaluatorHandlerImpl) BatchDebugEvaluator(ctx context.Context, request return nil, err } + // 构建运行配置 + evaluatorRunConf := evaluatorconvertor.ConvertEvaluatorRunConfDTO2DO(request.GetEvaluatorRunConf()) + // 并发调试处理 - return e.batchDebugWithConcurrency(ctx, evaluatorDO, request.InputData, request.WorkspaceID) + return e.batchDebugWithConcurrency(ctx, evaluatorDO, request.InputData, evaluatorRunConf, request.WorkspaceID) } // batchDebugWithConcurrency 使用并发池进行批量调试 -func (e *EvaluatorHandlerImpl) batchDebugWithConcurrency(ctx context.Context, evaluatorDO *entity.Evaluator, inputDataList []*evaluatordto.EvaluatorInputData, exptSpaceID int64) (*evaluatorservice.BatchDebugEvaluatorResponse, error) { +func (e *EvaluatorHandlerImpl) batchDebugWithConcurrency(ctx context.Context, evaluatorDO *entity.Evaluator, inputDataList []*evaluatordto.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64) (*evaluatorservice.BatchDebugEvaluatorResponse, error) { // 创建并发池,并发度为10 pool, err := goroutine.NewPool(10) if err != nil { @@ -1402,9 +1428,18 @@ func (e *EvaluatorHandlerImpl) batchDebugWithConcurrency(ctx context.Context, ev pool.Add(func() error { // 转换输入数据 inputDataDO := evaluatorconvertor.ConvertEvaluatorInputDataDTO2DO(currentInputData) + if evaluatorRunConf != nil && evaluatorRunConf.EvaluatorRuntimeParam != nil && evaluatorRunConf.EvaluatorRuntimeParam.JSONValue != nil { + if inputDataDO == nil { + inputDataDO = &entity.EvaluatorInputData{} + } + if inputDataDO.Ext == nil { + inputDataDO.Ext = make(map[string]string) + } + inputDataDO.Ext[consts.FieldAdapterBuiltinFieldNameRuntimeParam] = ptr.From(evaluatorRunConf.EvaluatorRuntimeParam.JSONValue) + } // 调用单个评估器调试逻辑 - outputDataDO, debugErr := e.evaluatorService.DebugEvaluator(ctx, evaluatorDO, inputDataDO, exptSpaceID) + outputDataDO, debugErr := e.evaluatorService.DebugEvaluator(ctx, evaluatorDO, inputDataDO, evaluatorRunConf, exptSpaceID) // 保护结果收集过程 mutex.Lock() @@ -1688,7 +1723,7 @@ func (e *EvaluatorHandlerImpl) DebugBuiltinEvaluator(ctx context.Context, reques // 2) 调用调试逻辑 inputDataDO := evaluatorconvertor.ConvertEvaluatorInputDataDTO2DO(request.GetInputData()) - outputDataDO, err := e.evaluatorService.DebugEvaluator(ctx, builtinEvaluatorDO, inputDataDO, request.WorkspaceID) + outputDataDO, err := e.evaluatorService.DebugEvaluator(ctx, builtinEvaluatorDO, inputDataDO, nil, request.WorkspaceID) // 预置评估器无运行配置 if err != nil { return nil, err } diff --git a/backend/modules/evaluation/application/evaluator_app_test.go b/backend/modules/evaluation/application/evaluator_app_test.go index ae4f403d1..8a419a4bc 100644 --- a/backend/modules/evaluation/application/evaluator_app_test.go +++ b/backend/modules/evaluation/application/evaluator_app_test.go @@ -1169,8 +1169,8 @@ func TestEvaluatorHandlerImpl_ComplexBusinessScenarios(t *testing.T) { // 4. 评估器调试 mockEvaluatorService.EXPECT(). - DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). - DoAndReturn(func(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, exptSpaceID int64) (*entity.EvaluatorOutputData, error) { + DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + DoAndReturn(func(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64) (*entity.EvaluatorOutputData, error) { // 验证输入数据已被正确处理 assert.Equal(t, int64(123), evaluator.SpaceID) assert.Equal(t, entity.EvaluatorTypePrompt, evaluator.EvaluatorType) @@ -2470,7 +2470,7 @@ func TestEvaluatorHandlerImpl_BatchDebugEvaluator(t *testing.T) { mockFileProvider.EXPECT().MGetFileURL(gomock.Any(), gomock.Any()).Return(map[string]string{}, nil).AnyTimes() - mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return( + mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return( &entity.EvaluatorOutputData{ EvaluatorResult: &entity.EvaluatorResult{ Score: gptr.Of(0.8), @@ -2529,14 +2529,14 @@ func TestEvaluatorHandlerImpl_BatchDebugEvaluator(t *testing.T) { // 使用 InOrder 来确保调用顺序 gomock.InOrder( - mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return( + mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return( &entity.EvaluatorOutputData{ EvaluatorResult: &entity.EvaluatorResult{ Score: gptr.Of(0.9), Reasoning: "result 1", }, }, nil), - mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return( + mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return( &entity.EvaluatorOutputData{ EvaluatorResult: &entity.EvaluatorResult{ Score: gptr.Of(0.7), @@ -2713,14 +2713,14 @@ func TestEvaluatorHandlerImpl_BatchDebugEvaluator(t *testing.T) { // 使用 InOrder 来确保调用顺序 gomock.InOrder( - mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return( + mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return( &entity.EvaluatorOutputData{ EvaluatorResult: &entity.EvaluatorResult{ Score: gptr.Of(0.8), Reasoning: "success result", }, }, nil), - mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return( + mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return( nil, errors.New("evaluation failed")), ) }, @@ -2797,7 +2797,7 @@ func TestEvaluatorHandlerImpl_BatchDebugEvaluator(t *testing.T) { mockFileProvider.EXPECT().MGetFileURL(gomock.Any(), gomock.Any()).Return(map[string]string{}, nil).AnyTimes() // Mock 100次调用 - mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). Return(&entity.EvaluatorOutputData{ EvaluatorResult: &entity.EvaluatorResult{ Score: gptr.Of(0.8), @@ -2839,7 +2839,7 @@ func TestEvaluatorHandlerImpl_BatchDebugEvaluator(t *testing.T) { mockFileProvider.EXPECT().MGetFileURL(gomock.Any(), gomock.Any()).Return(map[string]string{}, nil).AnyTimes() // 返回 nil output 和 error - mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). Return(nil, errors.New("code execution failed")) }, wantResp: &evaluatorservice.BatchDebugEvaluatorResponse{ @@ -2898,7 +2898,7 @@ func TestEvaluatorHandlerImpl_BatchDebugEvaluator(t *testing.T) { mockFileProvider.EXPECT().MGetFileURL(gomock.Any(), gomock.Any()).Return(map[string]string{}, nil).AnyTimes() // 第一个成功 - mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). Return(&entity.EvaluatorOutputData{ EvaluatorResult: &entity.EvaluatorResult{ Score: gptr.Of(0.9), @@ -2907,11 +2907,11 @@ func TestEvaluatorHandlerImpl_BatchDebugEvaluator(t *testing.T) { }, nil).Times(1) // 第二个失败 (nil output + error) - mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). Return(nil, errors.New("processing error")).Times(1) // 第三个成功但有 evaluator run error - mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + mockEvaluatorService.EXPECT().DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). Return(&entity.EvaluatorOutputData{ EvaluatorResult: &entity.EvaluatorResult{ Score: gptr.Of(0.7), @@ -3968,7 +3968,7 @@ func TestEvaluatorHandlerImpl_DebugBuiltinEvaluator(t *testing.T) { Return(builtinEvaluator, nil) mockEvaluatorService.EXPECT(). - DebugEvaluator(gomock.Any(), builtinEvaluator, gomock.Any(), gomock.Any()). + DebugEvaluator(gomock.Any(), builtinEvaluator, gomock.Any(), gomock.Any(), gomock.Any()). Return(outputData, nil) }, wantResp: &evaluatorservice.DebugBuiltinEvaluatorResponse{ @@ -4029,7 +4029,7 @@ func TestEvaluatorHandlerImpl_DebugBuiltinEvaluator(t *testing.T) { Return(builtinEvaluator, nil) mockEvaluatorService.EXPECT(). - DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). + DebugEvaluator(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). Return(nil, errorx.NewByCode(errno.CommonInternalErrorCode)) }, wantResp: nil, diff --git a/backend/modules/evaluation/application/experiment_app.go b/backend/modules/evaluation/application/experiment_app.go index 7a02d4166..3ed1fc4b0 100644 --- a/backend/modules/evaluation/application/experiment_app.go +++ b/backend/modules/evaluation/application/experiment_app.go @@ -16,6 +16,7 @@ import ( "github.com/coze-dev/coze-loop/backend/kitex_gen/base" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/common" + evaluatordto "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/evaluator" domain_expt "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/domain/expt" "github.com/coze-dev/coze-loop/backend/kitex_gen/coze/loop/evaluation/expt" "github.com/coze-dev/coze-loop/backend/modules/evaluation/application/convertor/evaluation_set" @@ -140,7 +141,7 @@ func (e *experimentApplication) SubmitExperiment(ctx context.Context, req *expt. } // 收集 evaluator_version_id(包含顺序解析 EvaluatorIDVersionList) - evalVersionIDs, err := e.resolveEvaluatorVersionIDs(ctx, req) + evalVersionIDs, evaluatorVersionRunConfigs, err := e.resolveEvaluatorVersionIDs(ctx, req) if err != nil { return nil, err } @@ -160,23 +161,24 @@ func (e *experimentApplication) SubmitExperiment(ctx context.Context, req *expt. } cresp, err := e.CreateExperiment(ctx, &expt.CreateExperimentRequest{ - WorkspaceID: req.GetWorkspaceID(), - EvalSetVersionID: req.EvalSetVersionID, - EvalSetID: req.EvalSetID, - EvaluatorVersionIds: evalVersionIDs, - Name: req.Name, - Desc: req.Desc, - TargetFieldMapping: req.TargetFieldMapping, - EvaluatorFieldMapping: req.EvaluatorFieldMapping, - ItemConcurNum: req.ItemConcurNum, - EvaluatorsConcurNum: req.EvaluatorsConcurNum, - CreateEvalTargetParam: req.CreateEvalTargetParam, - ExptType: req.ExptType, - MaxAliveTime: req.MaxAliveTime, - SourceType: req.SourceType, - SourceID: req.SourceID, - TargetRuntimeParam: req.TargetRuntimeParam, - Session: req.Session, + WorkspaceID: req.GetWorkspaceID(), + EvalSetVersionID: req.EvalSetVersionID, + EvalSetID: req.EvalSetID, + EvaluatorVersionIds: evalVersionIDs, + Name: req.Name, + Desc: req.Desc, + TargetFieldMapping: req.TargetFieldMapping, + EvaluatorFieldMapping: req.EvaluatorFieldMapping, + ItemConcurNum: req.ItemConcurNum, + EvaluatorsConcurNum: req.EvaluatorsConcurNum, + CreateEvalTargetParam: req.CreateEvalTargetParam, + ExptType: req.ExptType, + MaxAliveTime: req.MaxAliveTime, + SourceType: req.SourceType, + SourceID: req.SourceID, + TargetRuntimeParam: req.TargetRuntimeParam, + EvaluatorVersionRunConfigs: evaluatorVersionRunConfigs, + Session: req.Session, }) if err != nil { return nil, err @@ -203,7 +205,7 @@ func (e *experimentApplication) SubmitExperiment(ctx context.Context, req *expt. // resolveEvaluatorVersionIDs 汇总 evaluator_version_ids: // 1) 先取请求中的 EvaluatorVersionIds // 2) 从有序 EvaluatorIDVersionList 中批量解析并按输入顺序回填版本ID -func (e *experimentApplication) resolveEvaluatorVersionIDs(ctx context.Context, req *expt.SubmitExperimentRequest) ([]int64, error) { +func (e *experimentApplication) resolveEvaluatorVersionIDs(ctx context.Context, req *expt.SubmitExperimentRequest) ([]int64, map[int64]*evaluatordto.EvaluatorRunConfig, error) { evalVersionIDs := make([]int64, 0, len(req.EvaluatorVersionIds)) evalVersionIDs = append(evalVersionIDs, req.EvaluatorVersionIds...) @@ -232,7 +234,7 @@ func (e *experimentApplication) resolveEvaluatorVersionIDs(ctx context.Context, if len(builtinIDs) > 0 { evs, err := e.evaluatorService.BatchGetBuiltinEvaluator(ctx, builtinIDs) if err != nil { - return nil, err + return nil, nil, err } for _, ev := range evs { if ev != nil { @@ -245,7 +247,7 @@ func (e *experimentApplication) resolveEvaluatorVersionIDs(ctx context.Context, if len(normalPairs) > 0 { evs, err := e.evaluatorService.BatchGetEvaluatorByIDAndVersion(ctx, normalPairs) if err != nil { - return nil, err + return nil, nil, err } for _, ev := range evs { if ev == nil { @@ -257,6 +259,7 @@ func (e *experimentApplication) resolveEvaluatorVersionIDs(ctx context.Context, } // 按输入顺序回填版本ID + evaluatorVersionRunConfigs := make(map[int64]*evaluatordto.EvaluatorRunConfig) for _, it := range items { if it == nil { continue @@ -278,6 +281,9 @@ func (e *experimentApplication) resolveEvaluatorVersionIDs(ctx context.Context, } if verID := ev.GetEvaluatorVersionID(); verID != 0 { evalVersionIDs = append(evalVersionIDs, verID) + if it.RunConfig != nil { + evaluatorVersionRunConfigs[verID] = it.RunConfig + } } } @@ -309,7 +315,7 @@ func (e *experimentApplication) resolveEvaluatorVersionIDs(ctx context.Context, } } - return evalVersionIDs, nil + return evalVersionIDs, evaluatorVersionRunConfigs, nil } func (e *experimentApplication) CheckExperimentName(ctx context.Context, req *expt.CheckExperimentNameRequest) (r *expt.CheckExperimentNameResponse, err error) { diff --git a/backend/modules/evaluation/domain/entity/common.go b/backend/modules/evaluation/domain/entity/common.go index 273ec10ca..198b6d82f 100644 --- a/backend/modules/evaluation/domain/entity/common.go +++ b/backend/modules/evaluation/domain/entity/common.go @@ -369,3 +369,8 @@ type RateLimit struct { Burst *int32 `json:"burst,omitempty"` Period *time.Duration `json:"period,omitempty"` } + +type RuntimeParam struct { + JSONValue *string `json:"json_value,omitempty"` + JSONDemo *string `json:"json_demo,omitempty"` +} diff --git a/backend/modules/evaluation/domain/entity/evaluator.go b/backend/modules/evaluation/domain/entity/evaluator.go index 849ab6fbf..77eaa06e8 100644 --- a/backend/modules/evaluation/domain/entity/evaluator.go +++ b/backend/modules/evaluation/domain/entity/evaluator.go @@ -447,3 +447,24 @@ func (e *Evaluator) GetRateLimit() *RateLimit { } return nil } + +func (e *Evaluator) GetInputSchemas() []*ArgsSchema { + switch e.EvaluatorType { + case EvaluatorTypePrompt: + if e.PromptEvaluatorVersion != nil { + return e.PromptEvaluatorVersion.InputSchemas + } + case EvaluatorTypeCode: + return nil + case EvaluatorTypeCustomRPC: + if e.CustomRPCEvaluatorVersion != nil { + return e.CustomRPCEvaluatorVersion.InputSchemas + } + } + return nil +} + +type EvaluatorRunConfig struct { + Env *string `json:"env,omitempty"` + EvaluatorRuntimeParam *RuntimeParam `json:"evaluator_runtime_param,omitempty"` +} diff --git a/backend/modules/evaluation/domain/entity/evaluator_version_custom_rpc.go b/backend/modules/evaluation/domain/entity/evaluator_version_custom_rpc.go index 405f51f9c..357b06f2a 100644 --- a/backend/modules/evaluation/domain/entity/evaluator_version_custom_rpc.go +++ b/backend/modules/evaluation/domain/entity/evaluator_version_custom_rpc.go @@ -19,9 +19,24 @@ import ( type EvaluatorAccessProtocol = string const ( - EvaluatorAccessProtocolRPC = "rpc" + EvaluatorAccessProtocolRPC EvaluatorAccessProtocol = "rpc" + EvaluatorAccessProtocolRPCOld EvaluatorAccessProtocol = "rpc_old" + EvaluatorAccessProtocolFaasHTTP EvaluatorAccessProtocol = "faas_http" + EvaluatorAccessProtocolFaasHTTPOld EvaluatorAccessProtocol = "faas_http_old" ) +type EvaluatorHTTPMethod = string + +const ( + EvaluatorHTTPMethodGet EvaluatorHTTPMethod = "get" + EvaluatorHTTPMethodPost EvaluatorHTTPMethod = "post" +) + +type EvaluatorHTTPInfo struct { + Method *EvaluatorHTTPMethod `json:"method,omitempty"` + Path *string `json:"path,omitempty"` +} + type CustomRPCEvaluatorVersion struct { // standard EvaluatorVersion layer attributes ID int64 `json:"id"` @@ -41,8 +56,12 @@ type CustomRPCEvaluatorVersion struct { AccessProtocol EvaluatorAccessProtocol `json:"access_protocol"` // custom protocol ServiceName *string `json:"service_name"` Cluster *string `json:"cluster"` - Timeout *int64 `json:"timeout"` // timeout duration in milliseconds(ms) + InvokeHTTPInfo *EvaluatorHTTPInfo `json:"invoke_http_info,omitempty"` // invoke http info + Timeout *int64 `json:"timeout"` // timeout duration in milliseconds(ms) RateLimit *RateLimit `json:"rate_limit,omitempty"` + + // extra fields + Ext map[string]string `json:"ext,omitempty"` } func (do *CustomRPCEvaluatorVersion) SetID(id int64) { @@ -122,9 +141,6 @@ func (do *CustomRPCEvaluatorVersion) ValidateBaseInfo() error { if do == nil { return errorx.NewByCode(errno.EvaluatorNotExistCode, errorx.WithExtraMsg("evaluator_version is nil")) } - if do.ProviderEvaluatorCode == nil || lo.IsEmpty(*do.ProviderEvaluatorCode) { - return errorx.NewByCode(errno.InvalidProviderEvaluatorCodeCode, errorx.WithExtraMsg("provider_evaluator_code is empty")) - } if lo.IsEmpty(do.AccessProtocol) { return errorx.NewByCode(errno.InvalidAccessProtocolCode, errorx.WithExtraMsg("access_protocol is empty")) } diff --git a/backend/modules/evaluation/domain/entity/expt.go b/backend/modules/evaluation/domain/entity/expt.go index adb12f933..0fb203112 100644 --- a/backend/modules/evaluation/domain/entity/expt.go +++ b/backend/modules/evaluation/domain/entity/expt.go @@ -221,6 +221,7 @@ func (e *EvaluatorsConf) GetEvaluatorConcurNum() int { type EvaluatorConf struct { EvaluatorVersionID int64 IngressConf *EvaluatorIngressConf + RunConf *EvaluatorRunConfig } func (e *EvaluatorConf) Valid(ctx context.Context) error { diff --git a/backend/modules/evaluation/domain/entity/param.go b/backend/modules/evaluation/domain/entity/param.go index fe2df9779..6afcbd612 100644 --- a/backend/modules/evaluation/domain/entity/param.go +++ b/backend/modules/evaluation/domain/entity/param.go @@ -189,6 +189,7 @@ type RunEvaluatorRequest struct { TurnID int64 `json:"turn_id,omitempty"` Ext map[string]string `json:"ext,omitempty"` DisableTracing bool `json:"disable_tracing,omitempty"` + EvaluatorRunConf *EvaluatorRunConfig `json:"evaluator_run_conf,omitempty"` } type CreateExptParam struct { diff --git a/backend/modules/evaluation/domain/service/evaluator.go b/backend/modules/evaluation/domain/service/evaluator.go index 76275eef0..916f99778 100644 --- a/backend/modules/evaluation/domain/service/evaluator.go +++ b/backend/modules/evaluation/domain/service/evaluator.go @@ -32,7 +32,7 @@ type EvaluatorService interface { // RunEvaluator evaluator_version 运行 RunEvaluator(ctx context.Context, request *entity.RunEvaluatorRequest) (*entity.EvaluatorRecord, error) // DebugEvaluator 调试 evaluator_version;新增 exptSpaceID 作为实验空间ID - DebugEvaluator(ctx context.Context, evaluatorDO *entity.Evaluator, inputData *entity.EvaluatorInputData, exptSpaceID int64) (*entity.EvaluatorOutputData, error) + DebugEvaluator(ctx context.Context, evaluatorDO *entity.Evaluator, inputData *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64) (*entity.EvaluatorOutputData, error) // GetBuiltinEvaluator 根据 evaluatorID 查询元信息,若为预置评估器则按 builtin_visible_version 组装返回 // 非预置评估器则返回nil GetBuiltinEvaluator(ctx context.Context, evaluatorID int64) (*entity.Evaluator, error) diff --git a/backend/modules/evaluation/domain/service/evaluator_impl.go b/backend/modules/evaluation/domain/service/evaluator_impl.go index e834075ca..633fc73f8 100644 --- a/backend/modules/evaluation/domain/service/evaluator_impl.go +++ b/backend/modules/evaluation/domain/service/evaluator_impl.go @@ -630,7 +630,7 @@ func (e *EvaluatorServiceImpl) RunEvaluator(ctx context.Context, request *entity if err = evaluatorSourceService.PreHandle(ctx, evaluatorDO); err != nil { return nil, err } - outputData, runStatus, traceID := evaluatorSourceService.Run(ctx, evaluatorDO, request.InputData, request.SpaceID, request.DisableTracing) + outputData, runStatus, traceID := evaluatorSourceService.Run(ctx, evaluatorDO, request.InputData, request.EvaluatorRunConf, request.SpaceID, request.DisableTracing) if runStatus == entity.EvaluatorRunStatusFail { logs.CtxWarn(ctx, "[RunEvaluator] Run fail, exptID: %d, exptRunID: %d, itemID: %d, turnID: %d, evaluatorVersionID: %d, traceID: %s, err: %v", request.ExperimentID, request.ExperimentRunID, request.ItemID, request.TurnID, request.EvaluatorVersionID, traceID, outputData.EvaluatorRunError) } @@ -669,7 +669,7 @@ func (e *EvaluatorServiceImpl) RunEvaluator(ctx context.Context, request *entity } // DebugEvaluator 调试 evaluator_version -func (e *EvaluatorServiceImpl) DebugEvaluator(ctx context.Context, evaluatorDO *entity.Evaluator, inputData *entity.EvaluatorInputData, exptSpaceID int64) (*entity.EvaluatorOutputData, error) { +func (e *EvaluatorServiceImpl) DebugEvaluator(ctx context.Context, evaluatorDO *entity.Evaluator, inputData *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64) (*entity.EvaluatorOutputData, error) { if evaluatorDO == nil || (evaluatorDO.EvaluatorType == entity.EvaluatorTypePrompt && evaluatorDO.PromptEvaluatorVersion == nil) { return nil, errorx.NewByCode(errno.EvaluatorNotExistCode) } @@ -689,7 +689,7 @@ func (e *EvaluatorServiceImpl) DebugEvaluator(ctx context.Context, evaluatorDO * } // 3. 执行Debug // exptSpaceID 目前不影响执行路径,预留透传用途 - return evaluatorSourceService.Debug(ctx, evaluatorDO, inputData, exptSpaceID) + return evaluatorSourceService.Debug(ctx, evaluatorDO, inputData, evaluatorRunConf, exptSpaceID) } func (e *EvaluatorServiceImpl) CheckNameExist(ctx context.Context, spaceID, evaluatorID int64, name string) (bool, error) { diff --git a/backend/modules/evaluation/domain/service/evaluator_impl_test.go b/backend/modules/evaluation/domain/service/evaluator_impl_test.go index 4f707dc8d..540495b1f 100644 --- a/backend/modules/evaluation/domain/service/evaluator_impl_test.go +++ b/backend/modules/evaluation/domain/service/evaluator_impl_test.go @@ -1719,7 +1719,7 @@ func TestEvaluatorServiceImpl_RunEvaluator(t *testing.T) { mockPlainLimiter.EXPECT().AllowInvokeWithKeyLimit(gomock.Any(), gomock.Any(), gomock.Any()).Return(true) mockIDGen.EXPECT().GenID(gomock.Any()).Return(defaultRecordID, nil) mockEvaluatorSourceService.EXPECT().PreHandle(gomock.Any(), defaultEvaluatorDO).Return(nil) - mockEvaluatorSourceService.EXPECT().Run(gomock.Any(), defaultEvaluatorDO, defaultRequest.InputData, defaultRequest.SpaceID, defaultRequest.DisableTracing).Return(defaultOutputData, defaultRunStatus, "trace-id-123") + mockEvaluatorSourceService.EXPECT().Run(gomock.Any(), defaultEvaluatorDO, defaultRequest.InputData, gomock.Any(), defaultRequest.SpaceID, defaultRequest.DisableTracing).Return(defaultOutputData, defaultRunStatus, "trace-id-123") mockEvaluatorRecordRepo.EXPECT().CreateEvaluatorRecord(gomock.Any(), gomock.Any()).DoAndReturn( func(ctx context.Context, record *entity.EvaluatorRecord) error { @@ -1769,7 +1769,7 @@ func TestEvaluatorServiceImpl_RunEvaluator(t *testing.T) { session.WithCtxUser(ctx, &session.User{ID: defaultUserID}) mockEvaluatorSourceService.EXPECT().PreHandle(gomock.Any(), defaultEvaluatorDO).Return(nil) // 验证DisableTracing参数正确传递给EvaluatorSourceService.Run方法 - mockEvaluatorSourceService.EXPECT().Run(gomock.Any(), defaultEvaluatorDO, gomock.Any(), int64(1), true).Return(defaultOutputData, defaultRunStatus, "trace-id-123") + mockEvaluatorSourceService.EXPECT().Run(gomock.Any(), defaultEvaluatorDO, gomock.Any(), gomock.Nil(), int64(1), true).Return(defaultOutputData, defaultRunStatus, "trace-id-123") mockEvaluatorRecordRepo.EXPECT().CreateEvaluatorRecord(gomock.Any(), gomock.Any()).DoAndReturn( func(ctx context.Context, record *entity.EvaluatorRecord) error { @@ -1819,7 +1819,7 @@ func TestEvaluatorServiceImpl_RunEvaluator(t *testing.T) { session.WithCtxUser(ctx, &session.User{ID: defaultUserID}) mockEvaluatorSourceService.EXPECT().PreHandle(gomock.Any(), defaultEvaluatorDO).Return(nil) // 验证DisableTracing参数正确传递给EvaluatorSourceService.Run方法 - mockEvaluatorSourceService.EXPECT().Run(gomock.Any(), defaultEvaluatorDO, gomock.Any(), int64(1), false).Return(defaultOutputData, defaultRunStatus, "trace-id-123") + mockEvaluatorSourceService.EXPECT().Run(gomock.Any(), defaultEvaluatorDO, gomock.Any(), gomock.Nil(), int64(1), false).Return(defaultOutputData, defaultRunStatus, "trace-id-123") mockEvaluatorRecordRepo.EXPECT().CreateEvaluatorRecord(gomock.Any(), gomock.Any()).DoAndReturn( func(ctx context.Context, record *entity.EvaluatorRecord) error { @@ -1954,7 +1954,7 @@ func Test_EvaluatorServiceImpl_DebugEvaluator(t *testing.T) { setupMocks: func(mockEvaluatorSourceService *mocks.MockEvaluatorSourceService) { mockEvaluatorSourceService.EXPECT().PreHandle(ctx, mockEvaluator).Return(nil) mockEvaluatorSourceService.EXPECT().Validate(ctx, mockEvaluator).Return(nil) - mockEvaluatorSourceService.EXPECT().Debug(ctx, mockEvaluator, gomock.Any(), int64(0)).Return(defaultOutputData, nil) + mockEvaluatorSourceService.EXPECT().Debug(ctx, mockEvaluator, gomock.Any(), gomock.Nil(), int64(0)).Return(defaultOutputData, nil) }, }, } @@ -1963,7 +1963,7 @@ func Test_EvaluatorServiceImpl_DebugEvaluator(t *testing.T) { if tc.setupMocks != nil { tc.setupMocks(mockEvaluatorSourceService) } - outputData, err := mockService.DebugEvaluator(ctx, mockEvaluator, tc.request.InputData, int64(0)) + outputData, err := mockService.DebugEvaluator(ctx, mockEvaluator, tc.request.InputData, nil, int64(0)) if tc.expectedErr != nil { assert.Error(t, err) assert.Equal(t, tc.expectedErr, err) @@ -2081,7 +2081,7 @@ func TestEvaluatorServiceImpl_RunEvaluator_DisableTracing(t *testing.T) { mockIDGen.EXPECT().GenID(gomock.Any()).Return(defaultRecordID, nil) mockEvaluatorSourceService.EXPECT().PreHandle(gomock.Any(), defaultEvaluatorDO).Return(nil) // 关键验证:确保DisableTracing参数正确传递 - mockEvaluatorSourceService.EXPECT().Run(gomock.Any(), defaultEvaluatorDO, gomock.Any(), int64(1), true).Return(defaultOutputData, defaultRunStatus, "trace-id-123") + mockEvaluatorSourceService.EXPECT().Run(gomock.Any(), defaultEvaluatorDO, gomock.Any(), gomock.Nil(), int64(1), true).Return(defaultOutputData, defaultRunStatus, "trace-id-123") mockEvaluatorRecordRepo.EXPECT().CreateEvaluatorRecord(gomock.Any(), gomock.Any()).Return(nil) }, }, @@ -2095,7 +2095,7 @@ func TestEvaluatorServiceImpl_RunEvaluator_DisableTracing(t *testing.T) { mockIDGen.EXPECT().GenID(gomock.Any()).Return(defaultRecordID, nil) mockEvaluatorSourceService.EXPECT().PreHandle(gomock.Any(), defaultEvaluatorDO).Return(nil) // 关键验证:确保DisableTracing参数正确传递 - mockEvaluatorSourceService.EXPECT().Run(gomock.Any(), defaultEvaluatorDO, gomock.Any(), int64(1), false).Return(defaultOutputData, defaultRunStatus, "trace-id-123") + mockEvaluatorSourceService.EXPECT().Run(gomock.Any(), defaultEvaluatorDO, gomock.Any(), gomock.Nil(), int64(1), false).Return(defaultOutputData, defaultRunStatus, "trace-id-123") mockEvaluatorRecordRepo.EXPECT().CreateEvaluatorRecord(gomock.Any(), gomock.Any()).Return(nil) }, }, diff --git a/backend/modules/evaluation/domain/service/evaluator_source_code_impl.go b/backend/modules/evaluation/domain/service/evaluator_source_code_impl.go index f2d1c9f37..4a90d9171 100755 --- a/backend/modules/evaluation/domain/service/evaluator_source_code_impl.go +++ b/backend/modules/evaluation/domain/service/evaluator_source_code_impl.go @@ -199,7 +199,7 @@ func (c *EvaluatorSourceCodeServiceImpl) EvaluatorType() entity.EvaluatorType { } // Run 执行Code评估器 -func (c *EvaluatorSourceCodeServiceImpl) Run(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, exptSpaceID int64, disableTracing bool) (output *entity.EvaluatorOutputData, runStatus entity.EvaluatorRunStatus, traceID string) { +func (c *EvaluatorSourceCodeServiceImpl) Run(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64, disableTracing bool) (output *entity.EvaluatorOutputData, runStatus entity.EvaluatorRunStatus, traceID string) { var err error var code string startTime := time.Now() @@ -458,9 +458,9 @@ func (c *EvaluatorSourceCodeServiceImpl) createErrorOutputFromError(err error, s } // Debug 调试Code评估器 -func (c *EvaluatorSourceCodeServiceImpl) Debug(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, exptSpaceID int64) (output *entity.EvaluatorOutputData, err error) { +func (c *EvaluatorSourceCodeServiceImpl) Debug(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64) (output *entity.EvaluatorOutputData, err error) { // 调试模式下直接调用Run方法 - output, runStatus, _ := c.Run(ctx, evaluator, input, exptSpaceID, true) + output, runStatus, _ := c.Run(ctx, evaluator, input, evaluatorRunConf, exptSpaceID, true) if runStatus == entity.EvaluatorRunStatusFail { if output.EvaluatorRunError != nil { return output, errorx.NewByCode(errno.CodeExecutionFailedCode, errorx.WithExtraMsg(output.EvaluatorRunError.Message)) diff --git a/backend/modules/evaluation/domain/service/evaluator_source_code_impl_test.go b/backend/modules/evaluation/domain/service/evaluator_source_code_impl_test.go index 309558e21..918a4cc8f 100755 --- a/backend/modules/evaluation/domain/service/evaluator_source_code_impl_test.go +++ b/backend/modules/evaluation/domain/service/evaluator_source_code_impl_test.go @@ -664,7 +664,7 @@ func TestEvaluatorSourceCodeServiceImpl_Debug(t *testing.T) { tt.mockSetup(ctrl, mockRuntimeManager, mockCodeBuilderFactory, mockRuntime, mockCodeBuilder) - output, err := service.Debug(context.Background(), tt.evaluator, tt.input, 0) + output, err := service.Debug(context.Background(), tt.evaluator, tt.input, nil, 0) if tt.wantErr { assert.Error(t, err) @@ -1057,7 +1057,7 @@ func TestEvaluatorSourceCodeServiceImpl_Run(t *testing.T) { tt.mockSetup(ctrl, mockRuntimeManager, mockCodeBuilderFactory, mockRuntime, mockMetrics) - output, runStatus, _ := service.Run(context.Background(), tt.evaluator, tt.input, 0, tt.disableTracing) + output, runStatus, _ := service.Run(context.Background(), tt.evaluator, tt.input, nil, 0, tt.disableTracing) // 验证结果 assert.Equal(t, tt.wantStatus, runStatus) diff --git a/backend/modules/evaluation/domain/service/evaluator_source_prompt_impl.go b/backend/modules/evaluation/domain/service/evaluator_source_prompt_impl.go index 7e5beab05..34ae4445b 100644 --- a/backend/modules/evaluation/domain/service/evaluator_source_prompt_impl.go +++ b/backend/modules/evaluation/domain/service/evaluator_source_prompt_impl.go @@ -70,7 +70,7 @@ func (p *EvaluatorSourcePromptServiceImpl) EvaluatorType() entity.EvaluatorType return entity.EvaluatorTypePrompt } -func (p *EvaluatorSourcePromptServiceImpl) Run(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, exptSpaceID int64, disableTracing bool) (output *entity.EvaluatorOutputData, runStatus entity.EvaluatorRunStatus, traceID string) { +func (p *EvaluatorSourcePromptServiceImpl) Run(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64, disableTracing bool) (output *entity.EvaluatorOutputData, runStatus entity.EvaluatorRunStatus, traceID string) { var err error startTime := time.Now() var rootSpan *evaluatorSpan @@ -664,9 +664,9 @@ func renderTemplate(ctx context.Context, evaluatorVersion *entity.PromptEvaluato return nil } -func (p *EvaluatorSourcePromptServiceImpl) Debug(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, exptSpaceID int64) (output *entity.EvaluatorOutputData, err error) { +func (p *EvaluatorSourcePromptServiceImpl) Debug(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64) (output *entity.EvaluatorOutputData, err error) { // 实现调试评估的逻辑 - output, _, _ = p.Run(ctx, evaluator, input, exptSpaceID, false) + output, _, _ = p.Run(ctx, evaluator, input, evaluatorRunConf, exptSpaceID, false) if output != nil && output.EvaluatorRunError != nil { return nil, errorx.NewByCode(output.EvaluatorRunError.Code, errorx.WithExtraMsg(output.EvaluatorRunError.Message)) } diff --git a/backend/modules/evaluation/domain/service/evaluator_source_prompt_impl_test.go b/backend/modules/evaluation/domain/service/evaluator_source_prompt_impl_test.go index 2b22af7c3..d036258f8 100755 --- a/backend/modules/evaluation/domain/service/evaluator_source_prompt_impl_test.go +++ b/backend/modules/evaluation/domain/service/evaluator_source_prompt_impl_test.go @@ -212,7 +212,7 @@ func TestEvaluatorSourcePromptServiceImpl_Run(t *testing.T) { tc.setupMocks() } - output, status, _ := service.Run(ctx, tc.evaluator, tc.input, tc.evaluator.GetSpaceID(), false) + output, status, _ := service.Run(ctx, tc.evaluator, tc.input, nil, tc.evaluator.GetSpaceID(), false) assert.Equal(t, tc.expectedStatus, status) if tc.checkOutputFunc != nil { @@ -400,7 +400,7 @@ func TestEvaluatorSourcePromptServiceImpl_Debug(t *testing.T) { TokenUsage: &entity.TokenUsage{InputTokens: 10, OutputTokens: 10}, }, nil) mockMetric.EXPECT().EmitRun(int64(1), gomock.Any(), gomock.Any(), gomock.Any()) - output, err := service.Debug(ctx, baseMockEvaluator, baseMockInput, baseMockEvaluator.GetSpaceID()) + output, err := service.Debug(ctx, baseMockEvaluator, baseMockInput, nil, baseMockEvaluator.GetSpaceID()) assert.NoError(t, err) assert.NotNil(t, output) assert.NotNil(t, output.EvaluatorResult) @@ -411,7 +411,7 @@ func TestEvaluatorSourcePromptServiceImpl_Debug(t *testing.T) { t.Run("调试评估器失败", func(t *testing.T) { mockLLMProvider.EXPECT().Call(gomock.Any(), gomock.Any()).Return(nil, errors.New("llm call failed")) mockMetric.EXPECT().EmitRun(int64(1), gomock.Any(), gomock.Any(), gomock.Any()) - output, err := service.Debug(ctx, baseMockEvaluator, baseMockInput, baseMockEvaluator.GetSpaceID()) + output, err := service.Debug(ctx, baseMockEvaluator, baseMockInput, nil, baseMockEvaluator.GetSpaceID()) assert.Error(t, err) assert.Nil(t, output) }) @@ -1656,7 +1656,7 @@ func TestEvaluatorSourcePromptServiceImpl_Run_DisableTracing(t *testing.T) { t.Run(tt.name, func(t *testing.T) { tt.setupMocks() - output, status, traceID := service.Run(ctx, evaluator, input, evaluator.GetSpaceID(), tt.disableTracing) + output, status, traceID := service.Run(ctx, evaluator, input, nil, evaluator.GetSpaceID(), tt.disableTracing) // 由于输入验证失败,验证错误状态 assert.Equal(t, entity.EvaluatorRunStatusFail, status) diff --git a/backend/modules/evaluation/domain/service/evaluator_source_service.go b/backend/modules/evaluation/domain/service/evaluator_source_service.go index 65e13686b..5bd68dd59 100644 --- a/backend/modules/evaluation/domain/service/evaluator_source_service.go +++ b/backend/modules/evaluation/domain/service/evaluator_source_service.go @@ -14,8 +14,8 @@ import ( //go:generate mockgen -destination mocks/evaluator_source_service_mock.go -package mocks . EvaluatorSourceService type EvaluatorSourceService interface { EvaluatorType() entity.EvaluatorType - Run(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, exptSpaceID int64, disableTracing bool) (output *entity.EvaluatorOutputData, runStatus entity.EvaluatorRunStatus, traceID string) - Debug(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, exptSpaceID int64) (output *entity.EvaluatorOutputData, err error) + Run(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64, disableTracing bool) (output *entity.EvaluatorOutputData, runStatus entity.EvaluatorRunStatus, traceID string) + Debug(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64) (output *entity.EvaluatorOutputData, err error) PreHandle(ctx context.Context, evaluator *entity.Evaluator) error // Validate 验证评估器 Validate(ctx context.Context, evaluator *entity.Evaluator) error diff --git a/backend/modules/evaluation/domain/service/expt_run_item_turn_impl.go b/backend/modules/evaluation/domain/service/expt_run_item_turn_impl.go index 423ad3e72..151c1bb9e 100644 --- a/backend/modules/evaluation/domain/service/expt_run_item_turn_impl.go +++ b/backend/modules/evaluation/domain/service/expt_run_item_turn_impl.go @@ -332,7 +332,7 @@ func (e *DefaultExptTurnEvaluationImpl) callEvaluators(ctx context.Context, exec } // 根据评估器类型创建对应的输入数据 - inputData, err := e.buildEvaluatorInputData(ev.EvaluatorType, ec, turnFields, targetFields) + inputData, err := e.buildEvaluatorInputData(ev.EvaluatorType, ev.GetInputSchemas(), ec, turnFields, targetFields) if err != nil { return nil, err } @@ -350,7 +350,8 @@ func (e *DefaultExptTurnEvaluationImpl) callEvaluators(ctx context.Context, exec ExperimentRunID: etec.Event.ExptRunID, ItemID: item.ItemID, TurnID: turn.ID, - Ext: etec.Ext, + Ext: e.buildRunEvaluatorExt(etec.Ext, ec.RunConf), + EvaluatorRunConf: ec.RunConf, }) if err != nil { return err @@ -375,12 +376,13 @@ func (e *DefaultExptTurnEvaluationImpl) callEvaluators(ctx context.Context, exec // buildEvaluatorInputData 根据评估器类型构建输入数据,提取公共字段映射逻辑 func (e *DefaultExptTurnEvaluationImpl) buildEvaluatorInputData( evaluatorType entity.EvaluatorType, + inputSchemas []*entity.ArgsSchema, ec *entity.EvaluatorConf, turnFields map[string]*entity.Content, targetFields map[string]*entity.Content, ) (*entity.EvaluatorInputData, error) { - if evaluatorType == entity.EvaluatorTypeCode { - // Code评估器:分离字段数据源 + if evaluatorType == entity.EvaluatorTypeCode || (evaluatorType == entity.EvaluatorTypeCustomRPC && len(inputSchemas) == 0) { + // Code评估器、无input_schemas的自定义服务评估器:分离字段数据源 evaluateDatasetFields, err := e.buildFieldsFromSource(ec.IngressConf.EvalSetAdapter.FieldConfs, turnFields) if err != nil { return nil, err @@ -398,7 +400,7 @@ func (e *DefaultExptTurnEvaluationImpl) buildEvaluatorInputData( EvaluateTargetOutputFields: evaluateTargetOutputFields, }, nil } else { - // Prompt评估器:保持现有逻辑,合并所有字段到InputFields + // Prompt评估器等:保持现有逻辑,合并所有字段到InputFields inputFields := make(map[string]*entity.Content) // 处理来自评测对象的字段 @@ -487,3 +489,15 @@ func (e *DefaultExptTurnEvaluationImpl) getContentByJsonPath(content *entity.Con Text: ptr.Of(text), }, nil } + +func (e *DefaultExptTurnEvaluationImpl) buildRunEvaluatorExt(ext map[string]string, runConf *entity.EvaluatorRunConfig) map[string]string { + builtExt := gmap.Clone(ext) + if builtExt == nil { + builtExt = make(map[string]string) + } + if runConf != nil && runConf.EvaluatorRuntimeParam != nil && runConf.EvaluatorRuntimeParam.JSONValue != nil && len(*runConf.EvaluatorRuntimeParam.JSONValue) > 0 { + builtExt[consts.FieldAdapterBuiltinFieldNameRuntimeParam] = *runConf.EvaluatorRuntimeParam.JSONValue + } + + return builtExt +} diff --git a/backend/modules/evaluation/domain/service/mocks/evaluator_service_mock.go b/backend/modules/evaluation/domain/service/mocks/evaluator_service_mock.go index 89087c9f9..03813468a 100644 --- a/backend/modules/evaluation/domain/service/mocks/evaluator_service_mock.go +++ b/backend/modules/evaluation/domain/service/mocks/evaluator_service_mock.go @@ -132,18 +132,18 @@ func (mr *MockEvaluatorServiceMockRecorder) CreateEvaluator(ctx, evaluator, cid } // DebugEvaluator mocks base method. -func (m *MockEvaluatorService) DebugEvaluator(ctx context.Context, evaluatorDO *entity.Evaluator, inputData *entity.EvaluatorInputData, exptSpaceID int64) (*entity.EvaluatorOutputData, error) { +func (m *MockEvaluatorService) DebugEvaluator(ctx context.Context, evaluatorDO *entity.Evaluator, inputData *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64) (*entity.EvaluatorOutputData, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DebugEvaluator", ctx, evaluatorDO, inputData, exptSpaceID) + ret := m.ctrl.Call(m, "DebugEvaluator", ctx, evaluatorDO, inputData, evaluatorRunConf, exptSpaceID) ret0, _ := ret[0].(*entity.EvaluatorOutputData) ret1, _ := ret[1].(error) return ret0, ret1 } // DebugEvaluator indicates an expected call of DebugEvaluator. -func (mr *MockEvaluatorServiceMockRecorder) DebugEvaluator(ctx, evaluatorDO, inputData, exptSpaceID any) *gomock.Call { +func (mr *MockEvaluatorServiceMockRecorder) DebugEvaluator(ctx, evaluatorDO, inputData, evaluatorRunConf, exptSpaceID any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DebugEvaluator", reflect.TypeOf((*MockEvaluatorService)(nil).DebugEvaluator), ctx, evaluatorDO, inputData, exptSpaceID) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DebugEvaluator", reflect.TypeOf((*MockEvaluatorService)(nil).DebugEvaluator), ctx, evaluatorDO, inputData, evaluatorRunConf, exptSpaceID) } // DeleteEvaluator mocks base method. diff --git a/backend/modules/evaluation/domain/service/mocks/evaluator_source_service_mock.go b/backend/modules/evaluation/domain/service/mocks/evaluator_source_service_mock.go index d6df4c8ea..8b1941d13 100644 --- a/backend/modules/evaluation/domain/service/mocks/evaluator_source_service_mock.go +++ b/backend/modules/evaluation/domain/service/mocks/evaluator_source_service_mock.go @@ -42,18 +42,18 @@ func (m *MockEvaluatorSourceService) EXPECT() *MockEvaluatorSourceServiceMockRec } // Debug mocks base method. -func (m *MockEvaluatorSourceService) Debug(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, exptSpaceID int64) (*entity.EvaluatorOutputData, error) { +func (m *MockEvaluatorSourceService) Debug(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64) (*entity.EvaluatorOutputData, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Debug", ctx, evaluator, input, exptSpaceID) + ret := m.ctrl.Call(m, "Debug", ctx, evaluator, input, evaluatorRunConf, exptSpaceID) ret0, _ := ret[0].(*entity.EvaluatorOutputData) ret1, _ := ret[1].(error) return ret0, ret1 } // Debug indicates an expected call of Debug. -func (mr *MockEvaluatorSourceServiceMockRecorder) Debug(ctx, evaluator, input, exptSpaceID any) *gomock.Call { +func (mr *MockEvaluatorSourceServiceMockRecorder) Debug(ctx, evaluator, input, evaluatorRunConf, exptSpaceID any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Debug", reflect.TypeOf((*MockEvaluatorSourceService)(nil).Debug), ctx, evaluator, input, exptSpaceID) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Debug", reflect.TypeOf((*MockEvaluatorSourceService)(nil).Debug), ctx, evaluator, input, evaluatorRunConf, exptSpaceID) } // EvaluatorType mocks base method. @@ -85,9 +85,9 @@ func (mr *MockEvaluatorSourceServiceMockRecorder) PreHandle(ctx, evaluator any) } // Run mocks base method. -func (m *MockEvaluatorSourceService) Run(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, exptSpaceID int64, disableTracing bool) (*entity.EvaluatorOutputData, entity.EvaluatorRunStatus, string) { +func (m *MockEvaluatorSourceService) Run(ctx context.Context, evaluator *entity.Evaluator, input *entity.EvaluatorInputData, evaluatorRunConf *entity.EvaluatorRunConfig, exptSpaceID int64, disableTracing bool) (*entity.EvaluatorOutputData, entity.EvaluatorRunStatus, string) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Run", ctx, evaluator, input, exptSpaceID, disableTracing) + ret := m.ctrl.Call(m, "Run", ctx, evaluator, input, evaluatorRunConf, exptSpaceID, disableTracing) ret0, _ := ret[0].(*entity.EvaluatorOutputData) ret1, _ := ret[1].(entity.EvaluatorRunStatus) ret2, _ := ret[2].(string) @@ -95,9 +95,9 @@ func (m *MockEvaluatorSourceService) Run(ctx context.Context, evaluator *entity. } // Run indicates an expected call of Run. -func (mr *MockEvaluatorSourceServiceMockRecorder) Run(ctx, evaluator, input, exptSpaceID, disableTracing any) *gomock.Call { +func (mr *MockEvaluatorSourceServiceMockRecorder) Run(ctx, evaluator, input, evaluatorRunConf, exptSpaceID, disableTracing any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Run", reflect.TypeOf((*MockEvaluatorSourceService)(nil).Run), ctx, evaluator, input, exptSpaceID, disableTracing) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Run", reflect.TypeOf((*MockEvaluatorSourceService)(nil).Run), ctx, evaluator, input, evaluatorRunConf, exptSpaceID, disableTracing) } // Validate mocks base method. diff --git a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.evaluator.thrift b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.evaluator.thrift index 6cbcdcd84..4dde8a470 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.evaluator.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.evaluator.thrift @@ -213,6 +213,8 @@ struct RunEvaluatorRequest { 6: optional i64 item_id (api.body='item_id', api.js_conv='true', go.tag='json:"item_id"') 7: optional i64 turn_id (api.body='turn_id', api.js_conv='true', go.tag='json:"turn_id"') + 11: optional evaluator.EvaluatorRunConfig evaluator_run_conf (api.body='evaluator_run_conf') // 评估器运行配置参数 + 100: optional map ext (api.body='ext') 255: optional base.Base Base @@ -230,6 +232,8 @@ struct DebugEvaluatorRequest { 3: required evaluator.EvaluatorInputData input_data (api.body='input_data') // 评测数据输入: 数据集行内容 + 评测目标输出内容与历史记录 + 评测目标的 trace 4: required evaluator.EvaluatorType evaluator_type (api.body='evaluator_type', go.tag='json:"evaluator_type"') + 11: optional evaluator.EvaluatorRunConfig evaluator_run_conf (api.body='evaluator_run_conf') // 评估器运行配置参数 + 255: optional base.Base Base } @@ -245,6 +249,8 @@ struct BatchDebugEvaluatorRequest { 3: required list input_data (api.body='input_data') // 评测数据输入: 数据集行内容 + 评测目标输出内容与历史记录 + 评测目标的 trace 4: required evaluator.EvaluatorType evaluator_type (api.body='evaluator_type', go.tag='json:"evaluator_type"') + 11: optional evaluator.EvaluatorRunConfig evaluator_run_conf (api.body='evaluator_run_conf') // 评估器运行配置参数 + 255: optional base.Base Base } diff --git a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift index fa6903db8..3d871c476 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.expt.thrift @@ -30,6 +30,8 @@ struct CreateExperimentRequest { 32: optional expt.SourceType source_type (api.body = 'source_type') 33: optional string source_id (api.body = 'source_id') + 41: optional map evaluator_version_run_configs (api.body='evaluator_version_run_configs', api.js_conv='true') // 评估器版本ID对应的评估器运行配置信息 + 200: optional common.Session session 255: optional base.Base Base diff --git a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.spi.thrift b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.spi.thrift index 65be6c824..66a928b82 100644 --- a/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.spi.thrift +++ b/idl/thrift/coze/loop/evaluation/coze.loop.evaluation.spi.thrift @@ -116,6 +116,10 @@ struct InvokeCustomEvaluator { // the input data structure for custom evaluator struct InvokeEvaluatorInputData { 1: optional map input_fields // key-value structure of input variables required by the evaluator + 2: optional map evaluate_dataset_fields // key-value structure of dataset variables required by the evaluator + 3: optional map evaluate_target_output_fields // key-value structure of target output variables required by the evaluator + + 20: optional map ext // dynamic fields for inject parameters } // the output data structure for custom evaluator diff --git a/idl/thrift/coze/loop/evaluation/domain/evaluator.thrift b/idl/thrift/coze/loop/evaluation/domain/evaluator.thrift index 0ccf53554..0c92cf2bc 100644 --- a/idl/thrift/coze/loop/evaluation/domain/evaluator.thrift +++ b/idl/thrift/coze/loop/evaluation/domain/evaluator.thrift @@ -57,6 +57,9 @@ const EvaluatorBoxType EvaluatorBoxType_Black = "Black" // 黑盒 typedef string EvaluatorAccessProtocol(ts.enum="true") const EvaluatorAccessProtocol EvaluatorAccessProtocol_RPC = "rpc" +const EvaluatorAccessProtocol AccessProtocol_RPCOld = "rpc_old" +const EvaluatorAccessProtocol AccessProtocol_FaasHTTP = "faas_http" +const EvaluatorAccessProtocol AccessProtocol_FaasHTTPOld = "faas_http_old" typedef string EvaluatorVersionType(ts.enum="true") const EvaluatorVersionType EvaluatorVersionType_Latest = "Latest" // 最新版本 @@ -95,9 +98,11 @@ struct CustomRPCEvaluator { 2: required EvaluatorAccessProtocol access_protocol // 本期是RPC,后续还可拓展HTTP 3: optional string service_name 4: optional string cluster + 5: optional EvaluatorHTTPInfo invoke_http_info // 执行http信息 10: optional i64 timeout // ms 11: optional common.RateLimit rate_limit // 自定义评估器的限流配置 + 12: optional map ext // extra fields } struct EvaluatorVersion { @@ -123,6 +128,7 @@ struct EvaluatorContent { struct EvaluatorIDVersionItem { 1: optional i64 evaluator_id (api.js_conv = 'true', go.tag = 'json:"evaluator_id"') 2: optional string version (api.js_conv = 'true', go.tag = 'json:"version"') + 3: optional EvaluatorRunConfig run_config (go.tag = 'json:"run_config"') } struct EvaluatorInfo { @@ -258,3 +264,17 @@ struct EvaluatorInputData { 100: optional map ext } + +struct EvaluatorHTTPInfo { + 1: optional EvaluatorHTTPMethod method + 2: optional string path +} + +typedef string EvaluatorHTTPMethod (ts.enum="true") +const EvaluatorHTTPMethod HTTPMethod_Get = "get" +const EvaluatorHTTPMethod HTTPMethod_Post = "post" + +struct EvaluatorRunConfig { + 1: optional string env + 2: optional common.RuntimeParam evaluator_runtime_param +} \ No newline at end of file diff --git a/idl/thrift/coze/loop/evaluation/domain/expt.thrift b/idl/thrift/coze/loop/evaluation/domain/expt.thrift index 20debff4d..d9cfd1f0c 100644 --- a/idl/thrift/coze/loop/evaluation/domain/expt.thrift +++ b/idl/thrift/coze/loop/evaluation/domain/expt.thrift @@ -61,6 +61,8 @@ struct Experiment { 41: optional i64 max_alive_time 42: optional SourceType source_type 43: optional string source_id + + 51: optional map evaluator_version_run_configs (api.js_conv='true') // 评估器版本ID对应的评估器运行配置信息 } struct TokenUsage {