auto & text = args.at("text");
return text.is_null() ? text : Value(strip(text.get<std::string>()));
}));
- globals.set("lower", simple_function("lower", { "text" }, [](const std::shared_ptr<Context> &, Value & args) {
- auto text = args.at("text");
- if (text.is_null()) return text;
- std::string res;
- auto str = text.get<std::string>();
- std::transform(str.begin(), str.end(), std::back_inserter(res), ::tolower);
- return Value(res);
- }));
+ auto char_transform_function = [](const std::string & name, const std::function<char(char)> & fn) {
+ return simple_function(name, { "text" }, [=](const std::shared_ptr<Context> &, Value & args) {
+ auto text = args.at("text");
+ if (text.is_null()) return text;
+ std::string res;
+ auto str = text.get<std::string>();
+ std::transform(str.begin(), str.end(), std::back_inserter(res), fn);
+ return Value(res);
+ });
+ };
+ globals.set("lower", char_transform_function("lower", ::tolower));
+ globals.set("upper", char_transform_function("upper", ::toupper));
globals.set("default", Value::callable([=](const std::shared_ptr<Context> &, ArgumentsValue & args) {
args.expectArgs("default", {2, 3}, {0, 1});
auto & value = args.args[0];
/* .bos_token= */ "",
/* .eos_token= */ "",
},
+ {
+ /* .name= */ "inclusionAI/Ling-lite",
+ /* .template_str */ "{% for message in messages %}{% set role = message['role'] | lower %}{% if role == 'user' %}{% set role = 'HUMAN' %}{% endif %}{% set role = role | upper %}{{ '<role>' + role + '</role>' + message['content'] }}{% endfor %}{% if add_generation_prompt %}{{ '<role>ASSISTANT</role>' }}{% endif %}",
+ /* .expected_output= */ "<role>SYSTEM</role>You are a helpful assistant<role>HUMAN</role>Hello<role>ASSISTANT</role>Hi there<role>HUMAN</role>Who are you<role>ASSISTANT</role> I am an assistant <role>HUMAN</role>Another question<role>ASSISTANT</role>",
+ /* .expected_output_jinja= */ "",
+ /* .bos_token= */ "",
+ /* .eos_token= */ "",
+ },
};
std::vector<char> formatted_chat(1024);
int32_t res;