Update llava-cli.cpp
This commit is contained in:
parent
51462f1f23
commit
0dbd295e39
1 changed files with 25 additions and 35 deletions
|
@ -148,45 +148,35 @@ static void process_prompt(struct llava_context * ctx_llava, struct llava_image_
|
||||||
const int max_tgt_len = params->n_predict < 0 ? 256 : params->n_predict;
|
const int max_tgt_len = params->n_predict < 0 ? 256 : params->n_predict;
|
||||||
const bool add_bos = llama_should_add_bos_token(llama_get_model(ctx_llava->ctx_llama));
|
const bool add_bos = llama_should_add_bos_token(llama_get_model(ctx_llava->ctx_llama));
|
||||||
|
|
||||||
#if 0
|
std::string system_prompt, user_prompt;
|
||||||
// llava chat format is "<system_prompt>\nUSER:<image_embeddings>\n<textual_prompt>\nASSISTANT:"
|
size_t image_pos = prompt.find("<image>");
|
||||||
eval_string(ctx_llava->ctx_llama, "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions.\nUSER:", params->n_batch, &n_past, add_bos);
|
if (image_pos != std::string::npos) {
|
||||||
llava_eval_image_embed(ctx_llava->ctx_llama, image_embed, params->n_batch, &n_past);
|
// new templating mode: Provide the full prompt including system message and use <image> as a placeholder for the image
|
||||||
eval_string(ctx_llava->ctx_llama, (prompt + "\nASSISTANT:").c_str(), params->n_batch, &n_past, false);
|
|
||||||
#else
|
|
||||||
std::string system_prompt, user_prompt;
|
|
||||||
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);
|
system_prompt = prompt.substr(0, image_pos);
|
||||||
user_prompt = prompt.substr(image_pos + std::string("<image>").length());
|
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
|
// We replace \n with actual newlines in user_prompt, just in case -e was not used in templating string
|
||||||
size_t pos = 0;
|
size_t pos = 0;
|
||||||
while ((pos = user_prompt.find("\\n", pos)) != std::string::npos) {
|
while ((pos = user_prompt.find("\\n", pos)) != std::string::npos) {
|
||||||
user_prompt.replace(pos, 2, "\n");
|
user_prompt.replace(pos, 2, "\n");
|
||||||
pos += 1; // Advance past the replaced newline
|
pos += 1; // Advance past the replaced newline
|
||||||
}
|
}
|
||||||
while ((pos = system_prompt.find("\\n", pos)) != std::string::npos) {
|
while ((pos = system_prompt.find("\\n", pos)) != std::string::npos) {
|
||||||
system_prompt.replace(pos, 2, "\n");
|
system_prompt.replace(pos, 2, "\n");
|
||||||
pos += 1; // Advance past the replaced newline
|
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 {
|
|
||||||
// llava-1.5 native mode
|
|
||||||
system_prompt = "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions.\nUSER:";
|
|
||||||
user_prompt = prompt + "\nASSISTANT:";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("system_prompt: %s\n", system_prompt.c_str());
|
||||||
|
printf("user_prompt: %s\n", user_prompt.c_str());
|
||||||
|
} else {
|
||||||
|
// llava-1.5 native mode
|
||||||
|
system_prompt = "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions.\nUSER:";
|
||||||
|
user_prompt = prompt + "\nASSISTANT:";
|
||||||
|
}
|
||||||
|
|
||||||
|
eval_string(ctx_llava->ctx_llama, system_prompt.c_str(), params->n_batch, &n_past, add_bos);
|
||||||
eval_string(ctx_llava->ctx_llama, system_prompt.c_str(), params->n_batch, &n_past, add_bos);
|
llava_eval_image_embed(ctx_llava->ctx_llama, image_embed, params->n_batch, &n_past);
|
||||||
llava_eval_image_embed(ctx_llava->ctx_llama, image_embed, params->n_batch, &n_past);
|
eval_string(ctx_llava->ctx_llama, user_prompt.c_str(), params->n_batch, &n_past, false);
|
||||||
eval_string(ctx_llava->ctx_llama, user_prompt.c_str(), params->n_batch, &n_past, false);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// generate the response
|
// generate the response
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue