Windows 的 ChatGPT-API:在您的 Windows 应用程序中使用 ChatGPT





5.00/5 (16投票s)
快速生成文本和图像
引言
OpenAI 于 2023 年 3 月发布了其 REST API。我准备在我的视频编辑器中使用它进行文本、图像生成等等!
背景
- 在 OpenAI 注册一个帐户。
- 在 https://platform.openai.com/account/api-keys 创建 API 密钥。使用不是免费的,但是有一些免费的优惠(例如 beta codex 模型)可供使用。
- 阅读并决定使用哪些模型 https://platform.openai.com/docs/models/overview。
- 在您的 Win32 代码中包含 chatgpt.hpp。
生成文本
CHATGPT_API c("your_api_key");
c.SetModel("code-davinci-002"); // optional
auto off = c.Text("What is your name?");
auto& r = off.value();
std::cout << r.t << std::endl;
它返回一个 std::optional<CHATGPT_RESULT>
,其中包含来自模型的响应。
有一个 temperature
参数可用于决定响应的随机性(越低 - 越不随机)。您还可以设置一个 code
模型(目前免费)来测试代码生成。
生成图像
CHATGPT_API c("your_api_key");
auto off = c.Image("Red cat");
auto& r = off.value();
std::cout << r.t << std::endl;
它返回一个 std::optional<CHATGPT_RESULT>
,其中包含红色猫的 PNG 图像的原始数据。
该库依赖于我的 REST API (包含在存储库中),并通过 JSON 与 ChatGPT
端点进行通信。例如,成员 Text()
的实现方式如下
std::optional<CHATGPT_RESULT> Text(const char* prompt,
int Temperature = 0, int max_tokens = 10)
{
std::vector<char> data(10000);
sprintf_s(data.data(), 10000, R"({
"model": "%s",
"prompt" : "%s",
"temperature" : %i,
"max_tokens" : %i,
"top_p" : 1,
"frequency_penalty" : 0.2,
"presence_penalty" : 0
})", model.c_str(), prompt, Temperature, max_tokens);
data.resize(strlen(data.data()));
RESTAPI::REST r;
r.Connect(L"api.openai.com", true, 0, 0, 0, 0);
std::initializer_list<std::wstring> hdrs = {
Bearer(),
L"Content-Type: application/json",
};
auto hi = r.RequestWithBuffer(L"/v1/completions",
L"POST", hdrs, data.data(), data.size());
std::vector<char> out;
r.ReadToMemory(hi, out);
out.resize(out.size() + 1);
try
{
jsonxx::Object o;
o.parse(out.data());
CHATGPT_RESULT r;
r.o = o;
auto& choices = o.get<jsonxx::Array>("choices");
auto& choice0 = choices.get<jsonxx::Object>(0);
r.t = choice0.get<jsonxx::String>("text");
return r;
}
catch (...)
{
}
return {};
}
关注点
现在,我正忙于在我的 Turbo Play 中实现这些很棒的功能,所以我会不断地实现新的东西!
历史
- 2023年3月2日 - 首次发布