ai.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package ai
  2. import (
  3. "errors"
  4. "fmt"
  5. be "spider_creator/backend"
  6. "strings"
  7. zhipu "github.com/itcwc/go-zhipu/model_api"
  8. )
  9. const (
  10. MODEL_NAME = "glm-4-flash" //"glm-4-air"
  11. )
  12. var (
  13. expireAtTime = int64(1719803252) // token 过期时间
  14. apiKey = "5343038d9d934536456f281f8487866a.YUmO7HK9xNb990j9"
  15. )
  16. // UpdateResultDateStr
  17. func UpdateResultDateStr(rs be.ResultItems) (err error) {
  18. tmp := make([]string, len(rs))
  19. for i, v := range rs {
  20. tmp[i] = v.ListPubTime
  21. }
  22. prompt := fmt.Sprintf(`根据我提供的内容,识别每行文本中的日期,按照YYYY-MM-DD形式输出,如:2024-01-01;找不到日期数据,输出NULL。不要联网,不要解释,不要说明,直接输出结果。
  23. ---------------------------
  24. %s
  25. `, strings.Join(tmp, "\n"))
  26. mssage := zhipu.PostParams{
  27. Model: MODEL_NAME,
  28. Messages: []zhipu.Message{
  29. {
  30. Role: "user", // 消息的角色信息 详见文档
  31. Content: prompt, // 消息内容
  32. },
  33. },
  34. }
  35. postResponse, err := zhipu.BeCommonModel(expireAtTime, mssage, apiKey)
  36. if err != nil {
  37. return err
  38. }
  39. //解析数据
  40. choices, _ := postResponse["choices"].([]interface{})
  41. obj, _ := choices[0].(map[string]interface{})
  42. message, _ := obj["message"].(map[string]interface{})
  43. value, _ := message["content"].(string)
  44. // qu.Debug("提示语", prompt)
  45. // qu.Debug("AI调用结果", value)
  46. results := strings.Split(value, "\n")
  47. if len(results) < len(rs) {
  48. err = errors.New("调用大模型失败")
  49. return
  50. }
  51. //更新
  52. for i, v := range rs {
  53. if results[i] != "NULL" {
  54. v.ListPubTime = results[i]
  55. } else {
  56. v.ListPubTime = ""
  57. }
  58. }
  59. return nil
  60. }
  61. // Question
  62. func Question(prompt string) (ret interface{}, err error) {
  63. mssage := zhipu.PostParams{
  64. Model: MODEL_NAME,
  65. Messages: []zhipu.Message{
  66. {
  67. Role: "user", // 消息的角色信息 详见文档
  68. Content: prompt, // 消息内容
  69. },
  70. },
  71. }
  72. postResponse, err := zhipu.BeCommonModel(expireAtTime, mssage, apiKey)
  73. if err != nil {
  74. return nil, err
  75. }
  76. //解析数据
  77. choices, _ := postResponse["choices"].([]interface{})
  78. obj, _ := choices[0].(map[string]interface{})
  79. message, _ := obj["message"].(map[string]interface{})
  80. value := message["content"]
  81. return value, nil
  82. }