package l_ai_address import ( "context" "fmt" "gitea.cdlsxd.cn/self-tools/l_ai_address/ai/doubao" "strings" ) type Address struct { P string C string D string } func GetAddress(ctx context.Context, address, key, model string) (Address, error) { modelObj := doubao.NewDouBao(model, key) text := []string{ "解析省市区地址[QUESTION]" + address + "[/QUESTION]", "-根据国家统计局的地址信息 帮我匹配出对应的省市区信息,如果是直辖县级行政区,直接按照区来处理,然后市一级显示上级代管市", "-只需要给出省市区具体名称,不需要解释", "-省市区之间用\",\"隔开", "-区给具体的名称,不要返回市辖区", } res, err := modelObj.GetData(ctx, doubao.Text, func(input string) (string, error) { var resStr string inputSlice := strings.Split(input, ",") if len(inputSlice) < 3 { switch len(inputSlice) { case 2: if strings.HasSuffix(inputSlice[0], "市") { runes := []rune(inputSlice[0]) resStr = fmt.Sprintf("%s,%s", string(runes[:len(runes)-1]), input) } else { resStr = fmt.Sprintf("%s,%s,%s", inputSlice[0], inputSlice[0]+"市", inputSlice[1]) } default: return input, fmt.Errorf("地址解析失败:%s", input) } } else { resStr = input } return resStr, nil }, text...) if err != nil { return Address{}, err } resSlice := strings.Split(res, ",") return Address{P: resSlice[0], C: resSlice[1], D: resSlice[2]}, nil }