ai.go 1.6 KB

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