chat.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package llm
  2. import (
  3. "bytes"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "io"
  7. "mime/multipart"
  8. "net/http"
  9. "os"
  10. )
  11. type UpdateTempDocsResp struct {
  12. Code int `json:"code"`
  13. Msg string `json:"msg"`
  14. Data struct {
  15. Id string `json:"id"`
  16. FailedFiles []interface{} `json:"failed_files"`
  17. } `json:"data"`
  18. }
  19. func UpdateTempDocs(filePath string) {
  20. postUrl := utils.LLM_SERVER + "/knowledge_base/upload_temp_docs"
  21. params := make(map[string]string)
  22. //params[`prev_id`] = ``
  23. params[`chunk_size`] = `750`
  24. params[`chunk_overlap`] = `150`
  25. params[`zh_title_enhance`] = `true`
  26. files := make(map[string]string)
  27. files[`files`] = filePath
  28. result, err := PostFormData(postUrl, params, files)
  29. if err != nil {
  30. return
  31. }
  32. str := string(result)
  33. fmt.Println(str)
  34. return
  35. }
  36. func ChatByFile(question string) {
  37. // 没有问题那就直接返回
  38. if question == `` {
  39. return
  40. }
  41. }
  42. // PostFormData sends a POST request with form-data
  43. func PostFormData(url string, params map[string]string, files map[string]string) ([]byte, error) {
  44. body := &bytes.Buffer{}
  45. writer := multipart.NewWriter(body)
  46. for key, val := range params {
  47. if err := writer.WriteField(key, val); err != nil {
  48. return nil, err
  49. }
  50. }
  51. for fieldName, filePath := range files {
  52. file, err := os.Open(filePath)
  53. if err != nil {
  54. return nil, err
  55. }
  56. defer file.Close()
  57. part, err := writer.CreateFormFile(fieldName, filePath)
  58. if err != nil {
  59. return nil, err
  60. }
  61. _, err = io.Copy(part, file)
  62. if err != nil {
  63. return nil, err
  64. }
  65. }
  66. err := writer.Close()
  67. if err != nil {
  68. return nil, err
  69. }
  70. req, err := http.NewRequest("POST", url, body)
  71. if err != nil {
  72. return nil, err
  73. }
  74. req.Header.Set("Content-Type", writer.FormDataContentType())
  75. client := &http.Client{}
  76. resp, err := client.Do(req)
  77. if err != nil {
  78. return nil, err
  79. }
  80. defer resp.Body.Close()
  81. result, err := io.ReadAll(resp.Body)
  82. return result, nil
  83. }