ai.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package aiser
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "eta/eta_api/models/aimod"
  6. "eta/eta_api/utils"
  7. "io/ioutil"
  8. "net/http"
  9. "strings"
  10. "time"
  11. )
  12. func ChatAutoMsg(prompt string, historyChatList []aimod.HistoryChat) (result string, err error) {
  13. chatUrl := utils.EtaAiUrl + `chat/auto_msg`
  14. param := make(map[string]interface{})
  15. param["Prompt"] = prompt
  16. param["HistoryChatList"] = historyChatList
  17. postData, err := json.Marshal(param)
  18. if err != nil {
  19. return result, err
  20. }
  21. client := &http.Client{}
  22. //提交请求
  23. reqest, err := http.NewRequest("POST", chatUrl, strings.NewReader(string(postData)))
  24. businessCode := utils.BusinessCode
  25. if businessCode == "" {
  26. return businessCode, errors.New("未获取到商户号")
  27. }
  28. nonce := utils.GetRandStringNoSpecialChar(16)
  29. timestamp := time.Now().Format(utils.FormatDateTimeUnSpace)
  30. signature := utils.GetSign(nonce, timestamp, utils.EtaAppid, utils.EtaSecret)
  31. //增加header选项
  32. reqest.Header.Add("BusinessCode", businessCode)
  33. reqest.Header.Add("Nonce", nonce)
  34. reqest.Header.Add("Timestamp", timestamp)
  35. reqest.Header.Add("Appid", utils.EtaAppid)
  36. reqest.Header.Add("Signature", signature)
  37. reqest.Header.Set("Content-Type", "application/json")
  38. utils.FileLog.Info("postData:" + string(postData))
  39. response, err := client.Do(reqest)
  40. if err != nil {
  41. return
  42. }
  43. defer response.Body.Close()
  44. body, err := ioutil.ReadAll(response.Body)
  45. utils.FileLog.Info("result:" + string(body))
  46. resp := new(ChatAutoMsgResp)
  47. err = json.Unmarshal(body, &resp)
  48. if err != nil {
  49. return result, err
  50. }
  51. if resp.Ret != 200 {
  52. return resp.Msg, nil
  53. }
  54. result = resp.Data
  55. return result, nil
  56. }
  57. type ChatAutoMsgResp struct {
  58. Ret int
  59. Data string
  60. Msg string
  61. }