package main import ( "encoding/json" "fmt" zhipu "github.com/itcwc/go-zhipu/model_api" "github.com/itcwc/go-zhipu/utils" "log" "strings" ) // removeDuplicates 去除数组重复数据 func removeDuplicates(bondIds []int) []int { unique := make(map[int]struct{}) // 使用 struct{} 作为值,占用内存小 result := []int{} for _, id := range bondIds { if _, exists := unique[id]; !exists { unique[id] = struct{}{} result = append(result, id) } } return result } // ZpAI4 传参主营业务 func ZpAI4(apiKey, model, name string, businessScope string, names []string) (rest map[string]interface{}) { expireAtTime := int64(1751339252) // token 过期时间 sys := `请根据我给出的公司名称,依据其单位性质、单位职能和业务范围,准确给出最符合的二个国标行业分类标签;分别给出一级标签、二级标签、三级标签和四级标签,并给出每一个的可靠性,可靠性用浮点数表示,比如:0.85,输出结果以JSON格式返回,格式如下: { "result":[ {"label1":"制造业","label2":"通用设备制造业","label3":"通用零部件制造","label4":"机械零部件加工","score":0.83}, {"label1":"制造业","label2":"食品制造业","label3":"罐头食品制造","label4":"蔬菜、水果罐头制造","score":0.80} ] };返回结果按照score 降序排序。我只要最匹配的二个国标行业标签,只需要返回对应的中文。如果无法识别出类别,直接给我空字符串。按照以上要求输出,不要联想,不要无中生有,不要生成解释。公司是:` text := fmt.Sprintf("%s,%s", sys, name) text = text + "请在我提供的国标行标签里返回,国标行业标签有:" + strings.Join(names, ",") if businessScope != "" { text = text + ";主营业务是:" + businessScope } mssage := zhipu.PostParams{ Model: model, Messages: []zhipu.Message{ { Role: "user", // 消息的角色信息 详见文档 Content: text, }, }, } token, _ := utils.GenerateToken(apiKey, expireAtTime) postResponse, err := zhipu.BeCommonModel(mssage, token) if err != nil { fmt.Println(err) return } if choices, ok := postResponse["choices"].([]interface{}); ok { if choice, ok2 := choices[0].(map[string]interface{}); ok2 { if message, ok3 := choice["message"].(map[string]interface{}); ok3 { if content, ok4 := message["content"].(string); ok4 { content = strings.ReplaceAll(content, "\n", "") content = strings.ReplaceAll(content, "json", "") content = strings.ReplaceAll(content, "`", "") err = json.Unmarshal([]byte(content), &rest) if err != nil { log.Println("Unmarshal err", err, "content:", content) } } } } } return }