✨feat: recommended label llamacpp setting (#6052)
* ✨feat: recommended label llamacpp
* chore: remove log
This commit is contained in:
parent
339a1957c8
commit
99567a1102
@ -132,6 +132,12 @@ export abstract class BaseExtension implements ExtensionType {
|
|||||||
setting.controllerProps.options = setting.controllerProps.options?.length
|
setting.controllerProps.options = setting.controllerProps.options?.length
|
||||||
? setting.controllerProps.options
|
? setting.controllerProps.options
|
||||||
: oldSettings.find((e: any) => e.key === setting.key)?.controllerProps?.options
|
: oldSettings.find((e: any) => e.key === setting.key)?.controllerProps?.options
|
||||||
|
if ('recommended' in setting.controllerProps) {
|
||||||
|
const oldRecommended = oldSettings.find((e: any) => e.key === setting.key)?.controllerProps?.recommended
|
||||||
|
if (oldRecommended !== undefined && oldRecommended !== "") {
|
||||||
|
setting.controllerProps.recommended = oldRecommended
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
localStorage.setItem(this.name, JSON.stringify(settings))
|
localStorage.setItem(this.name, JSON.stringify(settings))
|
||||||
|
|||||||
@ -60,4 +60,5 @@ export type DropdownComponentProps = {
|
|||||||
value: string
|
value: string
|
||||||
type?: InputType
|
type?: InputType
|
||||||
options?: DropdownOption[]
|
options?: DropdownOption[]
|
||||||
|
recommended?: string
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,9 +6,11 @@
|
|||||||
"controllerType": "dropdown",
|
"controllerType": "dropdown",
|
||||||
"controllerProps": {
|
"controllerProps": {
|
||||||
"value": "none",
|
"value": "none",
|
||||||
"options": []
|
"options": [],
|
||||||
|
"recommended": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"key": "auto_update_engine",
|
"key": "auto_update_engine",
|
||||||
"title": "Auto update engine",
|
"title": "Auto update engine",
|
||||||
|
|||||||
@ -297,6 +297,12 @@ export default class llamacpp_extension extends AIEngine {
|
|||||||
return { value: key, name: key }
|
return { value: key, name: key }
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Set the recommended backend based on bestAvailableBackendString
|
||||||
|
if (bestAvailableBackendString) {
|
||||||
|
backendSetting.controllerProps.recommended =
|
||||||
|
bestAvailableBackendString
|
||||||
|
}
|
||||||
|
|
||||||
const savedBackendSetting = await this.getSetting<string>(
|
const savedBackendSetting = await this.getSetting<string>(
|
||||||
'version_backend',
|
'version_backend',
|
||||||
originalDefaultBackendValue
|
originalDefaultBackendValue
|
||||||
@ -1298,7 +1304,8 @@ export default class llamacpp_extension extends AIEngine {
|
|||||||
args.push('--cache-type-k', cfg.cache_type_k)
|
args.push('--cache-type-k', cfg.cache_type_k)
|
||||||
if (
|
if (
|
||||||
cfg.flash_attn &&
|
cfg.flash_attn &&
|
||||||
(cfg.cache_type_v != 'f16' && cfg.cache_type_v != 'f32')
|
cfg.cache_type_v != 'f16' &&
|
||||||
|
cfg.cache_type_v != 'f32'
|
||||||
) {
|
) {
|
||||||
args.push('--cache-type-v', cfg.cache_type_v)
|
args.push('--cache-type-v', cfg.cache_type_v)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,30 +5,61 @@ import {
|
|||||||
DropdownMenuTrigger,
|
DropdownMenuTrigger,
|
||||||
} from '@/components/ui/dropdown-menu'
|
} from '@/components/ui/dropdown-menu'
|
||||||
|
|
||||||
|
import {
|
||||||
|
Tooltip,
|
||||||
|
TooltipTrigger,
|
||||||
|
TooltipContent,
|
||||||
|
} from '@/components/ui/tooltip'
|
||||||
|
import { IconStarFilled } from '@tabler/icons-react'
|
||||||
|
import { cn } from '@/lib/utils'
|
||||||
|
|
||||||
// Dropdown component
|
// Dropdown component
|
||||||
type DropdownControlProps = {
|
type DropdownControlProps = {
|
||||||
value: string
|
value: string
|
||||||
options?: Array<{ value: number | string; name: string }>
|
options?: Array<{ value: number | string; name: string }>
|
||||||
|
recommended?: string
|
||||||
onChange: (value: number | string) => void
|
onChange: (value: number | string) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
export function DropdownControl({
|
export function DropdownControl({
|
||||||
value,
|
value,
|
||||||
options = [],
|
options = [],
|
||||||
|
recommended,
|
||||||
onChange,
|
onChange,
|
||||||
}: DropdownControlProps) {
|
}: DropdownControlProps) {
|
||||||
|
const isSelected =
|
||||||
|
options.find((option) => option.value === value)?.name || value
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DropdownMenu>
|
<DropdownMenu>
|
||||||
<DropdownMenuTrigger className="bg-main-view-fg/5 hover:bg-main-view-fg/8 px-2 py-1 rounded font-medium cursor-pointer">
|
<DropdownMenuTrigger className="bg-main-view-fg/5 hover:bg-main-view-fg/8 px-3 py-1 rounded-sm font-medium cursor-pointer">
|
||||||
{options.find((option) => option.value === value)?.name || value}
|
{isSelected}
|
||||||
</DropdownMenuTrigger>
|
</DropdownMenuTrigger>
|
||||||
<DropdownMenuContent align="end">
|
<DropdownMenuContent align="end" className="max-h-70">
|
||||||
{options.map((option, optionIndex) => (
|
{options.map((option, optionIndex) => (
|
||||||
<DropdownMenuItem
|
<DropdownMenuItem
|
||||||
key={optionIndex}
|
key={optionIndex}
|
||||||
onClick={() => onChange(option.value)}
|
onClick={() => onChange(option.value)}
|
||||||
|
className={cn(
|
||||||
|
'flex items-center justify-between my-1',
|
||||||
|
isSelected === option.name
|
||||||
|
? 'bg-main-view-fg/6 hover:bg-main-view-fg/6'
|
||||||
|
: ''
|
||||||
|
)}
|
||||||
>
|
>
|
||||||
{option.name}
|
<span>{option.name}</span>
|
||||||
|
{recommended === option.value && (
|
||||||
|
<Tooltip>
|
||||||
|
<TooltipTrigger asChild>
|
||||||
|
<div className="cursor-pointer">
|
||||||
|
<IconStarFilled className="text-accent" />
|
||||||
|
</div>
|
||||||
|
</TooltipTrigger>
|
||||||
|
<TooltipContent side="top" sideOffset={8} className="z-50">
|
||||||
|
Recommended
|
||||||
|
</TooltipContent>
|
||||||
|
</Tooltip>
|
||||||
|
)}
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
))}
|
))}
|
||||||
</DropdownMenuContent>
|
</DropdownMenuContent>
|
||||||
|
|||||||
@ -28,6 +28,7 @@ type DynamicControllerProps = {
|
|||||||
min?: number
|
min?: number
|
||||||
max?: number
|
max?: number
|
||||||
step?: number
|
step?: number
|
||||||
|
recommended?: string
|
||||||
}
|
}
|
||||||
onChange: (value: string | boolean | number) => void
|
onChange: (value: string | boolean | number) => void
|
||||||
}
|
}
|
||||||
@ -65,6 +66,7 @@ export function DynamicControllerSetting({
|
|||||||
<DropdownControl
|
<DropdownControl
|
||||||
value={controllerProps.value as string}
|
value={controllerProps.value as string}
|
||||||
options={controllerProps.options}
|
options={controllerProps.options}
|
||||||
|
recommended={controllerProps.recommended}
|
||||||
onChange={(newValue) => onChange(newValue)}
|
onChange={(newValue) => onChange(newValue)}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user