Skip to content

Commit

Permalink
chore: fix types issues and unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Mukhammadali committed Feb 4, 2025
1 parent 447d59a commit f3e6036
Show file tree
Hide file tree
Showing 8 changed files with 43 additions and 17 deletions.
2 changes: 2 additions & 0 deletions jest/fixtures/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ export const mockBasicModel: Model = {
chatTemplate: mockChatTemplate,
defaultCompletionSettings: mockDefaultCompletionParams,
completionSettings: mockCompletionParams,
defaultStopWords: mockDefaultCompletionParams.stop,
stopWords: mockCompletionParams.stop,
};

// Factory function for creating custom models
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {fireEvent, render, act} from '../../../../jest/test-utils';
import {ModelSettingsSheet} from '../ModelSettingsSheet';
import {modelStore} from '../../../store';
import {Model, ModelOrigin} from '../../../utils/types';
import {defaultCompletionParams} from '../../../utils/chat';

// Mock the ModelSettings component
jest.mock('../../../screens/ModelsScreen/ModelSettings', () => {
Expand Down Expand Up @@ -87,6 +88,8 @@ describe('ModelSettingsSheet', () => {
chatTemplate: defaultTemplate,
defaultStopWords: ['test'],
stopWords: ['test'],
defaultCompletionSettings: defaultCompletionParams,
completionSettings: defaultCompletionParams,
};

const defaultProps = {
Expand Down
2 changes: 2 additions & 0 deletions src/store/ModelStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -844,6 +844,8 @@ class ModelStore {
chatTemplate: {...defaultSettings.chatTemplate},
defaultStopWords: [...(defaultSettings?.completionParams?.stop || [])],
stopWords: [...(defaultSettings?.completionParams?.stop || [])],
defaultCompletionSettings: defaultSettings.completionParams,
completionSettings: {...defaultSettings.completionParams},
};

runInAction(() => {
Expand Down
16 changes: 15 additions & 1 deletion src/store/__tests__/ChatSessionStore.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {runInAction} from 'mobx';
import * as RNFS from '@dr.pogodin/react-native-fs';
import {LlamaContext} from '@pocketpalai/llama.rn';

import {chatSessionStore} from '../ChatSessionStore';
import {chatSessionStore, defaultCompletionSettings} from '../ChatSessionStore';

import {MessageType} from '../../utils/types';

Expand Down Expand Up @@ -66,6 +66,7 @@ describe('chatSessionStore', () => {
title: 'Session 1',
date: new Date().toISOString(),
messages: [],
completionSettings: defaultCompletionSettings,
},
];
(RNFS.exists as jest.Mock).mockResolvedValue(true);
Expand All @@ -86,6 +87,7 @@ describe('chatSessionStore', () => {
title: 'Session 1',
date: new Date().toISOString(),
messages: [],
completionSettings: defaultCompletionSettings,
},
];
(RNFS.exists as jest.Mock).mockResolvedValue(false);
Expand Down Expand Up @@ -115,6 +117,7 @@ describe('chatSessionStore', () => {
title: 'Session 1',
date: new Date().toISOString(),
messages: [],
completionSettings: defaultCompletionSettings,
};
chatSessionStore.sessions = [mockSession];
chatSessionStore.activeSessionId = mockSession.id;
Expand All @@ -137,6 +140,7 @@ describe('chatSessionStore', () => {
title: 'Session 1',
date: new Date().toISOString(),
messages: [mockMessage],
completionSettings: defaultCompletionSettings,
};
chatSessionStore.sessions = [mockSession];
chatSessionStore.activeSessionId = mockSession.id;
Expand All @@ -157,6 +161,7 @@ describe('chatSessionStore', () => {
title: 'New Session',
date: new Date().toISOString(),
messages: [mockMessage],
completionSettings: defaultCompletionSettings,
};
chatSessionStore.updateSessionTitle(mockSession);

Expand All @@ -170,6 +175,7 @@ describe('chatSessionStore', () => {
title: 'New Session',
date: new Date().toISOString(),
messages: [{...mockMessage, text: longMessage}],
completionSettings: defaultCompletionSettings,
};
chatSessionStore.updateSessionTitle(mockSession);

Expand Down Expand Up @@ -206,6 +212,7 @@ describe('chatSessionStore', () => {
title: 'Session 1',
date: new Date().toISOString(),
messages: [],
completionSettings: defaultCompletionSettings,
};
chatSessionStore.sessions = [session];

Expand All @@ -223,6 +230,7 @@ describe('chatSessionStore', () => {
title: 'Session 1',
date: new Date().toISOString(),
messages: [],
completionSettings: defaultCompletionSettings,
};
chatSessionStore.sessions = [session];
(RNFS.writeFile as jest.Mock).mockRejectedValue(
Expand Down Expand Up @@ -250,6 +258,7 @@ describe('chatSessionStore', () => {
title: 'Session 1',
date: new Date().toISOString(),
messages: [mockMessage],
completionSettings: defaultCompletionSettings,
};
chatSessionStore.sessions = [session];
chatSessionStore.activeSessionId = session.id;
Expand All @@ -269,6 +278,7 @@ describe('chatSessionStore', () => {
title: 'Session 1',
date: new Date().toISOString(),
messages: [mockMessage],
completionSettings: defaultCompletionSettings,
};
chatSessionStore.sessions = [session];
chatSessionStore.activeSessionId = session.id;
Expand Down Expand Up @@ -298,6 +308,7 @@ describe('chatSessionStore', () => {
title: 'Session 1',
date: new Date().toISOString(),
messages: [],
completionSettings: defaultCompletionSettings,
};
chatSessionStore.sessions = [session];
chatSessionStore.activeSessionId = session.id;
Expand Down Expand Up @@ -339,18 +350,21 @@ describe('chatSessionStore', () => {
title: 'Today Session',
date: today.toISOString(),
messages: [],
completionSettings: defaultCompletionSettings,
},
{
id: '2',
title: 'Yesterday Session',
date: yesterday.toISOString(),
messages: [],
completionSettings: defaultCompletionSettings,
},
{
id: '3',
title: 'Last Week Session',
date: lastWeek.toISOString(),
messages: [],
completionSettings: defaultCompletionSettings,
},
];

Expand Down
1 change: 1 addition & 0 deletions src/store/__tests__/ModelStore.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ describe('ModelStore', () => {
expect(modelStore.models[0].stopWords).toEqual([
'custom_stop_1',
'custom_stop_2',
...(newDefaultModel.stopWords || []),
]);
});

Expand Down
32 changes: 16 additions & 16 deletions src/store/defaultModels.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,16 @@ const crossPlatformModels: Model[] = [
n_predict: 500,
temperature: 0.0,
penalty_repeat: 1.0,
stop: ['<end_of_turn>'],
},
completionSettings: {
// https://huggingface.co/google/gemma-7b-it/discussions/38#65d7b14adb51f7c160769fa1
...defaultCompletionParams,
n_predict: 500,
temperature: 0.0,
penalty_repeat: 1.0,
stop: ['<end_of_turn>'],
},
defaultStopWords: ['<end_of_turn>'],
stopWords: ['<end_of_turn>'],
hfModelFile: {
rfilename: 'gemma-2-2b-it-Q6_K.gguf',
url: 'https://huggingface.co/bartowski/gemma-2-2b-it-GGUF/resolve/main/gemma-2-2b-it-Q6_K.gguf',
Expand Down Expand Up @@ -79,15 +79,15 @@ const crossPlatformModels: Model[] = [
n_predict: 500,
temperature: 0.7,
penalty_repeat: 1.0,
stop: ['<end_of_turn>'],
},
completionSettings: {
...defaultCompletionParams,
n_predict: 500,
temperature: 0.7,
penalty_repeat: 1.0,
stop: ['<end_of_turn>'],
},
defaultStopWords: ['<end_of_turn>'],
stopWords: ['<end_of_turn>'],
hfModelFile: {
rfilename: 'Gemmasutra-Mini-2B-v1-Q6_K.gguf',
url: 'https://huggingface.co/TheDrummer/Gemmasutra-Mini-2B-v1-GGUF/resolve/main/Gemmasutra-Mini-2B-v1-Q6_K.gguf',
Expand Down Expand Up @@ -124,14 +124,14 @@ const crossPlatformModels: Model[] = [
...defaultCompletionParams,
n_predict: 500,
temperature: 0.1,
stop: ['<|end|>'],
},
completionSettings: {
...defaultCompletionParams,
n_predict: 500,
temperature: 0.1,
stop: ['<|end|>'],
},
defaultStopWords: ['<|end|>'],
stopWords: ['<|end|>'],
hfModelFile: {
rfilename: 'Phi-3.5-mini-instruct.Q4_K_M.gguf',
url: 'https://huggingface.co/MaziyarPanahi/Phi-3.5-mini-instruct-GGUF/resolve/main/Phi-3.5-mini-instruct.Q4_K_M.gguf',
Expand Down Expand Up @@ -168,14 +168,14 @@ const crossPlatformModels: Model[] = [
...defaultCompletionParams,
n_predict: 500,
temperature: 0.5,
stop: ['<|im_end|>'],
},
completionSettings: {
...defaultCompletionParams,
n_predict: 500,
temperature: 0.5,
stop: ['<|im_end|>'],
},
defaultStopWords: ['<|im_end|>'],
stopWords: ['<|im_end|>'],
hfModelFile: {
rfilename: 'qwen2.5-1.5b-instruct-q8_0.gguf',
url: 'https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/main/qwen2.5-1.5b-instruct-q8_0.gguf',
Expand Down Expand Up @@ -211,14 +211,14 @@ const crossPlatformModels: Model[] = [
...defaultCompletionParams,
n_predict: 500,
temperature: 0.5,
stop: ['<|im_end|>'],
},
completionSettings: {
...defaultCompletionParams,
n_predict: 500,
temperature: 0.5,
stop: ['<|im_end|>'],
},
defaultStopWords: ['<|im_end|>'],
stopWords: ['<|im_end|>'],
hfModelFile: {
rfilename: 'qwen2.5-3b-instruct-q5_k_m.gguf',
url: 'https://huggingface.co/Qwen/Qwen2.5-3B-Instruct-GGUF/resolve/main/qwen2.5-3b-instruct-q5_k_m.gguf',
Expand Down Expand Up @@ -256,14 +256,14 @@ const crossPlatformModels: Model[] = [
...defaultCompletionParams,
n_predict: 500,
temperature: 0.5,
stop: ['<|eot_id|>'],
},
completionSettings: {
...defaultCompletionParams,
n_predict: 500,
temperature: 0.5,
stop: ['<|eot_id|>'],
},
defaultStopWords: ['<|eot_id|>'],
stopWords: ['<|eot_id|>'],
hfModelFile: {
rfilename: 'llama-3.2-1b-instruct-q8_0.gguf',
url: 'https://huggingface.co/hugging-quants/Llama-3.2-1B-Instruct-Q8_0-GGUF/resolve/main/llama-3.2-1b-instruct-q8_0.gguf',
Expand Down Expand Up @@ -299,14 +299,14 @@ const crossPlatformModels: Model[] = [
...defaultCompletionParams,
n_predict: 500,
temperature: 0.5,
stop: ['<|eot_id|>'],
},
completionSettings: {
...defaultCompletionParams,
n_predict: 500,
temperature: 0.5,
stop: ['<|eot_id|>'],
},
defaultStopWords: ['<|eot_id|>'],
stopWords: ['<|eot_id|>'],
hfModelFile: {
rfilename: 'Llama-3.2-3B-Instruct-Q6_K.gguf',
url: 'https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF/resolve/main/Llama-3.2-3B-Instruct-Q6_K.gguf',
Expand Down Expand Up @@ -343,14 +343,14 @@ const crossPlatformModels: Model[] = [
...defaultCompletionParams,
n_predict: 500,
temperature: 0.7,
stop: ['<|endoftext|>', '<|im_end|>'],
},
completionSettings: {
...defaultCompletionParams,
n_predict: 500,
temperature: 0.7,
stop: ['<|endoftext|>', '<|im_end|>'],
},
defaultStopWords: ['<|endoftext|>', '<|im_end|>'],
stopWords: ['<|endoftext|>', '<|im_end|>'],
hfModelFile: {
rfilename: 'SmolLM2-1.7B-Instruct-Q8_0.gguf',
url: 'https://huggingface.co/bartowski/SmolLM2-1.7B-Instruct-GGUF/resolve/main/SmolLM2-1.7B-Instruct-Q8_0.gguf',
Expand Down
2 changes: 2 additions & 0 deletions src/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,8 @@ export function hfAsModel(
chatTemplate: _.cloneDeep(defaultSettings.chatTemplate),
defaultCompletionSettings: defaultSettings.completionParams,
completionSettings: {...defaultSettings.completionParams},
defaultStopWords: defaultSettings.completionParams.stop,
stopWords: defaultSettings.completionParams.stop,
hfModelFile: modelFile,
hfModel: hfModel,
};
Expand Down
2 changes: 2 additions & 0 deletions src/utils/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,8 @@ export interface Model {
chatTemplate: ChatTemplateConfig;
defaultStopWords: CompletionParams['stop'];
stopWords: CompletionParams['stop'];
defaultCompletionSettings: CompletionParams;
completionSettings: CompletionParams;
hfModelFile?: ModelFile;
hfModel?: HuggingFaceModel;
hash?: string;
Expand Down

0 comments on commit f3e6036

Please sign in to comment.