ai.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package main
  2. import (
  3. "bytes"
  4. "context"
  5. "encoding/json"
  6. "errors"
  7. "fmt"
  8. "net/http"
  9. "time"
  10. )
  11. // sendAi 调用大模型招标分类
  12. func sendAi(data map[string]interface{}, url string) (res map[string]interface{}) {
  13. // 设置 2 秒的超时
  14. ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
  15. defer cancel()
  16. //url := "http://192.168.3.109:16688"
  17. jsonData, err := json.Marshal(data)
  18. if err != nil {
  19. fmt.Println("JSON marshal error:", err)
  20. return
  21. }
  22. req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
  23. if err != nil {
  24. fmt.Println("Request error:", err)
  25. return
  26. }
  27. req.Header.Set("Content-Type", "application/json")
  28. // 将请求与上下文关联
  29. req = req.WithContext(ctx)
  30. client := &http.Client{}
  31. resp, err := client.Do(req)
  32. if err != nil {
  33. // 使用 errors.Is 检查错误是否是超时错误
  34. if errors.Is(err, context.DeadlineExceeded) {
  35. fmt.Println("Request timed out")
  36. return
  37. }
  38. fmt.Println("Request error:", err)
  39. return
  40. }
  41. defer resp.Body.Close()
  42. err = json.NewDecoder(resp.Body).Decode(&res)
  43. if err != nil {
  44. fmt.Println("Response decoding error:", err)
  45. return
  46. }
  47. //map[result:[结果-中标] status:200]
  48. return
  49. }