GPT-4 not supported
This commit is contained in:
parent
f87a3b3f3a
commit
53dae12b33
47
handlers.go
47
handlers.go
@ -63,18 +63,25 @@ func optionsHandler(c *gin.Context) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
func nightmare(c *gin.Context) {
|
func nightmare(c *gin.Context) {
|
||||||
var chat_request typings.APIRequest
|
var original_request typings.APIRequest
|
||||||
err := c.BindJSON(&chat_request)
|
err := c.BindJSON(&original_request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(400, gin.H{
|
c.JSON(400, gin.H{
|
||||||
"error": "invalid request",
|
"error": "invalid request",
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// Throw error when model contains gpt-4
|
||||||
|
if strings.Contains(original_request.Model, "gpt-4") {
|
||||||
|
c.JSON(400, gin.H{
|
||||||
|
"error": "gpt-4 is not supported",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
// Convert the chat request to a ChatGPT request
|
// Convert the chat request to a ChatGPT request
|
||||||
chatgpt_request := chatgpt.ConvertAPIRequest(chat_request)
|
translated_request := chatgpt.ConvertAPIRequest(original_request)
|
||||||
// c.JSON(200, chatgpt_request)
|
// c.JSON(200, chatgpt_request)
|
||||||
response, err := chatgpt.SendRequest(chatgpt_request, &PUID, ACCESS_TOKENS.GetToken())
|
response, err := chatgpt.SendRequest(translated_request, &PUID, ACCESS_TOKENS.GetToken())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(500, gin.H{
|
c.JSON(500, gin.H{
|
||||||
"error": "error sending request",
|
"error": "error sending request",
|
||||||
@ -94,7 +101,7 @@ func nightmare(c *gin.Context) {
|
|||||||
var fulltext string
|
var fulltext string
|
||||||
|
|
||||||
// Read the response byte by byte until a newline character is encountered
|
// Read the response byte by byte until a newline character is encountered
|
||||||
if chat_request.Stream {
|
if original_request.Stream {
|
||||||
// Response content type is text/event-stream
|
// Response content type is text/event-stream
|
||||||
c.Header("Content-Type", "text/event-stream")
|
c.Header("Content-Type", "text/event-stream")
|
||||||
} else {
|
} else {
|
||||||
@ -115,37 +122,37 @@ func nightmare(c *gin.Context) {
|
|||||||
// Remove "data: " from the beginning of the line
|
// Remove "data: " from the beginning of the line
|
||||||
line = line[6:]
|
line = line[6:]
|
||||||
// Parse the line as JSON
|
// Parse the line as JSON
|
||||||
var chat_response responses.Data
|
var original_response responses.Data
|
||||||
err = json.Unmarshal([]byte(line), &chat_response)
|
err = json.Unmarshal([]byte(line), &original_response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if chat_response.Error != nil {
|
if original_response.Error != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if chat_response.Message.Content.Parts[0] == "" || chat_response.Message.Author.Role != "assistant" {
|
if original_response.Message.Content.Parts[0] == "" || original_response.Message.Author.Role != "assistant" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if chat_response.Message.Metadata.Timestamp == "absolute" {
|
if original_response.Message.Metadata.Timestamp == "absolute" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
tmp_fulltext := chat_response.Message.Content.Parts[0]
|
tmp_fulltext := original_response.Message.Content.Parts[0]
|
||||||
chat_response.Message.Content.Parts[0] = strings.ReplaceAll(chat_response.Message.Content.Parts[0], fulltext, "")
|
original_response.Message.Content.Parts[0] = strings.ReplaceAll(original_response.Message.Content.Parts[0], fulltext, "")
|
||||||
var delta responses.Delta = responses.Delta{
|
var delta responses.Delta = responses.Delta{
|
||||||
Content: chat_response.Message.Content.Parts[0],
|
Content: original_response.Message.Content.Parts[0],
|
||||||
Role: "assistant",
|
Role: "assistant",
|
||||||
}
|
}
|
||||||
var finish_reason interface{}
|
var finish_reason interface{}
|
||||||
if chat_response.Message.Metadata.FinishDetails != nil {
|
if original_response.Message.Metadata.FinishDetails != nil {
|
||||||
finish_reason = "stop"
|
finish_reason = "stop"
|
||||||
delta.Content = ""
|
delta.Content = ""
|
||||||
} else {
|
} else {
|
||||||
finish_reason = nil
|
finish_reason = nil
|
||||||
}
|
}
|
||||||
completions_response := responses.ChatCompletionChunk{
|
translated_response := responses.ChatCompletionChunk{
|
||||||
ID: "chatcmpl-QXlha2FBbmROaXhpZUFyZUF3ZXNvbWUK",
|
ID: "chatcmpl-QXlha2FBbmROaXhpZUFyZUF3ZXNvbWUK",
|
||||||
Object: "chat.completion.chunk",
|
Object: "chat.completion.chunk",
|
||||||
Created: int64(chat_response.Message.CreateTime),
|
Created: int64(original_response.Message.CreateTime),
|
||||||
Model: "gpt-3.5-turbo-0301",
|
Model: "gpt-3.5-turbo-0301",
|
||||||
Choices: []responses.Choices{
|
Choices: []responses.Choices{
|
||||||
{
|
{
|
||||||
@ -157,11 +164,11 @@ func nightmare(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Stream the response to the client
|
// Stream the response to the client
|
||||||
response_string, err := json.Marshal(completions_response)
|
response_string, err := json.Marshal(translated_response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if chat_request.Stream {
|
if original_request.Stream {
|
||||||
_, err = c.Writer.WriteString("data: " + string(response_string) + "\n\n")
|
_, err = c.Writer.WriteString("data: " + string(response_string) + "\n\n")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@ -172,11 +179,11 @@ func nightmare(c *gin.Context) {
|
|||||||
c.Writer.Flush()
|
c.Writer.Flush()
|
||||||
fulltext = tmp_fulltext
|
fulltext = tmp_fulltext
|
||||||
if finish_reason != nil {
|
if finish_reason != nil {
|
||||||
if !chat_request.Stream {
|
if !original_request.Stream {
|
||||||
full_response := responses.ChatCompletion{
|
full_response := responses.ChatCompletion{
|
||||||
ID: "chatcmpl-QXlha2FBbmROaXhpZUFyZUF3ZXNvbWUK",
|
ID: "chatcmpl-QXlha2FBbmROaXhpZUFyZUF3ZXNvbWUK",
|
||||||
Object: "chat.completion",
|
Object: "chat.completion",
|
||||||
Created: int64(chat_response.Message.CreateTime),
|
Created: int64(original_response.Message.CreateTime),
|
||||||
Model: "gpt-3.5-turbo-0301",
|
Model: "gpt-3.5-turbo-0301",
|
||||||
Choices: []responses.Choice{
|
Choices: []responses.Choice{
|
||||||
{
|
{
|
||||||
|
@ -3,6 +3,7 @@ package types
|
|||||||
type APIRequest struct {
|
type APIRequest struct {
|
||||||
Messages []api_message `json:"messages"`
|
Messages []api_message `json:"messages"`
|
||||||
Stream bool `json:"stream"`
|
Stream bool `json:"stream"`
|
||||||
|
Model string `json:"model"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type api_message struct {
|
type api_message struct {
|
||||||
|
Reference in New Issue
Block a user