From d4b9ec098b8cb84d434e7eeb6f4cb4df0539cde9 Mon Sep 17 00:00:00 2001 From: Xuan Son Nguyen Date: Tue, 17 Dec 2024 21:50:36 +0100 Subject: [PATCH] handle empty input case --- examples/server/server.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/examples/server/server.cpp b/examples/server/server.cpp index e6fcf49b5..71566b94e 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -3664,12 +3664,20 @@ int main(int argc, char ** argv) { return; } + std::vector tokenized_prompts = tokenize_input_prompts(ctx_server.ctx, prompt, true, true); + for (const auto & tokens : tokenized_prompts) { + // this check is necessary for models that do not add BOS token to the input + if (tokens.empty()) { + res_error(res, format_error_response("Input content cannot be empty", ERROR_TYPE_INVALID_REQUEST)); + return; + } + } + // create and queue the task json responses = json::array(); bool error = false; { std::vector tasks; - std::vector tokenized_prompts = tokenize_input_prompts(ctx_server.ctx, prompt, /* add_special */ false, true); for (size_t i = 0; i < tokenized_prompts.size(); i++) { server_task task = server_task(SERVER_TASK_TYPE_EMBEDDING); task.id = ctx_server.queue_tasks.get_new_id();