mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-25 02:44:36 +00:00
main : support special tokens as reverse/anti prompt (#5847)
* Support special tokens as reverse/anti prompt. * Tokenize antiprompts only once. * main : minor --------- Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
This commit is contained in:
parent
67be2ce101
commit
5a51cc1bb4
@ -511,6 +511,14 @@ int main(int argc, char ** argv) {
|
|||||||
std::vector<llama_token> embd;
|
std::vector<llama_token> embd;
|
||||||
std::vector<llama_token> embd_guidance;
|
std::vector<llama_token> embd_guidance;
|
||||||
|
|
||||||
|
// tokenized antiprompts
|
||||||
|
std::vector<std::vector<llama_token>> antiprompt_ids;
|
||||||
|
|
||||||
|
antiprompt_ids.reserve(params.antiprompt.size());
|
||||||
|
for (const std::string & antiprompt : params.antiprompt) {
|
||||||
|
antiprompt_ids.emplace_back(::llama_tokenize(ctx, antiprompt, false, true));
|
||||||
|
}
|
||||||
|
|
||||||
struct llama_sampling_context * ctx_sampling = llama_sampling_init(sparams);
|
struct llama_sampling_context * ctx_sampling = llama_sampling_init(sparams);
|
||||||
|
|
||||||
while ((n_remain != 0 && !is_antiprompt) || params.interactive) {
|
while ((n_remain != 0 && !is_antiprompt) || params.interactive) {
|
||||||
@ -769,6 +777,18 @@ int main(int argc, char ** argv) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check for reverse prompt using special tokens
|
||||||
|
llama_token last_token = llama_sampling_last(ctx_sampling);
|
||||||
|
for (std::vector<llama_token> ids : antiprompt_ids) {
|
||||||
|
if (ids.size() == 1 && last_token == ids[0]) {
|
||||||
|
if (params.interactive) {
|
||||||
|
is_interacting = true;
|
||||||
|
}
|
||||||
|
is_antiprompt = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (is_antiprompt) {
|
if (is_antiprompt) {
|
||||||
LOG("found antiprompt: %s\n", last_output.c_str());
|
LOG("found antiprompt: %s\n", last_output.c_str());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user