| 874 | } |
| 875 | |
| 876 | bool common_params_parse(int argc, char ** argv, common_params & params, llama_example ex, void(*print_usage)(int, char **)) { |
| 877 | auto ctx_arg = common_params_parser_init(params, ex, print_usage); |
| 878 | const common_params params_org = ctx_arg.params; // the example can modify the default params |
| 879 | |
| 880 | try { |
| 881 | if (!common_params_parse_ex(argc, argv, ctx_arg)) { |
| 882 | ctx_arg.params = params_org; |
| 883 | return false; |
| 884 | } |
| 885 | if (ctx_arg.params.usage) { |
| 886 | common_params_print_usage(ctx_arg); |
| 887 | if (ctx_arg.print_usage) { |
| 888 | ctx_arg.print_usage(argc, argv); |
| 889 | } |
| 890 | exit(0); |
| 891 | } |
| 892 | if (ctx_arg.params.completion) { |
| 893 | common_params_print_completion(ctx_arg); |
| 894 | exit(0); |
| 895 | } |
| 896 | params.lr.init(); |
| 897 | } catch (const std::invalid_argument & ex) { |
| 898 | fprintf(stderr, "%s\n", ex.what()); |
| 899 | ctx_arg.params = params_org; |
| 900 | return false; |
| 901 | } catch (std::exception & ex) { |
| 902 | fprintf(stderr, "%s\n", ex.what()); |
| 903 | exit(1); // for other exceptions, we exit with status code 1 |
| 904 | } |
| 905 | |
| 906 | return true; |
| 907 | } |
| 908 | |
| 909 | static std::string list_builtin_chat_templates() { |
| 910 | std::vector<const char *> supported_tmpl; |