1+ #include " model_get_cmd.h"
2+ #include < filesystem>
3+ #include < iostream>
4+ #include < vector>
5+ #include " config/yaml_config.h"
6+ #include " trantor/utils/Logger.h"
7+ #include " utils/cortex_utils.h"
8+
9+ namespace commands {
10+ ModelGetCmd::ModelGetCmd (std::string modelHandle)
11+ : modelHandle_(std::move(modelHandle)) {}
12+
13+ void ModelGetCmd::Exec () {
14+ if (std::filesystem::exists (cortex_utils::models_folder) &&
15+ std::filesystem::is_directory (cortex_utils::models_folder)) {
16+ bool found_model = false ;
17+ // Iterate through directory
18+ for (const auto & entry :
19+ std::filesystem::directory_iterator (cortex_utils::models_folder)) {
20+ if (entry.is_regular_file () && entry.path ().stem () == modelHandle_ && entry.path ().extension () == " .yaml" ) {
21+ try {
22+ config::YamlHandler handler;
23+ handler.ModelConfigFromFile (entry.path ().string ());
24+ const auto & model_config = handler.GetModelConfig ();
25+ std::cout << " ModelConfig Details:\n " ;
26+ std::cout << " -------------------\n " ;
27+
28+ // Print non-null strings
29+ if (!model_config.id .empty ())
30+ std::cout << " id: " << model_config.id << " \n " ;
31+ if (!model_config.name .empty ())
32+ std::cout << " name: " << model_config.name << " \n " ;
33+ if (!model_config.model .empty ())
34+ std::cout << " model: " << model_config.model << " \n " ;
35+ if (!model_config.version .empty ())
36+ std::cout << " version: " << model_config.version << " \n " ;
37+
38+ // Print non-empty vectors
39+ if (!model_config.stop .empty ()) {
40+ std::cout << " stop: [" ;
41+ for (size_t i = 0 ; i < model_config.stop .size (); ++i) {
42+ std::cout << model_config.stop [i];
43+ if (i < model_config.stop .size () - 1 )
44+ std::cout << " , " ;
45+ }
46+ std::cout << " ]\n " ;
47+ }
48+ // Print valid numbers
49+ if (!std::isnan (static_cast <double >(model_config.top_p )))
50+ std::cout << " top_p: " << model_config.top_p << " \n " ;
51+ if (!std::isnan (static_cast <double >(model_config.temperature )))
52+ std::cout << " temperature: " << model_config.temperature << " \n " ;
53+ if (!std::isnan (static_cast <double >(model_config.frequency_penalty )))
54+ std::cout << " frequency_penalty: " << model_config.frequency_penalty
55+ << " \n " ;
56+ if (!std::isnan (static_cast <double >(model_config.presence_penalty )))
57+ std::cout << " presence_penalty: " << model_config.presence_penalty
58+ << " \n " ;
59+ if (!std::isnan (static_cast <double >(model_config.max_tokens )))
60+ std::cout << " max_tokens: " << model_config.max_tokens << " \n " ;
61+ if (!std::isnan (static_cast <double >(model_config.stream )))
62+ std::cout << " stream: " << std::boolalpha << model_config.stream << " \n " ;
63+ if (!std::isnan (static_cast <double >(model_config.ngl )))
64+ std::cout << " ngl: " << model_config.ngl << " \n " ;
65+ if (!std::isnan (static_cast <double >(model_config.ctx_len )))
66+ std::cout << " ctx_len: " << model_config.ctx_len << " \n " ;
67+
68+ // Print non-null strings
69+ if (!model_config.engine .empty ())
70+ std::cout << " engine: " << model_config.engine << " \n " ;
71+ if (!model_config.prompt_template .empty ())
72+ std::cout << " prompt_template: " << model_config.prompt_template << " \n " ;
73+ if (!model_config.system_template .empty ())
74+ std::cout << " system_template: " << model_config.system_template << " \n " ;
75+ if (!model_config.user_template .empty ())
76+ std::cout << " user_template: " << model_config.user_template << " \n " ;
77+ if (!model_config.ai_template .empty ())
78+ std::cout << " ai_template: " << model_config.ai_template << " \n " ;
79+ if (!model_config.os .empty ())
80+ std::cout << " os: " << model_config.os << " \n " ;
81+ if (!model_config.gpu_arch .empty ())
82+ std::cout << " gpu_arch: " << model_config.gpu_arch << " \n " ;
83+ if (!model_config.quantization_method .empty ())
84+ std::cout << " quantization_method: " << model_config.quantization_method
85+ << " \n " ;
86+ if (!model_config.precision .empty ())
87+ std::cout << " precision: " << model_config.precision << " \n " ;
88+
89+ if (!std::isnan (static_cast <double >(model_config.tp )))
90+ std::cout << " tp: " << model_config.tp << " \n " ;
91+
92+ // Print non-null strings
93+ if (!model_config.trtllm_version .empty ())
94+ std::cout << " trtllm_version: " << model_config.trtllm_version << " \n " ;
95+ if (!std::isnan (static_cast <double >(model_config.text_model )))
96+ std::cout << " text_model: " << std::boolalpha << model_config.text_model
97+ << " \n " ;
98+
99+ // Print non-empty vectors
100+ if (!model_config.files .empty ()) {
101+ std::cout << " files: [" ;
102+ for (size_t i = 0 ; i < model_config.files .size (); ++i) {
103+ std::cout << model_config.files [i];
104+ if (i < model_config.files .size () - 1 )
105+ std::cout << " , " ;
106+ }
107+ std::cout << " ]\n " ;
108+ }
109+
110+ // Print valid size_t number
111+ if (model_config.created != 0 )
112+ std::cout << " created: " << model_config.created << " \n " ;
113+
114+ if (!model_config.object .empty ())
115+ std::cout << " object: " << model_config.object << " \n " ;
116+ if (!model_config.owned_by .empty ())
117+ std::cout << " owned_by: " << model_config.owned_by << " \n " ;
118+
119+ found_model = true ;
120+ break ;
121+ } catch (const std::exception& e) {
122+ LOG_ERROR << " Error reading yaml file '" << entry.path ().string ()
123+ << " ': " << e.what ();
124+ }
125+ }
126+ }
127+ }
128+ }
129+ }; // namespace commands
0 commit comments