Team Ai
Datasetpublic

echodict/llama.cpp

version https://git-lfs.github.com/spec/v1 oid sha256:cfc44b7ba25614df70e6b65e3341cae0310163bd32fd31a6b928a542df433faf size 30786

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes479downloads
json-partial.h40 linesDownload Raw Back to common
1#pragma once2 3// TODO: use json_fwd.hpp when possible4#include <nlohmann/json.hpp>5 6// Healing marker (empty if the JSON was fully parsed / wasn't healed).7struct common_healing_marker {8    // Raw marker.9    std::string marker;10 11    // Cutting the `common_json.json.dump()` string at the (only) occurrence of this marker should yield the original partial JSON string (modulo spaces / if it had the same dump format).12    std::string json_dump_marker;13};14 15// Represents a parsed JSON object, with its optional healing marker (a JSON dump fragment that can be used to find the position of healing in the JSON dump string)16struct common_json {17    nlohmann::ordered_json json;18 19    common_healing_marker healing_marker;20};21 22// Parse the JSON string, healing (closing) any partial JSON if `healing_marker` is not empty.23//24// Healing completes partial JSON strings by adding a (possibly modified) healing marker, then whatever is needed to close the JSON.25// This allows to parse the resulting healed JSON string, yet be able to cut it again if needed at the healing marker.26// (this is used when parsing JSON outputs from the models, then crafting partial JSONs for the partial tool calls in OAI format).27//28// For instance, parsing `{` with a healing marker `foo` will produce a healed JSON `{"foo":1}`, w/ json_dump_marker = `"foo"` (which can be used to break the JSON again).29bool common_json_parse(30    const std::string & input,31    const std::string & healing_marker,32    common_json & out);33 34// Parse the JSON string (see overload above), but advancing an iterator to the end of the input when the (potentially partial) parsing succeeds.35bool common_json_parse(36    std::string::const_iterator & it,37    const std::string::const_iterator & end,38    const std::string & healing_marker,39    common_json & out);40