@@ -409,17 +409,18 @@ std::string OpenAIChatCompletionsHandler::serializeUnaryResponse(ov::genai::Enco
409409
410410 // choices: array of size N, where N is related to n request parameter
411411 jsonResponse.StartArray (" choices" );
412- int index = 0 ;
413- for (int i = 0 ; i < results.tokens .size (); i++) {
412+ for (size_t i = 0 ; i < results.tokens .size (); ++i) {
414413 const std::vector<int64_t >& tokens = results.tokens [i];
415414 SPDLOG_LOGGER_TRACE (llm_calculator_logger, " Generated tokens: {}" , tokens);
416415 ParsedOutput parsedOutput = parseOutputIfNeeded (tokens);
417416 jsonResponse.StartObject ();
418417 // finish_reason: "stop" in regular scenario, "tool_calls" if output contains tool calls
419- auto finishReason = mapFinishReason (ov::genai::GenerationFinishReason::STOP, !parsedOutput.toolCalls .empty ());
418+ const ov::genai::GenerationFinishReason finishReasonRaw =
419+ (!results.finish_reasons .empty ()) ? results.finish_reasons [0 ] : ov::genai::GenerationFinishReason::STOP;
420+ auto finishReason = mapFinishReason (finishReasonRaw, !parsedOutput.toolCalls .empty ());
420421 jsonResponse.FinishReason (finishReason.value_or (" unknown" ));
421422 // index: integer; Choice index, only n=1 supported anyway
422- jsonResponse.Index (index++ );
423+ jsonResponse.Index (static_cast < int >(i) );
423424
424425 if (endpoint == Endpoint::CHAT_COMPLETIONS) {
425426 jsonResponse.MessageObject (parsedOutput);
@@ -481,7 +482,9 @@ std::string OpenAIChatCompletionsHandler::serializeUnaryResponse(ov::genai::VLMD
481482 ParsedOutput parsedOutput = parseOutputIfNeeded (generatedTokens);
482483 jsonResponse.StartObject ();
483484 // finish_reason: "stop" in regular scenario, "tool_calls" if output contains tool calls
484- auto finishReason = mapFinishReason (ov::genai::GenerationFinishReason::STOP, !parsedOutput.toolCalls .empty ());
485+ const ov::genai::GenerationFinishReason finishReasonRaw =
486+ (!results.finish_reasons .empty ()) ? results.finish_reasons [0 ] : ov::genai::GenerationFinishReason::STOP;
487+ auto finishReason = mapFinishReason (finishReasonRaw, !parsedOutput.toolCalls .empty ());
485488 jsonResponse.FinishReason (finishReason.value_or (" unknown" ));
486489 // index: integer; Choice index, only n=1 supported anyway
487490 jsonResponse.Index (index++);
0 commit comments