OpenAI davinci возвращает бессмысленный случайный код при любом запросе
Я пытаюсь создать чат-бота в консоли, используя c++ и openAI davinci. Проблема в том, что при любом запросе openAI возвращает что-то вроде:
d flags with conflicting types: \\n\\t{}\\n\\t{}\\n\\t{}'\n print(sep.join([line, prevLine, nextLine]))\n prevLine = line\n continue\n else:\n if inFlag == 2:\n if isParameter:\n params = set(returnValues)\n if (not gSSA.isActionRetTypeValid(code, params)):\n
Очевидно, это не то, чего я когда-либо ожидал от подсказки «Привет, openAI»…
Мой код:
size_t write_string_callback(void *ptr, size_t size, size_t nmemb, std::string *stream)
{
size_t bytes = size * nmemb;
stream->append((char*)ptr, bytes);
return bytes;
}
int main() {
// Construct the HTTP request
std::string url = "https://api.openai.com/v1/engines/davinci-codex/completions";
std::string api_key = "API_KEY";
std::string prompt = "No code";
nlohmann::json payload = {
{"prompt", prompt},
{"max_tokens", 100},
{"temperature", 1}
};
std::string payload_str = payload.dump();
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, ("Content-Type: application/json"));
headers = curl_slist_append(headers, ("Authorization: Bearer " + api_key).c_str());
// Initialize the curl session
CURL *curl = curl_easy_init();
// Set the curl options
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload_str.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
std::cout << payload_str.c_str() << std::endl;
// Execute the request and get the response
std::string response_string;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &write_string_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response_string);
CURLcode res = curl_easy_perform(curl);
// Cleanup the curl session
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
// Parse the JSON response and extract the response text
if (res == CURLE_OK) {
nlohmann::json response_json = nlohmann::json::parse(response_string);
std::string response_text = response_json.dump(2);
std::cout << "ChatGPT: " << response_text << std::endl;
} else {
std::cerr << "Error: " << curl_easy_strerror(res) << std::endl;
}
return 0;
}
Кто-нибудь знает, как это может произойти?