diff --git a/api/openai/chat.go b/api/openai/chat.go index 8837c65c..cd0b82dd 100644 --- a/api/openai/chat.go +++ b/api/openai/chat.go @@ -81,7 +81,7 @@ func ChatEndpoint(cm *config.ConfigLoader, o *options.Option) func(c *fiber.Ctx) noActionDescription = config.FunctionsConfig.NoActionDescriptionName } - if input.ResponseFormat == "json_object" { + if input.ResponseFormat.Type == "json_object" { input.Grammar = grammar.JSONBNF } diff --git a/api/openai/completion.go b/api/openai/completion.go index fa7e6bac..da28d63c 100644 --- a/api/openai/completion.go +++ b/api/openai/completion.go @@ -65,7 +65,7 @@ func CompletionEndpoint(cm *config.ConfigLoader, o *options.Option) func(c *fibe return fmt.Errorf("failed reading parameters from request:%w", err) } - if input.ResponseFormat == "json_object" { + if input.ResponseFormat.Type == "json_object" { input.Grammar = grammar.JSONBNF } diff --git a/api/openai/image.go b/api/openai/image.go index 8243e167..2fe6c5a7 100644 --- a/api/openai/image.go +++ b/api/openai/image.go @@ -100,7 +100,7 @@ func ImageEndpoint(cm *config.ConfigLoader, o *options.Option) func(c *fiber.Ctx } b64JSON := false - if input.ResponseFormat == "b64_json" { + if input.ResponseFormat.Type == "b64_json" { b64JSON = true } // src and clip_skip diff --git a/api/schema/openai.go b/api/schema/openai.go index 899f1b74..6355ff63 100644 --- a/api/schema/openai.go +++ b/api/schema/openai.go @@ -83,6 +83,12 @@ type OpenAIModel struct { Object string `json:"object"` } +type ChatCompletionResponseFormatType string + +type ChatCompletionResponseFormat struct { + Type ChatCompletionResponseFormatType `json:"type,omitempty"` +} + type OpenAIRequest struct { config.PredictionOptions @@ -92,7 +98,7 @@ type OpenAIRequest struct { // whisper File string `json:"file" validate:"required"` //whisper/image - ResponseFormat string `json:"response_format"` + ResponseFormat ChatCompletionResponseFormat `json:"response_format"` // image Size string `json:"size"` // Prompt is read only by completion/image API calls