Team Ai
Modelpublic

Felipe97/llama-cpp-compiled

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