CoolFace
Modelpublic

Felipe97/llama-cpp-compiled

sourceHugging Faceupdated 3d agoView on Hugging Face
0likes1.1kdownloads
server-schema.h105 linesDownload Raw Back to server
1#pragma once2 3#include "server-common.h"4#include "server-task.h"5 6#include "sampling.h"7#include "speculative.h"8 9#include <climits>10#include <functional>11#include <limits>12#include <memory>13#include <string>14#include <vector>15 16namespace server_schema {17 18struct field_eval_context {19    task_params & params;20    const llama_vocab * vocab = nullptr;21    const std::vector<llama_logit_bias> * logit_bias_eog = nullptr;22    field_eval_context(task_params & params) : params(params) {}23};24 25using field_handler = std::function<void(field_eval_context &, const json &)>;26 27struct field {28    std::vector<const char *> name;29    const char * desc = "";30    field_handler custom_handler;31    field() = default;32    field(const char * n) : name({n}) {}33    virtual ~field() = default;34    field * set_desc(const char * s) {35        desc = s;36        return this;37    }38    // if 'name' is present, use it, otherwise look for aliases following the order they were added39    field * add_alias(const char * n) {40        name.push_back(n);41        return this;42    }43    field * set_handler(field_handler h) { this->custom_handler = h; return this; }44    virtual void eval(field_eval_context & ctx, const json & data) = 0;45};46 47template <typename T = int32_t>48struct field_num : public field {49    T & val;50    T min = std::numeric_limits<T>::lowest();51    T max = std::numeric_limits<T>::max();52    bool is_hard_limit = false; // if true, throw error if the value is invalid53    field_num(const char * n, T & val) : field(n), val(val) {}54    // limits are inclusive, min <= value <= max55    field_num * set_limits(T min, T max) {56        this->min = min;57        this->max = max;58        return this;59    }60    field_num * set_hard_limits(T min, T max) {61        set_limits(min, max);62        is_hard_limit = true;63        return this;64    }65    virtual void eval(field_eval_context & ctx, const json & data) override;66};67 68struct field_str : public field {69    field_str(const char * n) : field(n) {}70    virtual void eval(field_eval_context & ctx, const json & data) override;71};72 73struct field_bool : public field {74    bool & val;75    field_bool(const char * n, bool & val) : field(n), val(val) {}76    virtual void eval(field_eval_context & ctx, const json & data) override;77};78 79struct field_json : public field {80    field_json(const char * n) : field(n) {}81    virtual void eval(field_eval_context & ctx, const json & data) override;82};83 84struct field_nested : public field {85    std::vector<std::unique_ptr<field>> subfields;86    field_nested(const char * n) : field(n) {}87    field_nested * add_subfield(field * f) {88        subfields.emplace_back(std::unique_ptr<field>(f));89        return this;90    }91    virtual void eval(field_eval_context & ctx, const json & data) override;92};93 94std::vector<std::unique_ptr<field>> make_llama_cmpl_schema(95                    const common_params & params_base,96                    task_params & params);97 98task_params eval_llama_cmpl_schema(99                    const llama_vocab * vocab,100                    const common_params & params_base,101                    const std::vector<llama_logit_bias> & logit_bias_eog,102                    const json & data);103 104} // namespace server_schema105