static bool eval_string(struct llama_context * ctx_llama, const char* str, int n_batch, int * n_past, bool add_bos){
std::string str2 = str;
- std::vector<llama_token> embd_inp = ::llama_tokenize(ctx_llama, str2, add_bos);
+ std::vector<llama_token> embd_inp = ::llama_tokenize(ctx_llama, str2, add_bos, true);
eval_tokens(ctx_llama, embd_inp, n_batch, n_past);
return true;
}
size_t image_pos = prompt.find("<image>");
if (image_pos != std::string::npos) {
// new templating mode: Provide the full prompt including system message and use <image> as a placeholder for the image
-
system_prompt = prompt.substr(0, image_pos);
user_prompt = prompt.substr(image_pos + std::string("<image>").length());
- // We replace \n with actual newlines in user_prompt, just in case -e was not used in templating string
- size_t pos = 0;
- while ((pos = user_prompt.find("\\n", pos)) != std::string::npos) {
- user_prompt.replace(pos, 2, "\n");
- pos += 1; // Advance past the replaced newline
- }
- while ((pos = system_prompt.find("\\n", pos)) != std::string::npos) {
- system_prompt.replace(pos, 2, "\n");
- pos += 1; // Advance past the replaced newline
- }
-
printf("system_prompt: %s\n", system_prompt.c_str());
printf("user_prompt: %s\n", user_prompt.c_str());
} else {