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 model_handle)
11+ : model_handle_(std::move(model_handle)) {}
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 () == model_handle_ &&
21+ entry.path ().extension () == " .yaml" ) {
22+ try {
23+ config::YamlHandler handler;
24+ handler.ModelConfigFromFile (entry.path ().string ());
25+ const auto & model_config = handler.GetModelConfig ();
26+ std::cout << " ModelConfig Details:\n " ;
27+ std::cout << " -------------------\n " ;
28+
29+ // Print non-null strings
30+ if (!model_config.id .empty ())
31+ std::cout << " id: " << model_config.id << " \n " ;
32+ if (!model_config.name .empty ())
33+ std::cout << " name: " << model_config.name << " \n " ;
34+ if (!model_config.model .empty ())
35+ std::cout << " model: " << model_config.model << " \n " ;
36+ if (!model_config.version .empty ())
37+ std::cout << " version: " << model_config.version << " \n " ;
38+
39+ // Print non-empty vectors
40+ if (!model_config.stop .empty ()) {
41+ std::cout << " stop: [" ;
42+ for (size_t i = 0 ; i < model_config.stop .size (); ++i) {
43+ std::cout << model_config.stop [i];
44+ if (i < model_config.stop .size () - 1 )
45+ std::cout << " , " ;
46+ }
47+ std::cout << " ]\n " ;
48+ }
49+ // Print valid numbers
50+ if (!std::isnan (static_cast <double >(model_config.top_p )))
51+ std::cout << " top_p: " << model_config.top_p << " \n " ;
52+ if (!std::isnan (static_cast <double >(model_config.temperature )))
53+ std::cout << " temperature: " << model_config.temperature << " \n " ;
54+ if (!std::isnan (static_cast <double >(model_config.frequency_penalty )))
55+ std::cout << " frequency_penalty: " << model_config.frequency_penalty
56+ << " \n " ;
57+ if (!std::isnan (static_cast <double >(model_config.presence_penalty )))
58+ std::cout << " presence_penalty: " << model_config.presence_penalty
59+ << " \n " ;
60+ if (!std::isnan (static_cast <double >(model_config.max_tokens )))
61+ std::cout << " max_tokens: " << model_config.max_tokens << " \n " ;
62+ if (!std::isnan (static_cast <double >(model_config.stream )))
63+ std::cout << " stream: " << std::boolalpha << model_config.stream
64+ << " \n " ;
65+ if (!std::isnan (static_cast <double >(model_config.ngl )))
66+ std::cout << " ngl: " << model_config.ngl << " \n " ;
67+ if (!std::isnan (static_cast <double >(model_config.ctx_len )))
68+ std::cout << " ctx_len: " << model_config.ctx_len << " \n " ;
69+
70+ // Print non-null strings
71+ if (!model_config.engine .empty ())
72+ std::cout << " engine: " << model_config.engine << " \n " ;
73+ if (!model_config.prompt_template .empty ())
74+ std::cout << " prompt_template: " << model_config.prompt_template
75+ << " \n " ;
76+ if (!model_config.system_template .empty ())
77+ std::cout << " system_template: " << model_config.system_template
78+ << " \n " ;
79+ if (!model_config.user_template .empty ())
80+ std::cout << " user_template: " << model_config.user_template
81+ << " \n " ;
82+ if (!model_config.ai_template .empty ())
83+ std::cout << " ai_template: " << model_config.ai_template << " \n " ;
84+ if (!model_config.os .empty ())
85+ std::cout << " os: " << model_config.os << " \n " ;
86+ if (!model_config.gpu_arch .empty ())
87+ std::cout << " gpu_arch: " << model_config.gpu_arch << " \n " ;
88+ if (!model_config.quantization_method .empty ())
89+ std::cout << " quantization_method: "
90+ << model_config.quantization_method << " \n " ;
91+ if (!model_config.precision .empty ())
92+ std::cout << " precision: " << model_config.precision << " \n " ;
93+
94+ if (!std::isnan (static_cast <double >(model_config.tp )))
95+ std::cout << " tp: " << model_config.tp << " \n " ;
96+
97+ // Print non-null strings
98+ if (!model_config.trtllm_version .empty ())
99+ std::cout << " trtllm_version: " << model_config.trtllm_version
100+ << " \n " ;
101+ if (!std::isnan (static_cast <double >(model_config.text_model )))
102+ std::cout << " text_model: " << std::boolalpha
103+ << model_config.text_model << " \n " ;
104+
105+ // Print non-empty vectors
106+ if (!model_config.files .empty ()) {
107+ std::cout << " files: [" ;
108+ for (size_t i = 0 ; i < model_config.files .size (); ++i) {
109+ std::cout << model_config.files [i];
110+ if (i < model_config.files .size () - 1 )
111+ std::cout << " , " ;
112+ }
113+ std::cout << " ]\n " ;
114+ }
115+
116+ // Print valid size_t number
117+ if (model_config.created != 0 )
118+ std::cout << " created: " << model_config.created << " \n " ;
119+
120+ if (!model_config.object .empty ())
121+ std::cout << " object: " << model_config.object << " \n " ;
122+ if (!model_config.owned_by .empty ())
123+ std::cout << " owned_by: " << model_config.owned_by << " \n " ;
124+
125+ found_model = true ;
126+ break ;
127+ } catch (const std::exception& e) {
128+ LOG_ERROR << " Error reading yaml file '" << entry.path ().string ()
129+ << " ': " << e.what ();
130+ }
131+ }
132+ }
133+ }
134+ }
135+ }; // namespace commands
0 commit comments