diff --git a/src/renderer/src/config/antd.ts b/src/renderer/src/config/antd.ts
index dfb57ee5..1f640c97 100644
--- a/src/renderer/src/config/antd.ts
+++ b/src/renderer/src/config/antd.ts
@@ -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]
diff --git a/src/renderer/src/pages/apps/AppsPage.tsx b/src/renderer/src/pages/apps/AppsPage.tsx
index a75164e7..0b5703af 100644
--- a/src/renderer/src/pages/apps/AppsPage.tsx
+++ b/src/renderer/src/pages/apps/AppsPage.tsx
@@ -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 = () => {
-
+
{assistant.name}
{added && (
diff --git a/src/renderer/src/pages/home/components/Messages.tsx b/src/renderer/src/pages/home/components/Messages.tsx
index 604aabe5..4f373a80 100644
--- a/src/renderer/src/pages/home/components/Messages.tsx
+++ b/src/renderer/src/pages/home/components/Messages.tsx
@@ -94,11 +94,11 @@ const Messages: FC = ({ assistant, topic }) => {
useEffect(() => hljs.highlightAll(), [messages, lastMessage])
useEffect(() => {
- messagesRef.current?.scrollIntoView({ behavior: 'smooth' })
+ messagesRef.current?.scrollTo({ top: 100000, behavior: 'auto' })
}, [messages])
return (
-
+
{lastMessage && }
{reverse([...messages]).map((message) => (
diff --git a/src/renderer/src/pages/home/components/Navigation.tsx b/src/renderer/src/pages/home/components/Navigation.tsx
index e30756d4..d743f188 100644
--- a/src/renderer/src/pages/home/components/Navigation.tsx
+++ b/src/renderer/src/pages/home/components/Navigation.tsx
@@ -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 = ({ 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)
}))
}))
diff --git a/src/renderer/src/services/api.ts b/src/renderer/src/services/api.ts
index 98d6c233..b7f95bd8 100644
--- a/src/renderer/src/services/api.ts
+++ b/src/renderer/src/services/api.ts
@@ -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