Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
d10ef38
save
przepeck Mar 10, 2026
cd90b91
save
przepeck Mar 11, 2026
087d054
save
przepeck Mar 12, 2026
2f6d306
save
przepeck Mar 12, 2026
f6e900d
save
przepeck Mar 13, 2026
5cdcd2e
build fix
przepeck Mar 18, 2026
d835022
save
przepeck Mar 19, 2026
7af29b0
save
przepeck Mar 20, 2026
53cc07c
save
przepeck Mar 20, 2026
c2bda14
save
przepeck Mar 23, 2026
70b063b
streaming
przepeck Mar 24, 2026
1782e6a
fix and test
przepeck Mar 24, 2026
e7d8581
save
przepeck Mar 24, 2026
f69fed0
save
przepeck Mar 25, 2026
bb6366d
improvements
przepeck Mar 25, 2026
daf83e8
Style
przepeck Mar 25, 2026
d481a5a
Apply suggestions from code review
przepeck Mar 25, 2026
7076415
fixes
przepeck Mar 25, 2026
93806de
clang-format
przepeck Mar 25, 2026
3f32e01
cpplint
przepeck Mar 25, 2026
15d8c5f
adding model to script, enabling tests
przepeck Mar 25, 2026
39c5004
save
przepeck Mar 26, 2026
24096ff
save
przepeck Mar 26, 2026
2fe1f07
changed normalization to use rapidjson instead of manual string parsing
przepeck Mar 27, 2026
551bffc
clang-format
przepeck Mar 27, 2026
0488931
streaming fix and test
przepeck Mar 27, 2026
35d5f19
moving generic, static functions to utils
przepeck Mar 27, 2026
c88878b
clang-format, test fix
przepeck Mar 27, 2026
59b8576
whitelist
przepeck Mar 27, 2026
920d5f2
win build fix
przepeck Apr 7, 2026
a937371
style
przepeck Apr 7, 2026
8780419
build fix v2
przepeck Apr 7, 2026
4d80dd8
build fix v3
przepeck Apr 7, 2026
1a198af
changing bad logic with parsing objects and arrays in model's template
przepeck Apr 7, 2026
1ff19f9
clang-format
przepeck Apr 7, 2026
b2953a7
clang-format
przepeck Apr 8, 2026
4180c5d
handling chunk with tool call start tag with content
przepeck Apr 8, 2026
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
12 changes: 12 additions & 0 deletions prepare_llm_models.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ PHI4_MODEL="microsoft/Phi-4-mini-instruct"
MISTRAL_MODEL="mistralai/Mistral-7B-Instruct-v0.3"
GPT_OSS="openai/gpt-oss-20b"
DEVSTRAL_MODEL="unsloth/Devstral-Small-2507"
LFM2_MODEL="LiquidAI/LFM2-2.6B"

if [ "$(python3 -c 'import sys; print(sys.version_info[1])')" -le "8" ]; then echo "Prepare models with python > 3.8."; exit 1 ; fi

Expand Down Expand Up @@ -216,3 +217,14 @@ if [ ! -f "$1/$DEVSTRAL_MODEL/$TOKENIZER_FILE" ]; then
echo "[ERROR] Models file $1/$DEVSTRAL_MODEL/$TOKENIZER_FILE does not exist."
exit 1
fi

if [ -f "$1/$LFM2_MODEL/$TOKENIZER_FILE" ]; then
echo "Models file $1/$LFM2_MODEL/$TOKENIZER_FILE exists. Skipping downloading models."
else
mkdir -p $1/$LFM2_MODEL
convert_tokenizer $LFM2_MODEL --with_detokenizer -o $1/$LFM2_MODEL
fi
if [ ! -f "$1/$LFM2_MODEL/$TOKENIZER_FILE" ]; then
echo "[ERROR] Models file $1/$LFM2_MODEL/$TOKENIZER_FILE does not exist."
exit 1
fi
1 change: 1 addition & 0 deletions spelling-whitelist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ release_files/thirdparty-licenses/libgt2.LICENSE.txt:1040: aheared ==> adhered
release_files/thirdparty-licenses/libgt2.LICENSE.txt:1065: rouines ==> routines
release_files/thirdparty-licenses/libgt2.LICENSE.txt:1083: publically ==> publicly
src/test/llm/output_parsers/qwen3coder_output_parser_test.cpp
src/test/llm/output_parsers/lfm2_output_parser_test.cpp
24 changes: 24 additions & 0 deletions src/llm/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,12 @@ ovms_cc_library(
name = "io_processing_utils",
hdrs = ["io_processing/utils.hpp"],
srcs = ["io_processing/utils.cpp"],
deps = [
"@com_github_tencent_rapidjson//:rapidjson",
"//src/port:rapidjson_stringbuffer",
"//src/port:rapidjson_writer",
"//src/port:rapidjson_document",
],
visibility = ["//visibility:public"],
)

Expand Down Expand Up @@ -131,6 +137,23 @@ ovms_cc_library(
],
visibility = ["//visibility:public"],
)

ovms_cc_library(
name = "io_processing_lfm2_tool_parser",
hdrs = ["io_processing/lfm2/tool_parser.hpp"],
srcs = ["io_processing/lfm2/tool_parser.cpp"],
deps = [
"@com_github_tencent_rapidjson//:rapidjson",
"//src/port:rapidjson_document",
"//src:libovmslogging",
"//src:libovmsstring_utils",
":io_processing_utils",
":io_processing_base_output_parser",
"//third_party:genai",
],
visibility = ["//visibility:public"],
)

ovms_cc_library( # TODO split further so we don't have to recompile everything when changing one parser ...
name = "output_parsers",
hdrs = [
Expand Down Expand Up @@ -166,6 +189,7 @@ ovms_cc_library( # TODO split further so we don't have to recompile everything w
":partial_json_builder",
":io_processing_base_output_parser",
":io_processing_qwen3coder_tool_parser",
":io_processing_lfm2_tool_parser",
":io_processing_utils",
":apis_tool_schema_wrapper",
],
Expand Down
Loading