package l_ai_excel_header_match import ( "context" "encoding/json" "gitea.cdlsxd.cn/self-tools/l_ai_excel_header_match/doubao" "strings" ) func ExcelMatch(ctx context.Context, selfExcelHeader, matchToExcelHeader []string, key string, model string) (resultByte []byte, err error) { var result map[string]interface{} modelObj := doubao.NewDouBao(model, key) text := []string{ "第一张表表头为key,第二张表表头为value,如果未匹配到则返回空", "-第一个表头:[" + strings.Join(matchToExcelHeader, ",") + "]", "-第二个表头:[" + strings.Join(selfExcelHeader, ",") + "]", "-第一张表表头为key,第二张表表头为value,返回一个map映射的json字符串", "-不需要其他额外的表述以及格式", } res, err := modelObj.GetData(ctx, doubao.Text, func(input string) (string, error) { return input, nil }, text...) err = json.Unmarshal([]byte(res), &result) if err != nil { return nil, err } return OrderMapWithSlice(result, matchToExcelHeader) } func OrderMapWithSlice(data map[string]interface{}, desiredOrder []string) ([]byte, error) { var orderedSlice []interface{} for _, key := range desiredOrder { if value, exists := data[key]; exists { // 将键值对存入切片(可选:转为 {Key:..., Value:...} 结构) orderedSlice = append(orderedSlice, map[string]interface{}{ "key": key, "value": value, }) } } // 编码为 JSON return json.MarshalIndent(orderedSlice, "", " ") }