char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
92d1bb0c9
char/aliceai-t5-moe
1import { ParameterSyncService } from './parameter-sync.service' ; 2import { describe , expect , it } from 'vitest' ; 3 4describe ( 'ParameterSyncService' , () => { 5describe ( 'roundFloatingPoint' , () => { 6it ( 'should fix JavaScript floating-point precision issues' , () => { 7// Test the specific values from the screenshot 8const mockServerParams = { 9min_p :0.009999999776482582 , 10samplers :[ 'top_k' , 'typ_p' , 'top_p' , 'min_p' , 'temperature' ], 11temperature :0.800000011920929 , 12top_k :40 , 13top_p :0.949999988079071 14}; 15const result = ParameterSyncService . extractServerDefaults ({ 16 ...mockServerParams , 17chat_format :'' , 18dry_allowed_length :2 , 19dry_base :1.75 , 20dry_multiplier :0.0 , 21dry_penalty_last_n :64 , 22dry_sequence_breakers :[], 23dynatemp_exponent :1.0 , 24dynatemp_range :0.0 , 25frequency_penalty :0.0 , 26generation_prompt :'' , 27grammar :'' , 28grammar_lazy :false , 29grammar_triggers :[], 30ignore_eos :false , 31logit_bias :[], 32lora :[], 33max_tokens :- 1 , 34min_keep :0 , 35mirostat :0 , 36mirostat_eta :0.1 , 37mirostat_tau :5.0 , 38n_discard :0 , 39n_keep :0 , 40// Add other required fields to match the API type 41n_predict :512 , 42n_probs :0 , 43post_sampling_probs :false , 44presence_penalty :0.0 , 45preserved_tokens :[], 46reasoning_format :'' , 47reasoning_in_content :false , 48repeat_last_n :64 , 49repeat_penalty :1.0 , 50seed :- 1 , 51'speculative.n_max' :0 , 52'speculative.n_min' :0 , 53'speculative.p_min' :0.0 , 54stop :[], 55stream :true , 56timings_per_token :false , 57top_n_sigma :0.0 , 58typ_p :1.0 , 59xtc_probability :0.0 , 60xtc_threshold :0.1 61} as ApiLlamaCppServerProps [ 'default_generation_settings' ][ 'params' ]); 62 63// Check that the problematic floating-point values are rounded correctly 64expect ( result . top_p ). toBe ( 0.95 ); 65expect ( result . min_p ). toBe ( 0.01 ); 66expect ( result . temperature ). toBe ( 0.8 ); 67expect ( result . top_k ). toBe ( 40 ); // Integer should remain unchanged 68expect ( result . samplers ). toBe ( 'top_k;typ_p;top_p;min_p;temperature' ); 69}); 70 71it ( 'should preserve non-numeric values' , () => { 72const mockServerParams = { 73max_tokens :- 1 , 74samplers :[ 'top_k' , 'temperature' ], 75temperature :0.7 76}; 77const result = ParameterSyncService . extractServerDefaults ({ 78 ...mockServerParams , 79chat_format :'' , 80dry_allowed_length :2 , 81dry_base :1.75 , 82dry_multiplier :0.0 , 83dry_penalty_last_n :64 , 84dry_sequence_breakers :[], 85dynatemp_exponent :1.0 , 86dynatemp_range :0.0 , 87frequency_penalty :0.0 , 88generation_prompt :'' , 89grammar :'' , 90grammar_lazy :false , 91grammar_triggers :[], 92ignore_eos :false , 93logit_bias :[], 94lora :[], 95min_keep :0 , 96min_p :0.05 , 97mirostat :0 , 98mirostat_eta :0.1 , 99mirostat_tau :5.0 , 100n_discard :0 , 101n_keep :0 , 102// Minimal required fields 103n_predict :512 , 104n_probs :0 , 105post_sampling_probs :false , 106presence_penalty :0.0 , 107preserved_tokens :[], 108reasoning_format :'' , 109reasoning_in_content :false , 110repeat_last_n :64 , 111repeat_penalty :1.0 , 112seed :- 1 , 113'speculative.n_max' :0 , 114'speculative.n_min' :0 , 115'speculative.p_min' :0.0 , 116stop :[], 117stream :true , 118timings_per_token :false , 119top_k :40 , 120top_n_sigma :0.0 , 121top_p :0.95 , 122typ_p :1.0 , 123xtc_probability :0.0 , 124xtc_threshold :0.1 125} as ApiLlamaCppServerProps [ 'default_generation_settings' ][ 'params' ]); 126 127expect ( result . samplers ). toBe ( 'top_k;temperature' ); 128expect ( result . max_tokens ). toBe ( - 1 ); 129expect ( result . temperature ). toBe ( 0.7 ); 130}); 131 132it ( 'extracts sampling twins only, never ui settings' , () => { 133const result = ParameterSyncService . extractServerDefaults ( null ); 134 135expect ( result ). toEqual ({}); 136expect ( ParameterSyncService . canSyncParameter ( 'theme' )). toBe ( false ); 137expect ( ParameterSyncService . canSyncParameter ( 'pdfAsImage' )). toBe ( false ); 138expect ( ParameterSyncService . canSyncParameter ( 'temperature' )). toBe ( true ); 139}); 140}); 141});