123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 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
- }
|