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;
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();
// 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();