+
{t('settings.models.check.select_api_key')}
- {maskApiKey(key)}
+
+ {maskApiKey(key)}
+
))}
diff --git a/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/EditModelDrawer.tsx b/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/EditModelDrawer.tsx
index 819fbed3ab..e15d8c8737 100644
--- a/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/EditModelDrawer.tsx
+++ b/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/EditModelDrawer.tsx
@@ -1,12 +1,13 @@
import {
Button,
- DescriptionSwitch,
Input,
Select,
SelectContent,
SelectItem,
SelectTrigger,
- SelectValue
+ SelectValue,
+ Switch,
+ Tooltip
} from '@cherrystudio/ui'
import CopyIcon from '@renderer/components/Icons/CopyIcon'
import { useModelMutations } from '@renderer/hooks/useModel'
@@ -15,7 +16,7 @@ import { getDefaultGroupName } from '@renderer/utils/naming'
import { CURRENCY, type Currency, type EndpointType, type Model } from '@shared/data/types/model'
import { parseUniqueModelId } from '@shared/data/types/model'
import { isNewApiProvider } from '@shared/utils/provider'
-import { ChevronDown, ChevronUp, SaveIcon } from 'lucide-react'
+import { ChevronDown, ChevronUp, CircleHelp, SaveIcon } from 'lucide-react'
import type { FormEvent } from 'react'
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next'
@@ -320,18 +321,20 @@ export default function EditModelDrawer({ providerId, open, model: modelProp, on
endpointTypes
}}
showEndpointType={mode === 'new-api'}
+ horizontal
modelIdDisabled
modelIdAction={
-
+
}
endpointTypeError={endpointTypeTouched ? t('settings.models.add.endpoint_type.required') : undefined}
onModelIdChange={(value) => {
@@ -362,13 +365,18 @@ export default function EditModelDrawer({ providerId, open, model: modelProp, on
{showMoreSettings && (
-
-
+
+
+ {t('settings.models.add.section.capabilities')}
+
+
+
+
@@ -380,14 +388,21 @@ export default function EditModelDrawer({ providerId, open, model: modelProp, on
onMaxInputTokensChange={setMaxInputTokens}
onMaxOutputTokensChange={setMaxOutputTokens}
/>
-
-
-
-
-
+
+
+
+
+
+
+ {
setSupportsStreaming(checked)
@@ -397,9 +412,15 @@ export default function EditModelDrawer({ providerId, open, model: modelProp, on
-
-
-
+
+
+ {t('settings.models.add.section.pricing')}
+
+
+
-
-
+
-
-
- {
- setInputPrice(event.target.value)
- }}
- onBlur={() => autoSave({ inputPrice })}
- />
-
- {currentCurrency} / {t('models.price.million_tokens')}
-
-
-
+
+
+ {
+ setInputPrice(event.target.value)
+ }}
+ onBlur={() => autoSave({ inputPrice })}
+ />
+
+ {currentCurrency} / {t('models.price.million_tokens')}
+
+
+
-
-
- {
- setOutputPrice(event.target.value)
- }}
- onBlur={() => autoSave({ outputPrice })}
- />
-
- {currentCurrency} / {t('models.price.million_tokens')}
-
-
-
+
+
+ {
+ setOutputPrice(event.target.value)
+ }}
+ onBlur={() => autoSave({ outputPrice })}
+ />
+
+ {currentCurrency} / {t('models.price.million_tokens')}
+
+
+
+
diff --git a/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelBasicFields.tsx b/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelBasicFields.tsx
index b5fc7418e3..22dfbcea6d 100644
--- a/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelBasicFields.tsx
+++ b/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelBasicFields.tsx
@@ -14,6 +14,7 @@ interface ModelBasicFieldsProps {
modelIdDisabled?: boolean
modelIdAction?: ReactNode
endpointTypeError?: string
+ horizontal?: boolean
onModelIdChange: (value: string) => void
onNameChange: (value: string) => void
onGroupChange: (value: string) => void
@@ -26,6 +27,7 @@ export function ModelBasicFields({
modelIdDisabled = false,
modelIdAction,
endpointTypeError,
+ horizontal = false,
onModelIdChange,
onNameChange,
onGroupChange,
@@ -38,8 +40,10 @@ export function ModelBasicFields({
-
+ className={drawerClasses.field}
+ horizontal={horizontal}
+ controlClassName={horizontal ? 'w-60' : undefined}>
+
+ className={drawerClasses.field}
+ horizontal={horizontal}
+ controlClassName={horizontal ? 'w-60' : undefined}>
+ className={drawerClasses.field}
+ horizontal={horizontal}
+ controlClassName={horizontal ? 'w-60' : undefined}>
{endpointTypeError}
: null}>
diff --git a/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelCapabilityToggles.tsx b/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelCapabilityToggles.tsx
index ac6d01bee9..3a4a746eb3 100644
--- a/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelCapabilityToggles.tsx
+++ b/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelCapabilityToggles.tsx
@@ -34,7 +34,7 @@ export function ModelCapabilityToggles({
return (
-
+
{t('models.type.select')}
diff --git a/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelContextWindowFields.tsx b/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelContextWindowFields.tsx
index 1d0b6a273e..99097f8504 100644
--- a/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelContextWindowFields.tsx
+++ b/src/renderer/pages/settings/ProviderSettings/ModelList/ModelDrawer/ModelContextWindowFields.tsx
@@ -26,8 +26,10 @@ export function ModelContextWindowFields({
<>
+ controlClassName="w-32">
+ controlClassName="w-32">
+ controlClassName="w-32">
= ({
-
-
- setSearchText(event.target.value)}
- className={modelListClasses.searchInput}
- />
- {searchText ? (
-
- ) : null}
-
+
setSearchText(event.target.value)}
+ onClear={() => setSearchText('')}
+ clearLabel={t('common.clear')}
+ />
{!hasNoModels ? (
= ({ ref, model, disabled, onE