Browse Source

Merge branch 'aj_ai' into debug

tuoling805 1 year ago
parent
commit
dbedc3cae6
3 changed files with 73 additions and 4 deletions
  1. 28 4
      services/aiser/ai.go
  2. 37 0
      utils/common.go
  3. 8 0
      utils/config.go

+ 28 - 4
services/aiser/ai.go

@@ -3,11 +3,15 @@ package aiser
 import (
 	"encoding/json"
 	"eta/eta_api/utils"
-	"github.com/rdlucklib/rdluck_tools/http"
+	"io/ioutil"
+	"net/http"
+	"strings"
+	"time"
 )
 
 func ChatAutoMsg(prompt string) (result string, err error) {
-	chatUrl := utils.EtaAiUrl + `/chat/auto_msg`
+	chatUrl := utils.EtaAiUrl + `chat/auto_msg`
+
 	param := make(map[string]interface{})
 	param["Prompt"] = prompt
 	postData, err := json.Marshal(param)
@@ -15,11 +19,31 @@ func ChatAutoMsg(prompt string) (result string, err error) {
 		return result, err
 	}
 
+	client := &http.Client{}
+	//提交请求
+	reqest, err := http.NewRequest("POST", chatUrl, strings.NewReader(string(postData)))
+	businessCode := utils.BusinessCode
+	nonce := utils.GetRandStringNoSpecialChar(16)
+	timestamp := time.Now().Format(utils.FormatDateTimeUnSpace)
+	signature := utils.GetSign(nonce, timestamp, utils.EtaAppid, utils.EtaSecret)
+	//增加header选项
+	reqest.Header.Add("business_code", businessCode)
+	reqest.Header.Add("nonce", nonce)
+	reqest.Header.Add("timestamp", timestamp)
+	reqest.Header.Add("appid", utils.EtaAppid)
+	reqest.Header.Add("signature", signature)
+	reqest.Header.Set("Content-Type", "application/json")
+
 	utils.FileLog.Info("postData:" + string(postData))
-	body, err := http.HttpPost(chatUrl, string(postData), "application/json; charset=utf-8")
+
+	response, err := client.Do(reqest)
 	if err != nil {
-		return result, err
+		return
 	}
+	defer response.Body.Close()
+
+	body, err := ioutil.ReadAll(response.Body)
+
 	utils.FileLog.Info("result:" + string(body))
 
 	resp := new(ChatAutoMsgResp)

+ 37 - 0
utils/common.go

@@ -6,6 +6,7 @@ import (
 	"crypto/hmac"
 	"crypto/md5"
 	"crypto/sha1"
+	"crypto/sha256"
 	"encoding/base64"
 	"encoding/hex"
 	"encoding/json"
@@ -25,6 +26,7 @@ import (
 	"os/exec"
 	"path"
 	"regexp"
+	"sort"
 	"strconv"
 	"strings"
 	"time"
@@ -2193,3 +2195,38 @@ func GetLikeKeywordPars(pars []interface{}, keyword string, num int) (newPars []
 	}
 	return
 }
+
+func GetSign(nonce, timestamp, appId, secret string) (sign string) {
+	signStrMap := map[string]string{
+		"nonce":     nonce,
+		"timestamp": timestamp,
+		"appid":     appId,
+	}
+	keys := make([]string, 0, len(signStrMap))
+	for k := range signStrMap {
+		keys = append(keys, k)
+	}
+	sort.Strings(keys)
+	var signStr string
+	for _, k := range keys {
+		signStr += k + "=" + signStrMap[k] + "&"
+	}
+	signStr = strings.Trim(signStr, "&")
+	fmt.Println("signStr:" + signStr)
+	sign = HmacSha256ToBase64(secret, signStr)
+	return
+}
+
+// HmacSha256ToBase64 将加密后的二进制转Base64字符串
+func HmacSha256ToBase64(key string, data string) string {
+	return base64.URLEncoding.EncodeToString(HmacSha256(key, data))
+}
+
+// HmacSha256 计算HmacSha256
+// key 是加密所使用的key
+// data 是加密的内容
+func HmacSha256(key string, data string) []byte {
+	mac := hmac.New(sha256.New, []byte(key))
+	_, _ = mac.Write([]byte(data))
+	return mac.Sum(nil)
+}

+ 8 - 0
utils/config.go

@@ -208,6 +208,11 @@ var PythonUrlReport2Img string
 // ETA-AI服务
 var EtaAiUrl string
 
+var (
+	EtaAppid  string
+	EtaSecret string
+)
+
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
 	if err != nil {
@@ -470,6 +475,9 @@ func init() {
 	PythonUrlReport2Img = config["python_url_report2img"]
 
 	EtaAiUrl = config["eta_ai_url"]
+	EtaAppid = config["eta_appid"]
+	EtaSecret = config["eta_secret"]
+
 	// 初始化ES
 	initEs()
 }