瀏覽代碼

Merge branch 'feature/non_friends' into debug

* feature/non_friends:
  fixbug

# Conflicts:
#	crontask/contact_form.go
boweniac 5 天之前
父節點
當前提交
bc2e013d90
共有 1 個文件被更改,包括 15 次插入4 次删除
  1. 15 4
      crontask/contact_form.go

+ 15 - 4
crontask/contact_form.go

@@ -168,6 +168,7 @@ func (l *CronTask) analyze() {
 		}
 		usageDetails[u.BotID][u.ReceiverID] += fmt.Sprintf("用户:%s\n机器人:%s\n", u.Request, u.Response)
 	}
+	logx.Info("contactFieldTemplates: ", contactFieldTemplates)
 	logx.Info("usageDetails: ", usageDetails)
 	for botID, template := range contactFieldTemplates {
 		if template == nil {
@@ -176,8 +177,6 @@ func (l *CronTask) analyze() {
 			template = append(template, contactBasicFieldTemplates...)
 		}
 		for receiverID, messages := range usageDetails[botID] {
-			logx.Info("messages: ", messages)
-			logx.Info("template: ", template)
 			result, _ := l.openaiRequest(messages, template)
 			logx.Info("result: ", result)
 			if result == nil {
@@ -196,7 +195,6 @@ func (l *CronTask) openaiRequest(messages string, template []custom_types.Contac
 		return nil, err
 	}
 	jsonStr := string(jsonBytes)
-	logx.Info("contactFieldTemplates: ", jsonStr)
 	req := &types.CompApiReq{
 		types.CompCtlReq{
 			"form",
@@ -228,11 +226,24 @@ func (l *CronTask) openaiRequest(messages string, template []custom_types.Contac
 	logx.Info("resp: ", resp)
 	if err == nil && resp != nil && len(resp.Choices) > 0 {
 		logx.Info("resp.Choices: ", resp.Choices[0].Message.Content)
+		// 尝试第一层解析成 string
+		var inner string
+		if err := json.Unmarshal([]byte(resp.Choices[0].Message.Content), &inner); err == nil {
+			// 成功表示 data 是个被编码过的 JSON 字符串
+			resp.Choices[0].Message.Content = inner
+		}
+		// 解析最终目标
 		var items []ResponseItem
-		err = json.Unmarshal([]byte(resp.Choices[0].Message.Content), &items)
+		err := json.Unmarshal([]byte(resp.Choices[0].Message.Content), &items)
 		if err != nil {
 			return nil, err
 		}
+
+		//var items []ResponseItem
+		//err = json.Unmarshal([]byte(resp.Choices[0].Message.Content), &items)
+		//if err != nil {
+		//	return nil, err
+		//}
 		return items, nil
 	} else if resp != nil && len(resp.Choices) == 0 {
 		return nil, err