Browse Source

临时修改支持请求参数中content的多态

liwei 1 month ago
parent
commit
a196956999

+ 36 - 2
internal/handler/chat/chat_completions_handler.go

@@ -1,6 +1,10 @@
 package chat
 
 import (
+	"bytes"
+	"encoding/json"
+	"fmt"
+	"io"
 	"net/http"
 
 	"github.com/zeromicro/go-zero/rest/httpx"
@@ -8,6 +12,8 @@ import (
 	"wechat-api/internal/logic/chat"
 	"wechat-api/internal/svc"
 	"wechat-api/internal/types"
+
+	"github.com/zeromicro/go-zero/core/logx"
 )
 
 // swagger:route post /v1/chat/completions chat ChatCompletions
@@ -27,12 +33,40 @@ import (
 
 func ChatCompletionsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
 	return func(w http.ResponseWriter, r *http.Request) {
-		var req types.CompApiReq
-		if err := httpx.Parse(r, &req, true); err != nil {
+		/*
+			var req types.CompApiReq
+			if err := httpx.Parse(r, &req, true); err != nil {
+				httpx.ErrorCtx(r.Context(), w, err)
+				return
+			}
+
+			l := chat.NewChatCompletionsLogic(r.Context(), svcCtx)
+			resp, err := l.ChatCompletions(&req)
+			if err != nil {
+				httpx.ErrorCtx(r.Context(), w, err)
+			} else {
+				httpx.OkJsonCtx(r.Context(), w, resp)
+			}
+		*/
+		// 读取请求体
+		body, err := io.ReadAll(r.Body)
+		if err != nil {
 			httpx.ErrorCtx(r.Context(), w, err)
 			return
 		}
+		// 将请求体还原,以便后续处理
+		r.Body = io.NopCloser(bytes.NewBuffer(body))
 
+		// 打印请求体
+		logx.Info(string(body))
+		var req types.CompApiReq
+		err = json.Unmarshal([]byte(string(body)), &req)
+		if err != nil {
+			fmt.Println("Error:", err)
+			return
+		}
+		// 打印请求体
+		logx.Info(req)
 		l := chat.NewChatCompletionsLogic(r.Context(), svcCtx)
 		resp, err := l.ChatCompletions(&req)
 		if err != nil {

+ 4 - 1
internal/logic/chat/chat_completions_logic.go

@@ -3,6 +3,7 @@ package chat
 import (
 	"context"
 	"errors"
+	"fmt"
 	"strconv"
 
 	"wechat-api/ent"
@@ -163,13 +164,15 @@ func (l *ChatCompletionsLogic) appendUsageDetailLog(authToken string, req *types
 	completionToken := uint64(resp.Usage.CompletionTokens)
 	totalTokens := promptTokens + completionToken
 
+	fmt.Printf("====>n appendUsageDetailLog:%v|||%T\n", req.Messages[0].Content, req.Messages[0].Content)
+
 	res, err := l.svcCtx.DB.UsageDetail.Create().
 		SetNotNilType(&logType).
 		SetNotNilBotID(&authToken).
 		SetNotNilReceiverID(&req.EventType).
 		SetNotNilSessionID(&sessionId).
 		SetNillableApp(&workIdx).
-		SetNillableRequest(&req.Messages[0].Content).
+		//SetNillableRequest(&req.Messages[0].Content).
 		SetNillableResponse(&resp.Choices[0].Message.Content).
 		SetNillableOrganizationID(&orgId).
 		SetOriginalData(rawReqResp).