Xenith/xenith/ollama_api/handler.hpp
2026-10-02 19:30:49 +07:00

66 lines
1.7 KiB
C++

#pragma once
#include <cstdint>
#include <string>
#include <vector>
namespace api
{
enum class QuantLevel
{
BF16,
FP16,
Q8,
Q6,
Q5,
Q4,
Q2,
Q1,
};
class QuantizationLevel
{
private:
std::string value;
static std::string enum_to_string(QuantLevel quant)
{
switch (quant) {
case QuantLevel::BF16: return "BF16";
case QuantLevel::FP16: return "FP16";
case QuantLevel::Q8: return "Q8_0";
case QuantLevel::Q6: return "Q6_K";
case QuantLevel::Q5: return "Q5_K_M";
case QuantLevel::Q4: return "Q4_K_M";
case QuantLevel::Q2: return "Q2_K";
case QuantLevel::Q1: return "Q1";
default: return "UNKNOWN";
}
}
public:
QuantizationLevel() : value("UNKNOWN") {}
QuantizationLevel(QuantLevel quant) : value(enum_to_string(quant)) {}
QuantizationLevel(const std::string& str) : value(str) {}
operator std::string() const { return value; }
};
struct models_details
{
std::string parent_model;
std::string format;
std::string family;
std::pmr::vector<std::string> families;
uint32_t parameter_size;
QuantizationLevel quantization_level;
std::string expires_at;
std::string size_vram;
};
struct models {
std::string name;
std::string model;
std::string modified_at;
uint64_t size;
std::string digest;
models_details details;
};
}