From: Nevin Date: Sat, 13 May 2023 08:41:43 +0000 (+0200) Subject: common : allow prompts to be loaded from file (#102) X-Git-Tag: upstream/0.0.1642~1488 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=65ed751fb090d18ec80e08f1aa52d2b212d6e77f;p=pkg%2Fggml%2Fsources%2Fggml common : allow prompts to be loaded from file (#102) * common: allow prompts to be loaded from file * common : extra help for -f --------- Co-authored-by: Georgi Gerganov --- diff --git a/examples/common.cpp b/examples/common.cpp index 08130119..75c443e2 100644 --- a/examples/common.cpp +++ b/examples/common.cpp @@ -38,6 +38,20 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) { } else if (arg == "-h" || arg == "--help") { gpt_print_usage(argc, argv, params); exit(0); + } else if (arg == "-f" || arg == "--file") { + if (++i > argc) { + fprintf(stderr, "Invalid file param"); + break; + } + std::ifstream file(argv[i]); + if (!file) { + fprintf(stderr, "error: failed to open file '%s'\n", argv[i]); + break; + } + std::copy(std::istreambuf_iterator(file), std::istreambuf_iterator(), back_inserter(params.prompt)); + if (params.prompt.back() == '\n') { + params.prompt.pop_back(); + } } else { fprintf(stderr, "error: unknown argument: %s\n", arg.c_str()); gpt_print_usage(argc, argv, params); @@ -57,6 +71,8 @@ void gpt_print_usage(int argc, char ** argv, const gpt_params & params) { fprintf(stderr, " -t N, --threads N number of threads to use during computation (default: %d)\n", params.n_threads); fprintf(stderr, " -p PROMPT, --prompt PROMPT\n"); fprintf(stderr, " prompt to start generation with (default: random)\n"); + fprintf(stderr, " -f FNAME, --file FNAME\n"); + fprintf(stderr, " load prompt from a file\n"); fprintf(stderr, " -n N, --n_predict N number of tokens to predict (default: %d)\n", params.n_predict); fprintf(stderr, " --top_k N top-k sampling (default: %d)\n", params.top_k); fprintf(stderr, " --top_p N top-p sampling (default: %.1f)\n", params.top_p);