#pragma once #include #include #include 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 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; }; }