diff --git a/workflow/service/flow/lambda_node.go b/workflow/service/flow/lambda_node.go index 3bc8646..df6100e 100644 --- a/workflow/service/flow/lambda_node.go +++ b/workflow/service/flow/lambda_node.go @@ -148,7 +148,7 @@ func ModelLambda(ctx context.Context, input any) (any, error) { return nil, err } } - + g.Log().Debugf(ctx, "modelId:%v ,outputRes: %v", nodeInput.Config.ModelConfig.ModelId, outputRes) nodeInput.Config.OutputResult = outputRes return nodeInput, nil } diff --git a/workflow/service/flow/lambda_node_util.go b/workflow/service/flow/lambda_node_util.go index f1a743f..7ad2f6d 100644 --- a/workflow/service/flow/lambda_node_util.go +++ b/workflow/service/flow/lambda_node_util.go @@ -147,6 +147,8 @@ func HttpCallResultLambda(ctx context.Context, nodeInput *flowDto.NodeExecutionI } } + g.Log().Debugf(ctx, "httpCallResultLambda: body: %v", body) + // 构建请求参数 ProcessValueSourceRecursive(body, nodeInput.Global) // 递归剥掉 {type, value/attrs} 包裹层,只保留 key/value diff --git a/workflow/service/flow/lambda_value_source.go b/workflow/service/flow/lambda_value_source.go index 98d2e9d..932f262 100644 --- a/workflow/service/flow/lambda_value_source.go +++ b/workflow/service/flow/lambda_value_source.go @@ -186,21 +186,21 @@ func resolveValueSource(global *flowDto.FlowExecutionInput, nodeId, field string } } default: - for _, output := range nodeConfig.OutputResult { - // 模型节点输出记录是单 key 的字面量扁平 key(如 "choices.attrs[0].attrs.delta.attrs.content"), - // gjson 会把 . 和 [0] 当结构路径解析,无法命中字面量 key,故先按字面量 key 直接取值; - // 未命中再回退 gjson 路径查询(兼容真正嵌套的输出结构)。 - if v, has := output[field]; has { - value = v - } else { - if field == "templates" { - value = nodeConfig.Templates + if field == "templates" { + value = nodeConfig.Templates + } else { + for _, output := range nodeConfig.OutputResult { + // 模型节点输出记录是单 key 的字面量扁平 key(如 "choices.attrs[0].attrs.delta.attrs.content"), + // gjson 会把 . 和 [0] 当结构路径解析,无法命中字面量 key,故先按字面量 key 直接取值; + // 未命中再回退 gjson 路径查询(兼容真正嵌套的输出结构)。 + if v, has := output[field]; has { + value = v } else { value = gjson.Get(gconv.String(output), field).Value() } - } - if !g.IsEmpty(value) { - return value, gjson.Get(gconv.String(output), CleanFieldPath("refsName")).Value(), true + if !g.IsEmpty(value) { + return value, gjson.Get(gconv.String(output), CleanFieldPath("refsName")).Value(), true + } } } }