Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions demos/common/export_models/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ diffusers # for image generation
einops
nncf
numpy
openvino-tokenizers==2026.2.0.dev20260424
openvino==2026.2.0.dev20260424
openvino-tokenizers==2026.2.0.dev20260428
openvino==2026.2.0.dev20260428
pillow
sentence_transformers==5.3.0
sentencepiece # Required by: transformers`
Expand Down
4 changes: 2 additions & 2 deletions src/llm/apis/openai_completions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ std::string OpenAIChatCompletionsHandler::serializeUnaryResponse(ov::genai::Enco
ParsedOutput parsedOutput = parseOutputIfNeeded(tokens);
jsonResponse.StartObject();
// finish_reason: "stop" in regular scenario, "tool_calls" if output contains tool calls
auto finishReason = mapFinishReason(ov::genai::GenerationFinishReason::STOP, !parsedOutput.toolCalls.empty());
auto finishReason = mapFinishReason(results.finish_reasons[index], !parsedOutput.toolCalls.empty());
jsonResponse.FinishReason(finishReason.value_or("unknown"));
// index: integer; Choice index, only n=1 supported anyway
jsonResponse.Index(index++);
Expand Down Expand Up @@ -478,7 +478,7 @@ std::string OpenAIChatCompletionsHandler::serializeUnaryResponse(ov::genai::VLMD
ParsedOutput parsedOutput = parseOutputIfNeeded(generatedTokens);
jsonResponse.StartObject();
// finish_reason: "stop" in regular scenario, "tool_calls" if output contains tool calls
auto finishReason = mapFinishReason(ov::genai::GenerationFinishReason::STOP, !parsedOutput.toolCalls.empty());
auto finishReason = mapFinishReason(results.finish_reasons[index], !parsedOutput.toolCalls.empty());
jsonResponse.FinishReason(finishReason.value_or("unknown"));
// index: integer; Choice index, only n=1 supported anyway
jsonResponse.Index(index++);
Expand Down
18 changes: 16 additions & 2 deletions src/llm/apis/openai_responses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -649,10 +649,17 @@ std::string OpenAIResponsesHandler::serializeUnaryResponse(ov::genai::EncodedRes
usage.promptTokens = results.perf_metrics.get_num_input_tokens();
usage.completionTokens = results.perf_metrics.get_num_generated_tokens();
std::vector<ParsedOutput> parsedOutputs;
ov::genai::GenerationFinishReason responsesFinishReason = ov::genai::GenerationFinishReason::STOP;
for (const auto& tokens : results.tokens) {
parsedOutputs.push_back(parseOutputIfNeeded(tokens));
}
return serializeUnaryResponseImpl(parsedOutputs);
for (const auto& finishReason : results.finish_reasons) {
if (finishReason == ov::genai::GenerationFinishReason::LENGTH) {
responsesFinishReason = ov::genai::GenerationFinishReason::LENGTH;
break;
}
}
return serializeUnaryResponseImpl(parsedOutputs, responsesFinishReason);
}

std::string OpenAIResponsesHandler::serializeUnaryResponse(ov::genai::VLMDecodedResults& results) {
Expand All @@ -661,6 +668,7 @@ std::string OpenAIResponsesHandler::serializeUnaryResponse(ov::genai::VLMDecoded
usage.completionTokens = results.perf_metrics.get_num_generated_tokens();
// Usage is already correctly set from perf_metrics above — no need for updateUsage.
std::vector<ParsedOutput> parsedOutputs;
ov::genai::GenerationFinishReason responsesFinishReason = ov::genai::GenerationFinishReason::STOP;
for (const std::string& text : results.texts) {
if (outputParser != nullptr) {
// Same workaround as in chat completions
Expand All @@ -673,7 +681,13 @@ std::string OpenAIResponsesHandler::serializeUnaryResponse(ov::genai::VLMDecoded
parsedOutputs.push_back(std::move(output));
}
}
return serializeUnaryResponseImpl(parsedOutputs);
for (const auto& finishReason : results.finish_reasons) {
if (finishReason == ov::genai::GenerationFinishReason::LENGTH) {
responsesFinishReason = ov::genai::GenerationFinishReason::LENGTH;
break;
}
}
return serializeUnaryResponseImpl(parsedOutputs, responsesFinishReason);
}

// --- Streaming event building blocks ---
Expand Down
6 changes: 5 additions & 1 deletion src/llm/language_model/legacy/servable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,11 @@ absl::Status LegacyServable::preparePartialResponse(std::shared_ptr<GenAiServabl
if (!executionContext->lastStreamerCallbackOutput.empty()) {
lastTextChunk = lastTextChunk + executionContext->lastStreamerCallbackOutput;
}
std::string serializedChunk = executionContext->apiHandler->serializeStreamingChunk(lastTextChunk, ov::genai::GenerationFinishReason::STOP);
ov::genai::GenerationFinishReason finishReason = ov::genai::GenerationFinishReason::STOP;
if (!legacyExecutionContext->results.finish_reasons.empty()) {
finishReason = legacyExecutionContext->results.finish_reasons[0];
}
std::string serializedChunk = executionContext->apiHandler->serializeStreamingChunk(lastTextChunk, finishReason);
if (!serializedChunk.empty()) {
executionContext->response = wrapTextInServerSideEventMessage(serializedChunk);
}
Expand Down
2 changes: 1 addition & 1 deletion src/test/llm/llmnode_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2606,7 +2606,7 @@ INSTANTIATE_TEST_SUITE_P(
::testing::Values(
// params: model name, generate expected output, check logprobs, check finish reason, test speculative decoding, supports empty handshake msg
TestParameters{"lm_cb_regular", true, true, true, false, true},
TestParameters{"lm_legacy_regular", false, false, false, false, false},
TestParameters{"lm_legacy_regular", false, false, true, false, false},
TestParameters{"vlm_cb_regular", false, true, true, false, true},
TestParameters{"vlm_legacy_regular", false, false, false, false, false}));

Expand Down
12 changes: 6 additions & 6 deletions versions.mk
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@
# Any variable can be overridden by the environment or command-line.

# Source repository git commits / branches (used for source builds)
OV_SOURCE_BRANCH ?= de34884656267eda3fec3612b36f874f942c266b
OV_SOURCE_BRANCH ?= 51ac1b94f89e99aafebc0a122a5284852678505f
OV_TOKENIZERS_BRANCH ?= 774dd761d5e5fefce828d08a13f11859f60ac10a
OV_GENAI_BRANCH ?= 19cd56fa66f1b4afefe706d33d5df4fcc6d1efba
OV_GENAI_BRANCH ?= 4a72e9977290eb9205bbe09b4d4e6c2c25cdcfb9

# Source repository organizations
OV_SOURCE_ORG ?= openvinotoolkit
OV_GENAI_ORG ?= openvinotoolkit
OV_TOKENIZERS_ORG ?= openvinotoolkit

# Binary package URLs for each supported platform.
DLDT_PACKAGE_URL_UBUNTU24 ?= https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/nightly/2026.2.0.0.dev20260424/openvino_genai_ubuntu24_2026.2.0.0.dev20260424_x86_64.tar.gz
DLDT_PACKAGE_URL_UBUNTU22 ?= https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/nightly/2026.2.0.0.dev20260424/openvino_genai_ubuntu22_2026.2.0.0.dev20260424_x86_64.tar.gz
DLDT_PACKAGE_URL_RHEL ?= https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/nightly/2026.2.0.0.dev20260424/openvino_genai_rhel8_2026.2.0.0.dev20260424_x86_64.tar.gz
GENAI_PACKAGE_URL_WINDOWS ?= https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/nightly/2026.2.0.0.dev20260424/openvino_genai_windows_2026.2.0.0.dev20260424_x86_64.zip
DLDT_PACKAGE_URL_UBUNTU24 ?= https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/nightly/2026.2.0.0.dev20260428/openvino_genai_ubuntu24_2026.2.0.0.dev20260428_x86_64.tar.gz
DLDT_PACKAGE_URL_UBUNTU22 ?= https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/nightly/2026.2.0.0.dev20260428/openvino_genai_ubuntu22_2026.2.0.0.dev20260428_x86_64.tar.gz
DLDT_PACKAGE_URL_RHEL ?= https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/nightly/2026.2.0.0.dev20260428/openvino_genai_rhel8_2026.2.0.0.dev20260428_x86_64.tar.gz
GENAI_PACKAGE_URL_WINDOWS ?= https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/nightly/2026.2.0.0.dev20260428/openvino_genai_windows_2026.2.0.0.dev20260428_x86_64.zip