]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
`server`: fix deadly typo in response_format.json_schema.schema handling (#12168)
authorOlivier Chafik <redacted>
Tue, 4 Mar 2025 06:24:07 +0000 (06:24 +0000)
committerGitHub <redacted>
Tue, 4 Mar 2025 06:24:07 +0000 (08:24 +0200)
examples/server/tests/unit/test_chat_completion.py
examples/server/utils.hpp

index af1dcb5b96554e2c650e2a024eebe708bae96f2f..491cb3a5df636632ae671efec44912b7249af751 100644 (file)
@@ -144,6 +144,7 @@ def test_apply_chat_template():
 @pytest.mark.parametrize("response_format,n_predicted,re_content", [
     ({"type": "json_object", "schema": {"const": "42"}}, 6, "\"42\""),
     ({"type": "json_object", "schema": {"items": [{"type": "integer"}]}}, 10, "[ -3000 ]"),
+    ({"type": "json_schema", "json_schema": {"schema": {"const": "foooooo"}}}, 10, "\"foooooo\""),
     ({"type": "json_object"}, 10, "(\\{|John)+"),
     ({"type": "sound"}, 0, None),
     # invalid response format (expected to fail)
index 6830c2e1a6fd0306856010ae144e9fa839eef001..144d914c298efe2d8afcababbc62b8e971ec3b55 100644 (file)
@@ -590,8 +590,8 @@ static json oaicompat_completion_params_parse(
         if (response_type == "json_object") {
             json_schema = json_value(response_format, "schema", json::object());
         } else if (response_type == "json_schema") {
-            json json_schema = json_value(response_format, "json_schema", json::object());
-            json_schema = json_value(json_schema, "schema", json::object());
+            auto schema_wrapper = json_value(response_format, "json_schema", json::object());
+            json_schema = json_value(schema_wrapper, "schema", json::object());
         } else if (!response_type.empty() && response_type != "text") {
             throw std::runtime_error("response_format type must be one of \"text\" or \"json_object\", but got: " + response_type);
         }