ai_baidu.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package ai
  2. import (
  3. "bytes"
  4. "context"
  5. "data_ai/ul"
  6. "encoding/json"
  7. "github.com/baidubce/bce-qianfan-sdk/go/qianfan"
  8. log "github.com/donnie4w/go-logger/logger"
  9. "io/ioutil"
  10. qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  11. "net/http"
  12. "os"
  13. "time"
  14. )
  15. // 通用提示语···
  16. func PostBaiDuDSAI(content string) map[string]interface{} {
  17. // API的URL
  18. apiURL := "https://qianfan.baidubce.com/v2/chat/completions"
  19. // 构造请求数据
  20. messages := []map[string]interface{}{}
  21. messages = append(messages, map[string]interface{}{
  22. "role": "user",
  23. "content": content,
  24. })
  25. //glm-4-air glm-4-0520 glm-4-flash
  26. requestData := map[string]interface{}{
  27. "model": "deepseek-v3",
  28. "temperature": 0.1,
  29. "top_p": 0.7,
  30. "messages": messages,
  31. }
  32. jsonData, _ := json.Marshal(requestData)
  33. // 创建HTTP请求
  34. req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(jsonData))
  35. if err != nil {
  36. log.Debug("Error: %s", err)
  37. return map[string]interface{}{}
  38. }
  39. // 设置请求头
  40. req.Header.Add("Content-Type", "application/json")
  41. req.Header.Add("appid", "app-myQb9VYP")
  42. req.Header.Add("Authorization", "Bearer bce-v3/ALTAK-tiBiZmOp65qBQpU9Ipv8z/b3fe9ad37d7e6b006418d85758b107ad99a72f46")
  43. client := &http.Client{}
  44. client.Timeout = 300 * time.Second
  45. resp, err := client.Do(req)
  46. if err != nil {
  47. return map[string]interface{}{}
  48. }
  49. defer resp.Body.Close()
  50. // 解析响应
  51. body, _ := ioutil.ReadAll(resp.Body)
  52. res := make(map[string]interface{})
  53. json.Unmarshal(body, &res)
  54. if res != nil {
  55. if choices := ul.IsMarkInterfaceMap(res["choices"]); len(choices) > 0 {
  56. if message := qu.ObjToMap(choices[0]["message"]); message != nil {
  57. result := qu.ObjToString((*message)["content"])
  58. result = ul.Escape.ReplaceAllString(result, "")
  59. if new_result := ul.SaveResultReg.FindString(result); new_result != "" {
  60. result = new_result
  61. }
  62. dict := make(map[string]interface{})
  63. json.Unmarshal([]byte(result), &dict)
  64. return dict
  65. }
  66. }
  67. }
  68. return map[string]interface{}{}
  69. }
  70. /*****************************
  71. ******************************
  72. ******************************
  73. ******************************
  74. ******************************
  75. ******************************/
  76. // 请求数据外围字段···重试1次···
  77. func PostBaiDuDSInfo(content string) map[string]interface{} {
  78. zp, ok := map[string]interface{}{}, 0
  79. for {
  80. ok++
  81. if zp = PostBaiDuDSAI(content); len(zp) > 0 {
  82. break
  83. }
  84. if ok >= req_retry_deepseek {
  85. break
  86. }
  87. }
  88. return zp
  89. }
  90. // 百度千帆
  91. func PostBaiDuAI(content string) map[string]interface{} {
  92. // 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
  93. os.Setenv("QIANFAN_ACCESS_KEY", "d60a9d42ca744a4a9d0e721666c8d3cc")
  94. os.Setenv("QIANFAN_SECRET_KEY", "2736bdc60aa14b3eaaf02597fc88a0e5")
  95. // 指定特定模型
  96. chat := qianfan.NewChatCompletion(
  97. qianfan.WithModel("ERNIE-Speed-128K"),
  98. )
  99. resp, err := chat.Do(
  100. context.TODO(),
  101. &qianfan.ChatCompletionRequest{
  102. Messages: []qianfan.ChatCompletionMessage{
  103. qianfan.ChatCompletionUserMessage(content),
  104. },
  105. },
  106. )
  107. if err != nil {
  108. log.Debug(err)
  109. return map[string]interface{}{}
  110. }
  111. res := make(map[string]interface{})
  112. result := resp.Result
  113. result = ul.Escape.ReplaceAllString(result, "")
  114. if new_result := ul.SaveResultReg.FindString(result); new_result != "" {
  115. result = new_result
  116. }
  117. json.Unmarshal([]byte(result), &res)
  118. return res
  119. }