char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
a6aa6f545
char/aliceai-t5-moe
1#pragma once 2 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 { 19task_params & params ; 20const llama_vocab * vocab = nullptr; 21const std ::vector < llama_logit_bias > * logit_bias_eog = nullptr; 22field_eval_context (task_params & params ) :params (params ) {} 23}; 24 25using field_handler = std ::function < void (field_eval_context & , const json & ) > ; 26 27struct field { 28std :: vector < const char *> name ; 29const char * desc = ""; 30field_handler custom_handler ; 31field() = default ; 32field ( const char * n) : name ({n}) {} 33virtual ~field() = default ; 34field * set_desc ( const char * s) { 35desc = s ; 36return this ; 37} 38// if 'name' is present, use it, otherwise look for aliases following the order they were added 39field * add_alias ( const char * n) { 40name. push_back (n); 41return this; 42} 43field * set_handler ( field_handler h) { this -> custom_handler = h; return this; } 44virtual void eval (field_eval_context & ctx, const json & data) = 0 ; 45}; 46 47template < typename T = int32_t > 48struct field_num : public field { 49T & val; 50T min = std::numeric_limits < T > :: lowest (); 51T max = std::numeric_limits < T > :: max (); 52bool is_hard_limit = false; // if true, throw error if the value is invalid 53field_num( const char * n, T & val) : field ( n ), val ( val ) {} 54// limits are inclusive, min <= value <= max 55field_num * set_limits ( T min, T max) { 56this -> min = min; 57this -> max = max; 58return this; 59} 60field_num * set_hard_limits ( T min, T max) { 61set_limits (min, max); 62is_hard_limit = true; 63return this; 64} 65virtual void eval (field_eval_context & ctx, const json & data) override; 66}; 67 68struct field_str : public field { 69field_str( const char * n) : field ( n ) {} 70virtual void eval (field_eval_context & ctx, const json & data) override; 71}; 72 73struct field_bool : public field { 74bool & val; 75field_bool( const char * n, bool & val) : field ( n ), val ( val ) {} 76virtual void eval ( field_eval_context & ctx, const json & data) override; 77}; 78 79struct field_json : public field { 80field_json( const char * n) : field ( n ) {} 81virtual void eval (field_eval_context & ctx, const json & data) override; 82}; 83 84struct field_nested : public field { 85std ::vector < std::unique_ptr < field>> subfields; 86field_nested( const char * n) : field ( n ) {} 87field_nested * add_subfield ( field * f) { 88subfields. emplace_back (std::unique_ptr < field > (f)); 89return this; 90} 91virtual void eval (field_eval_context & ctx, const json & data) override; 92}; 93 94std ::vector < std::unique_ptr < field>> make_llama_cmpl_schema ( 95const common_params & params_base, 96task_params & params); 97 98task_params eval_llama_cmpl_schema ( 99const llama_vocab * vocab, 100const common_params & params_base, 101const std ::vector < llama_logit_bias > & logit_bias_eog, 102const json & data); 103 104} // namespace server_schema