[M1 Mac, Monterey 12.6.3, clang 13.0.0, ChatGPT Plus, NO IDE]
本日2023年3月2日からChatGPT APIが公開されたので早速使ってみました。
C++でChatGPTツールを製作し、ChatGPT Plusは解約して格安で使ってやろうという算段です。
#include <cppstd.h> // 自製ヘッダ
#include <curl/curl.h>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
// Utility function to write response data to a string
size_t writeCallback(char* buf, size_t size, size_t nmemb, void* up) {
// Append the response data to the string
((string*)up)->append((char*)buf, size * nmemb);
return size * nmemb;
}
json chatWithOpenAI(const string& question) {
// Set up the request parameters
string url = "https://api.openai.com/v1/chat/completions";
string apiKey = getenv("CHATGPT_API_KEY");
string authHeader = "Authorization: Bearer " + apiKey;
curl_slist* headers = nullptr;
headers = curl_slist_append(headers, authHeader.c_str());
headers = curl_slist_append(headers, "Content-Type: application/json");
string requestData = R"({"model":"gpt-3.5-turbo", "messages":[{"role":"user","content":")" + question + R"("}], "temperature":0.0})";
string responseData;
cout << "requestData: " << requestData << endl;
// Set up a curl session
CURL* curl = curl_easy_init();
if (curl) {
// Set the request options
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, requestData.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &responseData);
// Send the request
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) {
cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << endl;
}
// Clean up
curl_easy_cleanup(curl);
} else {
cerr << "curl_easy_init() failed" << endl;
}
// Parse the response data and extract the chat response
json responseJson = json::parse(responseData);
return responseJson;
}
int main() {
string question = "iOSアプリをObjective-CやSwift以外の言語で作れますか";
json response = chatWithOpenAI(question);
cout << response.dump() << endl;
return 0;
}
{"choices":[{"finish_reason":"stop","index":0,"message":
{"content":"\n\niOSアプリを作るためには、Appleが提供するiOS SDKを使用する必要があります。
iOS SDKはObjective-CやSwiftで書かれていますが、他の言語で書かれたアプリを作ることも可能です。\n\n
例えば、React NativeやXamarinなどのクロスプラットフォーム開発ツールを使用することで、
JavaScriptやC#などの言語でiOSアプリを作ることができます。
ただし、これらのツールはiOS SDKをラップしているため、一部の機能に制限がある場合があります。\n\n
また、C++やObjective-C++などの言語を使用してiOSアプリを作ることもできます。
ただし、iOS SDKの一部の機能にアクセスするためには、Objective-CやSwiftの知識が必要になる場合があります。\n\n
総じて、iOSアプリを作るためには、iOS SDKを使用する必要がありますが、他の言語を使用することも可能です。
ただし、iOS SDKの機能にアクセスするためには、Objective-CやSwiftの知識が必要になる場合があるため、
これらの言語を学ぶことをお勧めします。","role":"assistant"}}],"created":***,"id":"***","model":"gpt-3.5-turbo-0301","object":"chat.completion","usage":{"completion_tokens":348,"prompt_tokens":27,"total_tokens":375}}