Sfoglia il codice sorgente

feat: enchance chat user experience (#660)

tags/0.3.11
Joel 2 anni fa
parent
commit
eae670ea4a
Nessun account collegato all'indirizzo email del committer

+ 6
- 2
web/app/components/app/chat/thought/index.tsx Vedi File

@@ -45,8 +45,12 @@ const Thought: FC<IThoughtProps> = ({
return t('explore.universalChat.thought.res.dataset').replace('{datasetName}', `<span class="text-gray-700">${datasetName}</span>`)
case 'web_reader':
return t(`explore.universalChat.thought.res.webReader.${!input.cursor ? 'normal' : 'hasPageInfo'}`).replace('{url}', `<a href="${input.url}" class="text-[#155EEF]">${input.url}</a>`)
default: // google, wikipedia
return t('explore.universalChat.thought.res.search', { query: input.query })
case 'google_search':
return t('explore.universalChat.thought.res.google', { query: input.query })
case 'wikipedia':
return t('explore.universalChat.thought.res.wikipedia', { query: input.query })
default:
return `Unknown tool: ${item.tool}`
}
}
catch (error) {

+ 33
- 4
web/app/components/explore/universal-chat/index.tsx Vedi File

@@ -47,6 +47,28 @@ const DEFAULT_PLUGIN = {
web_reader: true,
wikipedia: true,
}
const CONFIG_KEY = 'universal-chat-config'
type CONFIG = {
modelId: string
plugin: {
google_search: boolean
web_reader: boolean
wikipedia: boolean
}
}
let prevConfig: null | CONFIG = localStorage.getItem(CONFIG_KEY) ? JSON.parse(localStorage.getItem(CONFIG_KEY) as string) as CONFIG : null
const setPrevConfig = (config: CONFIG) => {
prevConfig = config
localStorage.setItem(CONFIG_KEY, JSON.stringify(prevConfig))
}
const getInitConfig = (type: 'model' | 'plugin') => {
if (type === 'model')
return prevConfig?.modelId || DEFAULT_MODEL_ID

if (type === 'plugin')
return prevConfig?.plugin || DEFAULT_PLUGIN
}

export type IMainProps = {}

const Main: FC<IMainProps> = () => {
@@ -415,6 +437,13 @@ const Main: FC<IMainProps> = () => {
const [errorHappened, setErrorHappened] = useState(false)
const [isResponsingConIsCurrCon, setIsResponsingConCurrCon, getIsResponsingConIsCurrCon] = useGetState(true)
const handleSend = async (message: string) => {
if (isNewConversation) {
setPrevConfig({
modelId,
plugin: plugins as any,
})
}

if (isResponsing) {
notify({ type: 'info', message: t('appDebug.errorMessage.waitForResponse') })
return
@@ -598,10 +627,10 @@ const Main: FC<IMainProps> = () => {
)
}

const [modelId, setModeId] = useState(DEFAULT_MODEL_ID)
const [modelId, setModeId] = useState<string>(getInitConfig('model') as string)
// const currModel = MODEL_LIST.find(item => item.id === modelId)

const [plugins, setPlugins] = useState<Record<string, boolean>>(DEFAULT_PLUGIN)
const [plugins, setPlugins] = useState<Record<string, boolean>>(getInitConfig('plugin') as Record<string, boolean>)
const handlePluginsChange = (key: string, value: boolean) => {
setPlugins({
...plugins,
@@ -610,8 +639,8 @@ const Main: FC<IMainProps> = () => {
}
const [dataSets, setDateSets] = useState<DataSet[]>([])
const configSetDefaultValue = () => {
setModeId(DEFAULT_MODEL_ID)
setPlugins(DEFAULT_PLUGIN)
setModeId(getInitConfig('model') as string)
setPlugins(getInitConfig('plugin') as any)
setDateSets([])
}
const isCurrConversationPinned = !!pinnedConversationList.find(item => item.id === currConversationId)

+ 2
- 1
web/i18n/lang/explore.en.ts Vedi File

@@ -66,7 +66,8 @@ const translation = {
normal: 'Reading {url}',
hasPageInfo: 'Reading next page of {url}',
},
search: 'Searching {{query}}',
google: 'Searching Google {{query}}',
wikipedia: 'Searching Wikipedia {{query}}',
dataset: 'Retrieving dataset {datasetName}',
},
},

+ 2
- 1
web/i18n/lang/explore.zh.ts Vedi File

@@ -66,7 +66,8 @@ const translation = {
normal: '解析链接 {url}',
hasPageInfo: '解析链接 {url} 的下一页',
},
search: '搜索 {{query}}',
google: '搜索谷歌 {{query}}',
wikipedia: '搜索维基百科 {{query}}',
dataset: '检索数据集 {datasetName}',
},
},

Loading…
Annulla
Salva