diff --git a/src/assets/locale/en/common.json b/src/assets/locale/en/common.json index 88c1be5..b00e03e 100644 --- a/src/assets/locale/en/common.json +++ b/src/assets/locale/en/common.json @@ -60,11 +60,11 @@ "keepAlive": { "label": "Keep Alive", "help": "controls how long the model will stay loaded into memory following the request (default: 5m)", - "placeholder": "Enter Keep Alive duration (e.g. 5m, 10m, 1h)" + "placeholder": "e.g. 5m, 10m, 1h" }, "temperature": { "label": "Temperature", - "placeholder": "Enter Temperature value (e.g. 0.7, 1.0)" + "placeholder": "e.g. 0.7, 1.0" }, "numCtx": { "label": "Number of Contexts", @@ -72,24 +72,36 @@ }, "numPredict": { "label": "Max Tokens (num_predict)", - "placeholder": "Enter Max Tokens value (e.g. 2048, 4096)" + "placeholder": "e.g. 2048, 4096" }, "seed": { "label": "Seed", - "placeholder": "Enter Seed value (e.g. 1234)", + "placeholder": "e.g. 1234", "help": "Reproducibility of the model output" }, "topK": { "label": "Top K", - "placeholder": "Enter Top K value (e.g. 40, 100)" + "placeholder": "e.g. 40, 100" }, "topP": { "label": "Top P", - "placeholder": "Enter Top P value (e.g. 0.9, 0.95)" + "placeholder": "e.g. 0.9, 0.95" }, "useMMap": { "label": "useMmap" }, + "minP": { + "label": "Min P", + "placeholder": "e.g. 0.05" + }, + "repeatPenalty": { + "label": "Repeat Penalty", + "placeholder": "e.g. 1.1, 1.2" + }, + "repeatLastN": { + "label": "Repeat Last N", + "placeholder": "e.g. 64, 128" + }, "numGpu": { "label": "Num GPU", "placeholder": "Enter number of layers to send to GPU(s)" @@ -125,4 +137,4 @@ "pin": "Pin", "unpin": "Unpin", "generationInfo": "Generation Info" -} +} \ No newline at end of file diff --git a/src/components/Common/Settings/CurrentChatModelSettings.tsx b/src/components/Common/Settings/CurrentChatModelSettings.tsx index b1218b4..57a6926 100644 --- a/src/components/Common/Settings/CurrentChatModelSettings.tsx +++ b/src/components/Common/Settings/CurrentChatModelSettings.tsx @@ -76,7 +76,10 @@ export const CurrentChatModelSettings = ({ numGpu: cUserSettings.numGpu ?? data.numGpu, numPredict: cUserSettings.numPredict ?? data.numPredict, systemPrompt: cUserSettings.systemPrompt ?? tempSystemPrompt, - useMMap: cUserSettings.useMMap ?? data.useMMap + useMMap: cUserSettings.useMMap ?? data.useMMap, + minP: cUserSettings.minP ?? data.minP, + repeatLastN: cUserSettings.repeatLastN ?? data.repeatLastN, + repeatPenalty: cUserSettings.repeatPenalty ?? data.repeatPenalty }) return data }, @@ -199,6 +202,34 @@ export const CurrentChatModelSettings = ({ /> + + + + + + + + + @@ -209,7 +240,10 @@ export const CurrentChatModelSettings = ({ } ]} /> - + ) : ( diff --git a/src/components/Option/Settings/model-settings.tsx b/src/components/Option/Settings/model-settings.tsx index 18015ba..43753eb 100644 --- a/src/components/Option/Settings/model-settings.tsx +++ b/src/components/Option/Settings/model-settings.tsx @@ -122,6 +122,34 @@ export const ModelSettings = () => { placeholder={t("modelSettings.form.numGpu.placeholder")} /> + + + + + + + + + diff --git a/src/hooks/useMessage.tsx b/src/hooks/useMessage.tsx index 2caec5a..1cdca63 100644 --- a/src/hooks/useMessage.tsx +++ b/src/hooks/useMessage.tsx @@ -143,7 +143,14 @@ export const useMessage = () => { currentChatModelSettings?.numPredict ?? userDefaultModelSettings?.numPredict, useMMap: - currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap + currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap, + minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) let newMessage: Message[] = [] @@ -278,7 +285,15 @@ export const useMessage = () => { userDefaultModelSettings?.numPredict, useMMap: currentChatModelSettings?.useMMap ?? - userDefaultModelSettings?.useMMap + userDefaultModelSettings?.useMMap, + minP: + currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) const response = await questionOllama.invoke(promptForQuestion) query = response.content.toString() @@ -492,7 +507,14 @@ export const useMessage = () => { currentChatModelSettings?.numPredict ?? userDefaultModelSettings?.numPredict, useMMap: - currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap + currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap, + minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) let newMessage: Message[] = [] @@ -729,7 +751,14 @@ export const useMessage = () => { currentChatModelSettings?.numPredict ?? userDefaultModelSettings?.numPredict, useMMap: - currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap + currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap, + minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) let newMessage: Message[] = [] @@ -780,7 +809,7 @@ export const useMessage = () => { type: "text" } ], - model: selectedModel, + model: selectedModel, useOCR }) if (image.length > 0) { @@ -961,7 +990,14 @@ export const useMessage = () => { currentChatModelSettings?.numPredict ?? userDefaultModelSettings?.numPredict, useMMap: - currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap + currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap, + minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) let newMessage: Message[] = [] @@ -1043,7 +1079,15 @@ export const useMessage = () => { userDefaultModelSettings?.numPredict, useMMap: currentChatModelSettings?.useMMap ?? - userDefaultModelSettings?.useMMap + userDefaultModelSettings?.useMMap, + minP: + currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) const response = await questionOllama.invoke(promptForQuestion) query = response.content.toString() @@ -1235,7 +1279,14 @@ export const useMessage = () => { currentChatModelSettings?.numPredict ?? userDefaultModelSettings?.numPredict, useMMap: - currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap + currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap, + minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) let newMessage: Message[] = [] diff --git a/src/hooks/useMessageOption.tsx b/src/hooks/useMessageOption.tsx index 1e97e38..56100be 100644 --- a/src/hooks/useMessageOption.tsx +++ b/src/hooks/useMessageOption.tsx @@ -134,7 +134,14 @@ export const useMessageOption = () => { currentChatModelSettings?.numPredict ?? userDefaultModelSettings?.numPredict, useMMap: - currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap + currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap, + minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) let newMessage: Message[] = [] @@ -216,7 +223,15 @@ export const useMessageOption = () => { userDefaultModelSettings?.numPredict, useMMap: currentChatModelSettings?.useMMap ?? - userDefaultModelSettings?.useMMap + userDefaultModelSettings?.useMMap, + minP: + currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) const response = await questionOllama.invoke(promptForQuestion) query = response.content.toString() @@ -442,7 +457,14 @@ export const useMessageOption = () => { currentChatModelSettings?.numPredict ?? userDefaultModelSettings?.numPredict, useMMap: - currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap + currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap, + minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) let newMessage: Message[] = [] @@ -690,7 +712,14 @@ export const useMessageOption = () => { currentChatModelSettings?.numPredict ?? userDefaultModelSettings?.numPredict, useMMap: - currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap + currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap, + minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) let newMessage: Message[] = [] @@ -788,7 +817,15 @@ export const useMessageOption = () => { userDefaultModelSettings?.numPredict, useMMap: currentChatModelSettings?.useMMap ?? - userDefaultModelSettings?.useMMap + userDefaultModelSettings?.useMMap, + minP: + currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP, + repeatLastN: + currentChatModelSettings?.repeatLastN ?? + userDefaultModelSettings?.repeatLastN, + repeatPenalty: + currentChatModelSettings?.repeatPenalty ?? + userDefaultModelSettings?.repeatPenalty }) const response = await questionOllama.invoke(promptForQuestion) query = response.content.toString() diff --git a/src/models/ChatOllama.ts b/src/models/ChatOllama.ts index 1bc7ddb..e046f68 100644 --- a/src/models/ChatOllama.ts +++ b/src/models/ChatOllama.ts @@ -95,6 +95,8 @@ export class ChatOllama topP?: number; + minP?: number; + typicalP?: number; useMLock?: boolean; @@ -142,6 +144,7 @@ export class ChatOllama this.tfsZ = fields.tfsZ; this.topK = fields.topK; this.topP = fields.topP; + this.minP = fields.minP; this.typicalP = fields.typicalP; this.useMLock = fields.useMLock; this.useMMap = fields.useMMap; @@ -205,6 +208,7 @@ export class ChatOllama tfs_z: this.tfsZ, top_k: this.topK, top_p: this.topP, + min_p: this.minP, typical_p: this.typicalP, use_mlock: this.useMLock, use_mmap: this.useMMap, diff --git a/src/models/index.ts b/src/models/index.ts index 953c968..b50baf2 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -17,7 +17,10 @@ export const pageAssistModel = async ({ seed, numGpu, numPredict, - useMMap + useMMap, + minP, + repeatLastN, + repeatPenalty }: { model: string baseUrl: string @@ -30,6 +33,9 @@ export const pageAssistModel = async ({ numGpu?: number numPredict?: number useMMap?: boolean + minP?: number + repeatPenalty?: number + repeatLastN?: number }) => { if (model === "chrome::gemini-nano::page-assist") { return new ChatChromeAI({ @@ -86,6 +92,9 @@ export const pageAssistModel = async ({ model, numGpu, numPredict, - useMMap + useMMap, + minP: minP, + repeatPenalty: repeatPenalty, + repeatLastN: repeatLastN, }) } diff --git a/src/models/utils/ollama.ts b/src/models/utils/ollama.ts index 57b98f0..a311ca9 100644 --- a/src/models/utils/ollama.ts +++ b/src/models/utils/ollama.ts @@ -35,6 +35,7 @@ export interface OllamaInput { tfsZ?: number topK?: number topP?: number + minP?: number typicalP?: number useMLock?: boolean useMMap?: boolean diff --git a/src/services/model-settings.ts b/src/services/model-settings.ts index 1993442..730d619 100644 --- a/src/services/model-settings.ts +++ b/src/services/model-settings.ts @@ -32,6 +32,7 @@ type ModelSettings = { useMLock?: boolean useMMap?: boolean vocabOnly?: boolean + minP?: number } const keys = [ @@ -62,7 +63,8 @@ const keys = [ "typicalP", "useMLock", "useMMap", - "vocabOnly" + "vocabOnly", + "minP", ] export const getAllModelSettings = async () => { diff --git a/src/store/model.tsx b/src/store/model.tsx index 5514b24..9ef8546 100644 --- a/src/store/model.tsx +++ b/src/store/model.tsx @@ -30,6 +30,7 @@ type CurrentChatModelSettings = { useMMap?: boolean vocabOnly?: boolean seed?: number + minP?: number setF16KV?: (f16KV: boolean) => void setFrequencyPenalty?: (frequencyPenalty: number) => void @@ -65,6 +66,8 @@ type CurrentChatModelSettings = { reset: () => void systemPrompt?: string setSystemPrompt: (systemPrompt: string) => void + + setMinP: (minP: number) => void } export const useStoreChatModelSettings = create( @@ -103,6 +106,7 @@ export const useStoreChatModelSettings = create( seetSeed: (seed: number) => set({ seed }), setX: (key: string, value: any) => set({ [key]: value }), systemPrompt: undefined, + setMinP: (minP: number) => set({ minP }), setSystemPrompt: (systemPrompt: string) => set({ systemPrompt }), reset: () => set({ @@ -135,7 +139,8 @@ export const useStoreChatModelSettings = create( useMMap: undefined, vocabOnly: undefined, seed: undefined, - systemPrompt: undefined + systemPrompt: undefined, + minP: undefined, }) }) )