65 lines
1.7 KiB
C++
65 lines
1.7 KiB
C++
#include "jsondata.h"
|
|
#include <iostream>
|
|
|
|
CJsonOper::CJsonOper()
|
|
{
|
|
}
|
|
|
|
CJsonOper::~CJsonOper()
|
|
{
|
|
}
|
|
|
|
std::string CJsonOper::format_request(const std::string& content)
|
|
{
|
|
// 定义变量
|
|
std::string model = "deepseek-r1";
|
|
std::string role = "user";
|
|
|
|
// 构造 JSON 对象
|
|
nlohmann::json json_data = {{"model", model}, {"messages", {{{"role", role}, {"content", content}}}}};
|
|
return json_data.dump();
|
|
}
|
|
|
|
Message CJsonOper::parse(const std::string& data)
|
|
{
|
|
Message re;
|
|
json j = json::parse(data);
|
|
if (j.contains("choices") && j["choices"].is_array() && !j["choices"].empty()) {
|
|
const auto& message = j["choices"][0]["message"];
|
|
if (message.contains("content")) {
|
|
re.message_content = message["content"].get<std::string>();
|
|
}
|
|
if (message.contains("reasoning_content")) {
|
|
re.reasoning_content = message["reasoning_content"].get<std::string>();
|
|
}
|
|
}
|
|
if (j.contains("usage")) {
|
|
const auto& usage = j["usage"];
|
|
if (usage.contains("prompt_tokens")) {
|
|
re.prompt_tokens = usage["prompt_tokens"].get<int>();
|
|
}
|
|
if (usage.contains("completion_tokens")) {
|
|
re.completion_tokens = usage["completion_tokens"].get<int>();
|
|
}
|
|
if (usage.contains("total_tokens")) {
|
|
re.total_tokens = usage["total_tokens"].get<int>();
|
|
}
|
|
}
|
|
if (j.contains("id")) {
|
|
re.id = j["id"].get<std::string>();
|
|
}
|
|
return re;
|
|
}
|
|
|
|
bool CJsonOper::save_md(const std::string& data, const std::string& id)
|
|
{
|
|
std::ofstream of(id + ".md");
|
|
if (!of.is_open()) {
|
|
std::cout << "can't open " << id << std::endl;
|
|
return false;
|
|
}
|
|
of << data;
|
|
of.close();
|
|
return true;
|
|
}
|