fix: validate max_token from context_length value (#2870)

This commit is contained in:
Faisal Amir 2024-05-06 15:10:37 +07:00 committed by GitHub
parent 86fda1cf6c
commit a6ccd672c5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 46 additions and 2 deletions

View File

@ -99,6 +99,11 @@ export const useCreateNewThread = () => {
? { ctx_len: 2048 } ? { ctx_len: 2048 }
: {} : {}
const overriddenParameters =
defaultModel?.parameters.max_tokens && defaultModel.parameters.max_tokens
? { max_tokens: 2048 }
: {}
const createdAt = Date.now() const createdAt = Date.now()
const assistantInfo: ThreadAssistantInfo = { const assistantInfo: ThreadAssistantInfo = {
assistant_id: assistant.id, assistant_id: assistant.id,
@ -107,7 +112,8 @@ export const useCreateNewThread = () => {
model: { model: {
id: defaultModel?.id ?? '*', id: defaultModel?.id ?? '*',
settings: { ...defaultModel?.settings, ...overriddenSettings } ?? {}, settings: { ...defaultModel?.settings, ...overriddenSettings } ?? {},
parameters: defaultModel?.parameters ?? {}, parameters:
{ ...defaultModel?.parameters, ...overriddenParameters } ?? {},
engine: defaultModel?.engine, engine: defaultModel?.engine,
}, },
instructions: assistant.instructions, instructions: assistant.instructions,

View File

@ -5,10 +5,14 @@ import {
SliderComponentProps, SliderComponentProps,
} from '@janhq/core' } from '@janhq/core'
import { useAtomValue } from 'jotai/react'
import Checkbox from '@/containers/Checkbox' import Checkbox from '@/containers/Checkbox'
import ModelConfigInput from '@/containers/ModelConfigInput' import ModelConfigInput from '@/containers/ModelConfigInput'
import SliderRightPanel from '@/containers/SliderRightPanel' import SliderRightPanel from '@/containers/SliderRightPanel'
import { activeThreadAtom } from '@/helpers/atoms/Thread.atom'
type Props = { type Props = {
componentProps: SettingComponentProps[] componentProps: SettingComponentProps[]
disabled?: boolean disabled?: boolean
@ -20,6 +24,7 @@ const SettingComponent: React.FC<Props> = ({
disabled = false, disabled = false,
onValueUpdated, onValueUpdated,
}) => { }) => {
const activeThread = useAtomValue(activeThreadAtom)
const components = componentProps.map((data) => { const components = componentProps.map((data) => {
switch (data.controllerType) { switch (data.controllerType) {
case 'slider': { case 'slider': {
@ -31,7 +36,14 @@ const SettingComponent: React.FC<Props> = ({
title={data.title} title={data.title}
description={data.description} description={data.description}
min={min} min={min}
max={max} max={
data.key === 'max_tokens'
? Number(
activeThread &&
activeThread.assistants[0].model.settings.ctx_len
)
: max
}
step={step} step={step}
value={value} value={value}
name={data.key} name={data.key}

View File

@ -118,6 +118,32 @@ const Sidebar: React.FC = () => {
updateModelParameter(activeThread, { updateModelParameter(activeThread, {
params: { [key]: value }, params: { [key]: value },
}) })
if (
activeThread.assistants[0].model.parameters.max_tokens &&
activeThread.assistants[0].model.settings.ctx_len
) {
if (
key === 'max_tokens' &&
Number(value) > activeThread.assistants[0].model.settings.ctx_len
) {
updateModelParameter(activeThread, {
params: {
max_tokens: activeThread.assistants[0].model.settings.ctx_len,
},
})
}
if (
key === 'ctx_len' &&
Number(value) < activeThread.assistants[0].model.parameters.max_tokens
) {
updateModelParameter(activeThread, {
params: {
max_tokens: activeThread.assistants[0].model.settings.ctx_len,
},
})
}
}
}, },
[activeThread, setEngineParamsUpdate, stopModel, updateModelParameter] [activeThread, setEngineParamsUpdate, stopModel, updateModelParameter]
) )