diff --git a/src/renderer/src/aiCore/prepareParams/__tests__/model-parameters.test.ts b/src/renderer/src/aiCore/prepareParams/__tests__/model-parameters.test.ts index 70b4ac84b7..bdc1d7dd11 100644 --- a/src/renderer/src/aiCore/prepareParams/__tests__/model-parameters.test.ts +++ b/src/renderer/src/aiCore/prepareParams/__tests__/model-parameters.test.ts @@ -158,6 +158,29 @@ describe('modelParameters', () => { expect(getTemperature(assistant, model)).toBe(0.8) }) + + it('converts string temperature values to numbers', () => { + const assistant = createAssistant({ enableTemperature: true, temperature: '2.0' as any }) + const model = createModel({ id: 'gpt-4o', provider: 'openai', group: 'openai' }) + + const result = getTemperature(assistant, model) + expect(result).toBe(2.0) + expect(typeof result).toBe('number') + }) + + it('converts string temperature values to numbers and clamps when necessary', () => { + const assistant = createAssistant({ enableTemperature: true, temperature: '1.5' as any }) + const model = createModel({ + id: 'claude-sonnet-3.5', + name: 'Claude 3.5 Sonnet', + provider: 'anthropic', + group: 'claude' + }) + + const result = getTemperature(assistant, model) + expect(result).toBe(1.0) + expect(typeof result).toBe('number') + }) }) describe('getTopP', () => { @@ -200,6 +223,15 @@ describe('modelParameters', () => { expect(getTopP(assistant, model)).toBeUndefined() }) + + it('converts string topP values to numbers', () => { + const assistant = createAssistant({ enableTopP: true, topP: '0.9' as any }) + const model = createModel({ id: 'gpt-4o', provider: 'openai', group: 'openai' }) + + const result = getTopP(assistant, model) + expect(result).toBe(0.9) + expect(typeof result).toBe('number') + }) }) describe('getTimeout', () => { diff --git a/src/renderer/src/aiCore/utils/__tests__/reasoning.test.ts b/src/renderer/src/aiCore/utils/__tests__/reasoning.test.ts index 36253e5c1d..082a80e11d 100644 --- a/src/renderer/src/aiCore/utils/__tests__/reasoning.test.ts +++ b/src/renderer/src/aiCore/utils/__tests__/reasoning.test.ts @@ -988,5 +988,29 @@ describe('reasoning utils', () => { valid: 'value3' }) }) + + it('should convert string number values to actual numbers for number type parameters', async () => { + const assistant: Assistant = { + id: 'test', + name: 'Test', + settings: { + customParameters: [ + { name: 'temperature', value: '2.0' as any, type: 'number' }, + { name: 'maxTokens', value: '1000' as any, type: 'number' }, + { name: 'topP', value: '0.9' as any, type: 'number' } + ] + } + } as Assistant + + const result = getCustomParameters(assistant) + expect(result).toEqual({ + temperature: 2.0, + maxTokens: 1000, + topP: 0.9 + }) + expect(typeof result.temperature).toBe('number') + expect(typeof result.maxTokens).toBe('number') + expect(typeof result.topP).toBe('number') + }) }) })