From ccf6af4dc3887db01d0ee58ec2a9804dbad85c44 Mon Sep 17 00:00:00 2001 From: boojack Date: Wed, 8 Mar 2023 19:37:50 +0800 Subject: [PATCH] fix: request body format in openai api (#1309) --- plugin/openai/chat_completion.go | 17 +++++++++++------ plugin/openai/text_completion.go | 24 +++++++++++++++--------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/plugin/openai/chat_completion.go b/plugin/openai/chat_completion.go index b83147a9..221aa7a8 100644 --- a/plugin/openai/chat_completion.go +++ b/plugin/openai/chat_completion.go @@ -1,12 +1,12 @@ package openai import ( + "bytes" "encoding/json" "errors" "io" "net/http" "net/url" - "strings" ) type ChatCompletionMessage struct { @@ -25,10 +25,6 @@ type ChatCompletionResponse struct { } func PostChatCompletion(prompt string, apiKey string, apiHost string) (string, error) { - requestBody := strings.NewReader(`{ - "model": "gpt-3.5-turbo", - "messages": [{"role": "user", "content": "` + prompt + `"}] - }`) if apiHost == "" { apiHost = "https://api.openai.com" } @@ -37,7 +33,16 @@ func PostChatCompletion(prompt string, apiKey string, apiHost string) (string, e return "", err } - req, err := http.NewRequest("POST", url, requestBody) + values := map[string]interface{}{ + "model": "gpt-3.5-turbo", + "messages": []map[string]string{{"role": "user", "content": prompt}}, + } + jsonValue, err := json.Marshal(values) + if err != nil { + return "", err + } + + req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonValue)) if err != nil { return "", err } diff --git a/plugin/openai/text_completion.go b/plugin/openai/text_completion.go index 25ce7dbf..be7846ae 100644 --- a/plugin/openai/text_completion.go +++ b/plugin/openai/text_completion.go @@ -1,12 +1,12 @@ package openai import ( + "bytes" "encoding/json" "errors" "io" "net/http" "net/url" - "strings" ) type TextCompletionChoice struct { @@ -20,13 +20,6 @@ type TextCompletionResponse struct { } func PostTextCompletion(prompt string, apiKey string, apiHost string) (string, error) { - requestBody := strings.NewReader(`{ - "prompt": "` + prompt + `", - "temperature": 0.5, - "max_tokens": 100, - "n": 1, - "stop": "." - }`) if apiHost == "" { apiHost = "https://api.openai.com" } @@ -35,7 +28,20 @@ func PostTextCompletion(prompt string, apiKey string, apiHost string) (string, e return "", err } - req, err := http.NewRequest("POST", url, requestBody) + values := map[string]interface{}{ + "model": "gpt-3.5-turbo", + "prompt": prompt, + "temperature": 0.5, + "max_tokens": 100, + "n": 1, + "stop": ".", + } + jsonValue, err := json.Marshal(values) + if err != nil { + return "", err + } + + req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonValue)) if err != nil { return "", err }