ai.go 2.2 KB

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