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;
}

Кто-нибудь знает, как это может произойти?

0 ответов

Другие вопросы по тегам