From 4a7c7efe19e02383ab087e8a8d9e826e3b897227 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Tue, 13 May 2025 12:42:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9B=BD=E5=A4=96=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E4=B8=AD=E8=BD=ACai=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E6=95=B0=E6=8D=AE,=E6=B7=BB=E5=8A=A0gemini?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/im.go | 2 +- proto/im.go | 7 ++++--- service/generalModel/openai.go | 21 ++++++++++++++------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/handler/im.go b/handler/im.go index 867357b..d947911 100644 --- a/handler/im.go +++ b/handler/im.go @@ -452,7 +452,7 @@ func SendMessageForeignAI(c *gin.Context) { resp.Message = "模型必要参数不能为空" } else { //处理 - generalModel.OpenAIForeignAI(req.ModelParam, &req.IMParamContext, req.PlatForm) + generalModel.OpenAIForeignAI(req.ModelParam, &req.IMParamContext, req.PlatForm, req.ChatCompletionMessageParamUnion) //返回结果 resp.Code = proto.SuccessCode resp.Message = "success" diff --git a/proto/im.go b/proto/im.go index 23845b5..664213a 100644 --- a/proto/im.go +++ b/proto/im.go @@ -120,9 +120,10 @@ type UserFileMessage struct { } type SendMessageForeignAIRRequest struct { - ModelParam ModelParam `json:"model_param" form:"model_param"` //模型参数 - IMParamContext IMParamContext `json:"im_param_context" form:"im_param_context"` //上下文参数 - PlatForm string `json:"platform" form:"platform"` //平台名称 + ModelParam ModelParam `json:"model_param" form:"model_param"` //模型参数 + IMParamContext IMParamContext `json:"im_param_context" form:"im_param_context"` //上下文参数 + ChatCompletionMessageParamUnion []openai.ChatCompletionMessageParamUnion `json:"chat_completion_message_param_union" form:"chat_completion_message_param_union"` //消息内容 + PlatForm string `json:"platform" form:"platform"` //平台名称 } type ReceiveMessageForeignAIRRequest struct { diff --git a/service/generalModel/openai.go b/service/generalModel/openai.go index 5ada9d8..947e580 100644 --- a/service/generalModel/openai.go +++ b/service/generalModel/openai.go @@ -188,7 +188,7 @@ func SingleTurnConversationText(prompt string, param proto.ModelParam) (string, } // 只进行与模型信息交互不进行保存,返回消息给国内服务器 -func OpenAIForeignAI(modelParam proto.ModelParam, imCtx *proto.IMParamContext, platform string) { +func OpenAIForeignAI(modelParam proto.ModelParam, imCtx *proto.IMParamContext, platform string, messages []openai.ChatCompletionMessageParamUnion) { apiKey := modelParam.APIKey if apiKey == "" { log.Printf("openai_%s apiKey is empty\n", platform) @@ -198,12 +198,12 @@ func OpenAIForeignAI(modelParam proto.ModelParam, imCtx *proto.IMParamContext, p option.WithAPIKey(apiKey), option.WithBaseURL(modelParam.Url), ) - var messages []openai.ChatCompletionMessageParamUnion - err := GetOpenAIHistoryMessages(imCtx.SessionID, modelParam.System, &messages, imCtx.UserID) - if err != nil { - log.Println("GetOpenAIHistoryMessages error:", err) - return - } + //var messages []openai.ChatCompletionMessageParamUnion + //err := GetOpenAIHistoryMessages(imCtx.SessionID, modelParam.System, &messages, imCtx.UserID) + //if err != nil { + // log.Println("GetOpenAIHistoryMessages error:", err) + // return + //} if proto.Config.LOG_OUTPUT { messagesBytes, _ := json.Marshal(messages) log.Println("openai messages:", string(messagesBytes)) @@ -315,6 +315,13 @@ func SendOpenAIForeignAI(modelParam proto.ModelParam, imCtx *proto.IMParamContex req.IMParamContext = *imCtx req.ModelParam = modelParam req.PlatForm = platform + var messages []openai.ChatCompletionMessageParamUnion + err1 := GetOpenAIHistoryMessages(imCtx.SessionID, modelParam.System, &messages, imCtx.UserID) + if err1 != nil { + log.Println("GetOpenAIHistoryMessages error:", err1) + return + } + req.ChatCompletionMessageParamUnion = messages reqBytes, err := json.Marshal(req) if err != nil { log.Println("send openai foreign ai request error:", err)