#include "parsers.h" #include "log.h" void foreach_function(const json & tools, const std::function & fn) { for (const auto & tool : tools) { if (!tool.contains("type") || tool.at("type") != "function" || !tool.contains("function")) { LOG_INF("Skipping tool without function: %s", tool.dump(2).c_str()); continue; } fn(tool); } } void foreach_parameter(const json & function, const std::function & fn) { auto params = common_chat_tool_parameters(function); auto doc = std::make_shared(common_chat_schema_from_json(params)); const auto * object = dynamic_cast(doc->root.get()); if (!object) { return; } for (const auto & prop : object->properties) { fn(prop, doc); } }