Skip to content

Commit ee3a5a1

Browse files
authored
sync: minja (glm 4.6 & minmax m2 templates) (#16949)
* sync: minja * Sync ochafik/minja#7 (MinMax M2)
1 parent 7e99416 commit ee3a5a1

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

vendor/minja/chat-template.hpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,18 +192,25 @@ class chat_template {
192192
};
193193
};
194194
const json dummy_args_obj {{"argument_needle", "print('Hello, World!')"}};
195+
const auto contains_arg_needle = [&](const std::string & out_str) {
196+
return contains(out_str, "<parameter=argument_needle>")
197+
|| contains(out_str, "\"argument_needle\":")
198+
|| contains(out_str, "'argument_needle':")
199+
|| contains(out_str, ">argument_needle<")
200+
|| contains(out_str, "<parameter name=\"argument_needle\">");
201+
};
195202

196203
// Note: the arguments are rendered in both cases, but may be double-escaped, which we don't want.
197204
out = try_raw_render(json::array({
198205
dummy_user_msg,
199206
make_tool_calls_msg(json::array({make_tool_call("ipython", dummy_args_obj.dump())})),
200207
}), {}, false);
201-
auto tool_call_renders_str_arguments = contains(out, "<parameter=argument_needle>") || contains(out, "\"argument_needle\":") || contains(out, "'argument_needle':");
208+
auto tool_call_renders_str_arguments = contains_arg_needle(out);
202209
out = try_raw_render(json::array({
203210
dummy_user_msg,
204211
make_tool_calls_msg(json::array({make_tool_call("ipython", dummy_args_obj)})),
205212
}), {}, false);
206-
auto tool_call_renders_obj_arguments = contains(out, "<parameter=argument_needle>") || contains(out, "\"argument_needle\":") || contains(out, "'argument_needle':");
213+
auto tool_call_renders_obj_arguments = contains_arg_needle(out);
207214

208215
caps_.supports_tool_calls = tool_call_renders_str_arguments || tool_call_renders_obj_arguments;
209216
caps_.requires_object_arguments = !tool_call_renders_str_arguments && tool_call_renders_obj_arguments;

vendor/minja/minja.hpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2205,7 +2205,7 @@ class Parser {
22052205

22062206
auto value = parseValue();
22072207

2208-
while (it != end && consumeSpaces() && peekSymbols({ "[", "." })) {
2208+
while (it != end && consumeSpaces() && peekSymbols({ "[", ".", "(" })) {
22092209
if (!consumeToken("[").empty()) {
22102210
std::shared_ptr<Expression> index;
22112211
auto slice_loc = get_location();
@@ -2250,15 +2250,13 @@ class Parser {
22502250
auto key = std::make_shared<LiteralExpr>(identifier->location, Value(identifier->get_name()));
22512251
value = std::make_shared<SubscriptExpr>(identifier->location, std::move(value), std::move(key));
22522252
}
2253+
} else if (peekSymbols({ "(" })) {
2254+
auto callParams = parseCallArgs();
2255+
value = std::make_shared<CallExpr>(get_location(), std::move(value), std::move(callParams));
22532256
}
22542257
consumeSpaces();
22552258
}
22562259

2257-
if (peekSymbols({ "(" })) {
2258-
auto location = get_location();
2259-
auto callParams = parseCallArgs();
2260-
value = std::make_shared<CallExpr>(location, std::move(value), std::move(callParams));
2261-
}
22622260
return value;
22632261
}
22642262

@@ -2738,7 +2736,7 @@ inline std::shared_ptr<Context> Context::builtins() {
27382736
globals.set("raise_exception", simple_function("raise_exception", { "message" }, [](const std::shared_ptr<Context> &, Value & args) -> Value {
27392737
throw std::runtime_error(args.at("message").get<std::string>());
27402738
}));
2741-
globals.set("tojson", simple_function("tojson", { "value", "indent" }, [](const std::shared_ptr<Context> &, Value & args) {
2739+
globals.set("tojson", simple_function("tojson", { "value", "indent", "ensure_ascii" }, [](const std::shared_ptr<Context> &, Value & args) {
27422740
return Value(args.at("value").dump(args.get<int64_t>("indent", -1), /* to_json= */ true));
27432741
}));
27442742
globals.set("items", simple_function("items", { "object" }, [](const std::shared_ptr<Context> &, Value & args) {

0 commit comments

Comments
 (0)