Skip to content

Commit c0e18f5

Browse files
BenjaminBruenaustruct
authored andcommitted
server: fix SSE and OpenAI compatibility for error messages when streaming (ggml-org#16109)
* server: fix SSE and OpenAI compatibility for error messages when streaming * server: remove obsolete event parameter and use required data fieldname instead
1 parent 40fdcd8 commit c0e18f5

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

tools/server/server.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4679,17 +4679,17 @@ int main(int argc, char ** argv) {
46794679
json res_json = result->to_json();
46804680
if (res_json.is_array()) {
46814681
for (const auto & res : res_json) {
4682-
if (!server_sent_event(sink, "data", res)) {
4682+
if (!server_sent_event(sink, res)) {
46834683
// sending failed (HTTP connection closed), cancel the generation
46844684
return false;
46854685
}
46864686
}
46874687
return true;
46884688
} else {
4689-
return server_sent_event(sink, "data", res_json);
4689+
return server_sent_event(sink, res_json);
46904690
}
46914691
}, [&](const json & error_data) {
4692-
server_sent_event(sink, "error", error_data);
4692+
server_sent_event(sink, json{{"error", error_data}});
46934693
}, [&sink]() {
46944694
// note: do not use req.is_connection_closed here because req is already destroyed
46954695
return !sink.is_writable();

tools/server/utils.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -459,9 +459,9 @@ static std::string tokens_to_output_formatted_string(const llama_context * ctx,
459459
return out;
460460
}
461461

462-
static bool server_sent_event(httplib::DataSink & sink, const char * event, const json & data) {
462+
static bool server_sent_event(httplib::DataSink & sink, const json & data) {
463463
const std::string str =
464-
std::string(event) + ": " +
464+
"data: " +
465465
data.dump(-1, ' ', false, json::error_handler_t::replace) +
466466
"\n\n"; // required by RFC 8895 - A message is terminated by a blank line (two line terminators in a row).
467467

0 commit comments

Comments
 (0)