mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	common : allow caller to handle help/argument exceptions (#3715)
* Allow caller to handle help/argument exceptions * Prepend newline to usage output * Add new gpt_params_parse_ex function to hide arg-parse impl * Fix issue blocking success case * exit instead of returning false * Update common/common.h Co-authored-by: Georgi Gerganov <ggerganov@gmail.com> * Update common/common.cpp Co-authored-by: Georgi Gerganov <ggerganov@gmail.com> --------- Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
This commit is contained in:
		| @@ -103,9 +103,24 @@ void process_escapes(std::string& input) { | ||||
| } | ||||
|  | ||||
| bool gpt_params_parse(int argc, char ** argv, gpt_params & params) { | ||||
|     bool result = true; | ||||
|     try { | ||||
|         if (!gpt_params_parse_ex(argc, argv, params)) { | ||||
|             gpt_print_usage(argc, argv, gpt_params()); | ||||
|             exit(0); | ||||
|         } | ||||
|     } | ||||
|     catch (const std::invalid_argument& ex) { | ||||
|         fprintf(stderr, ex.what()); | ||||
|         gpt_print_usage(argc, argv, gpt_params()); | ||||
|         exit(1); | ||||
|     } | ||||
|     return result; | ||||
| } | ||||
|  | ||||
| bool gpt_params_parse_ex(int argc, char ** argv, gpt_params & params) { | ||||
|     bool invalid_param = false; | ||||
|     std::string arg; | ||||
|     gpt_params default_params; | ||||
|     const std::string arg_prefix = "--"; | ||||
|     llama_sampling_params & sparams = params.sparams; | ||||
|  | ||||
| @@ -554,11 +569,8 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) { | ||||
|                 break; | ||||
|             } | ||||
|         } else if (arg == "-h" || arg == "--help") { | ||||
|             gpt_print_usage(argc, argv, default_params); | ||||
| #ifndef LOG_DISABLE_LOGS | ||||
|             log_print_usage(); | ||||
| #endif // LOG_DISABLE_LOGS | ||||
|             exit(0); | ||||
|             return false; | ||||
|  | ||||
|         } else if (arg == "--random-prompt") { | ||||
|             params.random_prompt = true; | ||||
|         } else if (arg == "--in-prefix-bos") { | ||||
| @@ -617,22 +629,17 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) { | ||||
|         // End of Parse args for logging parameters | ||||
| #endif // LOG_DISABLE_LOGS | ||||
|         } else { | ||||
|             fprintf(stderr, "error: unknown argument: %s\n", arg.c_str()); | ||||
|             gpt_print_usage(argc, argv, default_params); | ||||
|             exit(1); | ||||
|             throw std::invalid_argument("error: unknown argument: " + arg); | ||||
|         } | ||||
|     } | ||||
|     if (invalid_param) { | ||||
|         fprintf(stderr, "error: invalid parameter for argument: %s\n", arg.c_str()); | ||||
|         gpt_print_usage(argc, argv, default_params); | ||||
|         exit(1); | ||||
|         throw std::invalid_argument("error: invalid parameter for argument: " + arg); | ||||
|     } | ||||
|     if (params.prompt_cache_all && | ||||
|             (params.interactive || params.interactive_first || | ||||
|              params.instruct)) { | ||||
|         fprintf(stderr, "error: --prompt-cache-all not supported in interactive mode yet\n"); | ||||
|         gpt_print_usage(argc, argv, default_params); | ||||
|         exit(1); | ||||
|  | ||||
|         throw std::invalid_argument("error: --prompt-cache-all not supported in interactive mode yet\n"); | ||||
|     } | ||||
|  | ||||
|     if (params.escape) { | ||||
| @@ -651,6 +658,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) { | ||||
| void gpt_print_usage(int /*argc*/, char ** argv, const gpt_params & params) { | ||||
|     const llama_sampling_params & sparams = params.sparams; | ||||
|  | ||||
|     printf("\n"); | ||||
|     printf("usage: %s [options]\n", argv[0]); | ||||
|     printf("\n"); | ||||
|     printf("options:\n"); | ||||
| @@ -762,6 +770,9 @@ void gpt_print_usage(int /*argc*/, char ** argv, const gpt_params & params) { | ||||
|     printf("  -ld LOGDIR, --logdir LOGDIR\n"); | ||||
|     printf("                        path under which to save YAML logs (no logging if unset)\n"); | ||||
|     printf("\n"); | ||||
| #ifndef LOG_DISABLE_LOGS | ||||
|     log_print_usage(); | ||||
| #endif // LOG_DISABLE_LOGS | ||||
| } | ||||
|  | ||||
| std::string get_system_info(const gpt_params & params) { | ||||
|   | ||||
| @@ -110,6 +110,8 @@ struct gpt_params { | ||||
|     std::string image = ""; // path to an image file | ||||
| }; | ||||
|  | ||||
| bool gpt_params_parse_ex(int argc, char ** argv, gpt_params & params); | ||||
|  | ||||
| bool gpt_params_parse(int argc, char ** argv, gpt_params & params); | ||||
|  | ||||
| void gpt_print_usage(int argc, char ** argv, const gpt_params & params); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bandoti
					bandoti