Skip to content

Commit

Permalink
server : fix prompt caching with system prompt (ggerganov#4914)
Browse files Browse the repository at this point in the history
  • Loading branch information
ggerganov authored Jan 13, 2024
1 parent f172de0 commit 0ea069b
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions examples/server/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1180,8 +1180,9 @@ struct llama_server_context
return slot.images.size() > 0;
}

void send_error(task_server& task, std::string error)
void send_error(task_server& task, const std::string &error)
{
LOG_TEE("task %i - error: %s\n", task.id, error.c_str());
std::unique_lock<std::mutex> lock(mutex_results);
task_result res;
res.id = task.id;
Expand Down Expand Up @@ -1570,12 +1571,22 @@ struct llama_server_context
LOG_TEE("slot unavailable\n");
// send error result
send_error(task, "slot unavailable");
return;
break;
}

if (task.data.contains("system_prompt"))
{
if (!all_slots_are_idle) {
send_error(task, "system prompt can only be updated when all slots are idle");
break;
}
process_system_prompt_data(task.data["system_prompt"]);

// reset cache_tokens for all slots
for (llama_client_slot &slot : slots)
{
slot.cache_tokens.clear();
}
}

slot->reset();
Expand Down Expand Up @@ -1652,8 +1663,7 @@ struct llama_server_context
// attend tasks
process_tasks();

// update the system prompt wait until all slots are idle state
if (system_need_update && all_slots_are_idle)
if (system_need_update)
{
LOG_TEE("updating system prompt\n");
update_system_prompt();
Expand Down

0 comments on commit 0ea069b

Please sign in to comment.