chat_completions_handler.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package chat
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "io"
  7. "net/http"
  8. "github.com/zeromicro/go-zero/rest/httpx"
  9. "wechat-api/internal/logic/chat"
  10. "wechat-api/internal/svc"
  11. "wechat-api/internal/types"
  12. "github.com/zeromicro/go-zero/core/logx"
  13. )
  14. // swagger:route post /v1/chat/completions chat ChatCompletions
  15. //
  16. //
  17. //
  18. // Parameters:
  19. // + name: body
  20. // require: true
  21. // in: body
  22. // type: CompApiReq
  23. //
  24. // Responses:
  25. // 200: CompOpenApiResp
  26. func ChatCompletionsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
  27. return func(w http.ResponseWriter, r *http.Request) {
  28. /*
  29. var req types.CompApiReq
  30. if err := httpx.Parse(r, &req, true); err != nil {
  31. httpx.ErrorCtx(r.Context(), w, err)
  32. return
  33. }
  34. l := chat.NewChatCompletionsLogic(r.Context(), svcCtx)
  35. resp, err := l.ChatCompletions(&req)
  36. if err != nil {
  37. httpx.ErrorCtx(r.Context(), w, err)
  38. } else {
  39. httpx.OkJsonCtx(r.Context(), w, resp)
  40. }
  41. */
  42. // 读取请求体
  43. body, err := io.ReadAll(r.Body)
  44. if err != nil {
  45. httpx.ErrorCtx(r.Context(), w, err)
  46. return
  47. }
  48. // 将请求体还原,以便后续处理
  49. r.Body = io.NopCloser(bytes.NewBuffer(body))
  50. // 打印请求体
  51. logx.Info(string(body))
  52. var req types.CompApiReq
  53. err = json.Unmarshal([]byte(string(body)), &req)
  54. if err != nil {
  55. fmt.Println("Error:", err)
  56. return
  57. }
  58. // 打印请求体
  59. logx.Info(req)
  60. l := chat.NewChatCompletionsLogic(r.Context(), svcCtx)
  61. resp, err := l.ChatCompletions(&req)
  62. if err != nil {
  63. httpx.ErrorCtx(r.Context(), w, err)
  64. } else {
  65. httpx.OkJsonCtx(r.Context(), w, resp)
  66. }
  67. }
  68. }