feat: add error message

This commit is contained in:
kangfenmao 2024-07-09 11:24:59 +08:00
parent 3c70ff4f8e
commit 88aefb6ad1
5 changed files with 28 additions and 20 deletions

View File

@ -1,8 +1,10 @@
import { theme, ThemeConfig } from 'antd'
export const colorPrimary = '#00b96b'
export const AntdThemeConfig: ThemeConfig = {
token: {
colorPrimary: '#00b96b',
colorPrimary,
borderRadius: 5
},
algorithm: [theme.darkAlgorithm]

View File

@ -8,6 +8,7 @@ import { CheckOutlined, PlusOutlined } from '@ant-design/icons'
import { SystemAssistant } from '@renderer/types'
import { getDefaultAssistant } from '@renderer/services/assistant'
import { useAssistants } from '@renderer/hooks/useAssistant'
import { colorPrimary } from '@renderer/config/antd'
const { Title } = Typography
@ -45,7 +46,7 @@ const AppsPage: FC = () => {
<Col span={6} key={group + index} style={{ marginBottom: 16 }}>
<AssistantCard>
<AssistantHeader>
<Title level={5} style={{ marginBottom: 0, color: '#00b96b' }}>
<Title level={5} style={{ marginBottom: 0, color: colorPrimary }}>
{assistant.name}
</Title>
{added && (

View File

@ -94,11 +94,11 @@ const Messages: FC<Props> = ({ assistant, topic }) => {
useEffect(() => hljs.highlightAll(), [messages, lastMessage])
useEffect(() => {
messagesRef.current?.scrollIntoView({ behavior: 'smooth' })
messagesRef.current?.scrollTo({ top: 100000, behavior: 'auto' })
}, [messages])
return (
<Container id="messages" ref={messagesRef}>
<Container id="messages" key={assistant.id} ref={messagesRef}>
{lastMessage && <MessageItem message={lastMessage} />}
{reverse([...messages]).map((message) => (
<MessageItem message={message} key={message.id} showMenu onDeleteMessage={onDeleteMessage} />

View File

@ -1,4 +1,5 @@
import { NavbarCenter } from '@renderer/components/app/Navbar'
import { colorPrimary } from '@renderer/config/antd'
import { useAssistant } from '@renderer/hooks/useAssistant'
import { useProviders } from '@renderer/hooks/useProvider'
import { Assistant } from '@renderer/types'
@ -23,7 +24,7 @@ const Navigation: FC<Props> = ({ activeAssistant }) => {
children: p.models.map((m) => ({
key: m.id,
label: m.name,
style: m.id === model?.id ? { color: '#00b96b' } : undefined,
style: m.id === model?.id ? { color: colorPrimary } : undefined,
onClick: () => setModel(m)
}))
}))

View File

@ -28,15 +28,6 @@ export async function fetchChatCompletion({ messages, topic, assistant, onRespon
const defaultModel = getDefaultModel()
const model = assistant.model || defaultModel
const stream = await openaiProvider.chat.completions.create({
model: model.id,
messages: [
{ role: 'system', content: assistant.prompt },
...takeRight(messages, 5).map((message) => ({ role: message.role, content: message.content }))
],
stream: true
})
const _message: Message = {
id: uuid(),
role: 'assistant',
@ -47,15 +38,28 @@ export async function fetchChatCompletion({ messages, topic, assistant, onRespon
createdAt: dayjs().format('YYYY-MM-DD HH:mm:ss')
}
let content = ''
try {
const stream = await openaiProvider.chat.completions.create({
model: model.id,
messages: [
{ role: 'system', content: assistant.prompt },
...takeRight(messages, 5).map((message) => ({ role: message.role, content: message.content }))
],
stream: true
})
for await (const chunk of stream) {
content = content + (chunk.choices[0]?.delta?.content || '')
onResponse({ ..._message, content })
let content = ''
for await (const chunk of stream) {
content = content + (chunk.choices[0]?.delta?.content || '')
onResponse({ ..._message, content })
}
_message.content = content
} catch (error: any) {
_message.content = `Error: ${error.message}`
}
_message.content = content
EventEmitter.emit(EVENT_NAMES.AI_CHAT_COMPLETION, _message)
return _message