diff --git a/conversion/response/chatgpt/convert.go b/conversion/response/chatgpt/convert.go index 2262c99..366e332 100644 --- a/conversion/response/chatgpt/convert.go +++ b/conversion/response/chatgpt/convert.go @@ -1,17 +1,16 @@ package chatgpt import ( + "freechatgpt/typings" chatgpt_types "freechatgpt/typings/chatgpt" official_types "freechatgpt/typings/official" "strings" ) -var Previous_text string - -func ConvertToString(chatgpt_response *chatgpt_types.ChatGPTResponse) string { - translated_response := official_types.NewChatCompletionChunk(strings.ReplaceAll(chatgpt_response.Message.Content.Parts[0], Previous_text, "")) +func ConvertToString(chatgpt_response *chatgpt_types.ChatGPTResponse, previous_text *typings.StringStruct) string { + translated_response := official_types.NewChatCompletionChunk(strings.ReplaceAll(chatgpt_response.Message.Content.Parts[0], *&previous_text.Text, "")) translated_response.Choices[0].Delta.Role = chatgpt_response.Message.Author.Role - Previous_text = chatgpt_response.Message.Content.Parts[0] + previous_text.Text = chatgpt_response.Message.Content.Parts[0] return "data: " + translated_response.String() + "\n\n" } diff --git a/internal/chatgpt/request.go b/internal/chatgpt/request.go index 8f0f9a6..8e78bbf 100644 --- a/internal/chatgpt/request.go +++ b/internal/chatgpt/request.go @@ -4,6 +4,7 @@ import ( "bufio" "bytes" "encoding/json" + "freechatgpt/typings" chatgpt_types "freechatgpt/typings/chatgpt" "io" "math/rand" @@ -155,6 +156,7 @@ func Handler(c *gin.Context, response *http.Response, token string, translated_r c.Header("Content-Type", "application/json") } var finish_reason string + var previous_text typings.StringStruct var original_response chatgpt_types.ChatGPTResponse counter := 0 for { @@ -191,7 +193,7 @@ func Handler(c *gin.Context, response *http.Response, token string, translated_r counter++ continue } - response_string := chatgpt_response_converter.ConvertToString(&original_response) + response_string := chatgpt_response_converter.ConvertToString(&original_response, &previous_text) if stream { _, err = c.Writer.WriteString(response_string) if err != nil { @@ -216,9 +218,9 @@ func Handler(c *gin.Context, response *http.Response, token string, translated_r } } if !max_tokens { - return chatgpt_response_converter.Previous_text, nil + return previous_text.Text, nil } - return chatgpt_response_converter.Previous_text, &ContinueInfo{ + return previous_text.Text, &ContinueInfo{ ConversationID: original_response.ConversationID, ParentID: original_response.Message.ID, } diff --git a/typings/typings.go b/typings/typings.go index 6de2663..044a5ea 100644 --- a/typings/typings.go +++ b/typings/typings.go @@ -4,3 +4,7 @@ type GenericResponseLine struct { Line string `json:"line"` Error string `json:"error"` } + +type StringStruct struct { + Text string `json:"text"` +}