feat: input status use tag

This commit is contained in:
kangfenmao 2024-08-05 13:00:18 +08:00
parent b0a3d705ff
commit 7ffa42caa0
4 changed files with 54 additions and 25 deletions

View File

@ -71,6 +71,8 @@ const resources = {
'input.send': 'Send', 'input.send': 'Send',
'input.pause': 'Pause', 'input.pause': 'Pause',
'input.settings': 'Settings', 'input.settings': 'Settings',
'input.context_count.tip': 'Context Count',
'input.estimated_tokens.tip': 'Estimated tokens',
'settings.temperature': 'Temperature', 'settings.temperature': 'Temperature',
'settings.temperature.tip': 'settings.temperature.tip':
'Lower values make the model more creative and unpredictable, while higher values make it more deterministic and precise.', 'Lower values make the model more creative and unpredictable, while higher values make it more deterministic and precise.',
@ -256,6 +258,8 @@ const resources = {
'input.send': '发送', 'input.send': '发送',
'input.pause': '暂停', 'input.pause': '暂停',
'input.settings': '设置', 'input.settings': '设置',
'input.context_count.tip': '上下文数',
'input.estimated_tokens.tip': '预估 token 数',
'settings.temperature': '模型温度', 'settings.temperature': '模型温度',
'settings.temperature.tip': 'settings.temperature.tip':
'模型生成文本的随机程度。值越大,回复内容越赋有多样性、创造性、随机性;设为 0 根据事实回答。日常聊天建议设置为 0.7', '模型生成文本的随机程度。值越大,回复内容越赋有多样性、创造性、随机性;设为 0 根据事实回答。日常聊天建议设置为 0.7',

View File

@ -1,18 +1,15 @@
import { CodeSandboxOutlined } from '@ant-design/icons'
import { NavbarCenter } from '@renderer/components/app/Navbar' import { NavbarCenter } from '@renderer/components/app/Navbar'
import { isMac } from '@renderer/config/constant' import { isMac } from '@renderer/config/constant'
import { useAssistant } from '@renderer/hooks/useAssistant' import { useAssistant } from '@renderer/hooks/useAssistant'
import { useShowAssistants } from '@renderer/hooks/useStore' import { useShowAssistants } from '@renderer/hooks/useStore'
import { Assistant } from '@renderer/types' import { Assistant } from '@renderer/types'
import { removeLeadingEmoji } from '@renderer/utils' import { removeLeadingEmoji } from '@renderer/utils'
import { Button } from 'antd'
import { upperFirst } from 'lodash'
import { FC } from 'react' import { FC } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import styled from 'styled-components' import styled from 'styled-components'
import { NewButton } from '../HomePage' import { NewButton } from '../HomePage'
import SelectModelDropdown from './SelectModelDropdown' import SelectModelButton from './SelectModelButton'
interface Props { interface Props {
activeAssistant: Assistant activeAssistant: Assistant
@ -20,7 +17,6 @@ interface Props {
const NavigationCenter: FC<Props> = ({ activeAssistant }) => { const NavigationCenter: FC<Props> = ({ activeAssistant }) => {
const { assistant } = useAssistant(activeAssistant.id) const { assistant } = useAssistant(activeAssistant.id)
const { model, setModel } = useAssistant(activeAssistant.id)
const { t } = useTranslation() const { t } = useTranslation()
const { showAssistants, toggleShowAssistants } = useShowAssistants() const { showAssistants, toggleShowAssistants } = useShowAssistants()
@ -32,12 +28,7 @@ const NavigationCenter: FC<Props> = ({ activeAssistant }) => {
</NewButton> </NewButton>
)} )}
<AssistantName>{removeLeadingEmoji(assistant?.name) || t('assistant.default.name')}</AssistantName> <AssistantName>{removeLeadingEmoji(assistant?.name) || t('assistant.default.name')}</AssistantName>
<SelectModelDropdown model={model} onSelect={setModel}> <SelectModelButton assistant={assistant} />
<DropdownButton size="small" type="primary" ghost>
<CodeSandboxOutlined />
<ModelName>{model ? upperFirst(model.name) : t('button.select_model')}</ModelName>
</DropdownButton>
</SelectModelDropdown>
</NavbarCenter> </NavbarCenter>
) )
} }
@ -48,15 +39,4 @@ const AssistantName = styled.span`
margin-right: 10px; margin-right: 10px;
` `
const DropdownButton = styled(Button)`
font-size: 11px;
border-radius: 15px;
padding: 0 8px;
`
const ModelName = styled.span`
margin-left: -2px;
font-weight: bolder;
`
export default NavigationCenter export default NavigationCenter

View File

@ -0,0 +1,41 @@
import { getModelLogo } from '@renderer/config/provider'
import { useAssistant } from '@renderer/hooks/useAssistant'
import { Assistant } from '@renderer/types'
import { Avatar, Button } from 'antd'
import { upperFirst } from 'lodash'
import { FC } from 'react'
import { useTranslation } from 'react-i18next'
import styled from 'styled-components'
import SelectModelDropdown from './SelectModelDropdown'
interface Props {
assistant: Assistant
}
const SelectModelButton: FC<Props> = ({ assistant }) => {
const { model, setModel } = useAssistant(assistant.id)
const { t } = useTranslation()
return (
<SelectModelDropdown model={model} onSelect={setModel}>
<DropdownButton size="small" type="default">
<Avatar src={getModelLogo(model?.id || '')} style={{ width: 20, height: 20 }} />
<ModelName>{model ? upperFirst(model.name) : t('button.select_model')}</ModelName>
</DropdownButton>
</SelectModelDropdown>
)
}
const DropdownButton = styled(Button)`
font-size: 11px;
border-radius: 15px;
padding: 12px 8px 12px 3px;
`
const ModelName = styled.span`
margin-left: -2px;
font-weight: bolder;
`
export default SelectModelButton

View File

@ -17,7 +17,7 @@ import store, { useAppSelector } from '@renderer/store'
import { setGenerating } from '@renderer/store/runtime' import { setGenerating } from '@renderer/store/runtime'
import { Assistant, Message, Topic } from '@renderer/types' import { Assistant, Message, Topic } from '@renderer/types'
import { estimateInputTokenCount, uuid } from '@renderer/utils' import { estimateInputTokenCount, uuid } from '@renderer/utils'
import { Button, Popconfirm, Tooltip } from 'antd' import { Button, Popconfirm, Tag, Tooltip } from 'antd'
import TextArea, { TextAreaRef } from 'antd/es/input/TextArea' import TextArea, { TextAreaRef } from 'antd/es/input/TextArea'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { debounce, isEmpty } from 'lodash' import { debounce, isEmpty } from 'lodash'
@ -178,8 +178,12 @@ const Inputbar: FC<Props> = ({ assistant, setActiveTopic }) => {
</Tooltip> </Tooltip>
{showInputEstimatedTokens && ( {showInputEstimatedTokens && (
<TextCount> <TextCount>
<HistoryOutlined /> {assistant?.settings?.contextCount ?? DEFAULT_CONEXTCOUNT} | T <Tooltip title={t('assistant.input.context_count.tip')}>
{`${inputTokenCount}/${estimateTokenCount}`} <Tag style={{ cursor: 'pointer' }}>{assistant?.settings?.contextCount ?? DEFAULT_CONEXTCOUNT}</Tag>
</Tooltip>
<Tooltip title={t('assistant.input.estimated_tokens.tip')}>
<Tag style={{ cursor: 'pointer' }}>{`${inputTokenCount} / ${estimateTokenCount}`}</Tag>
</Tooltip>
</TextCount> </TextCount>
)} )}
</ToolbarMenu> </ToolbarMenu>