refactor: rename conversation to messages
This commit is contained in:
parent
15d6686bf5
commit
9212b56cdf
@ -53,14 +53,22 @@ const AppsPage: FC = () => {
|
|||||||
<Title level={5} style={{ marginBottom: 0, color: '#00b96b' }}>
|
<Title level={5} style={{ marginBottom: 0, color: '#00b96b' }}>
|
||||||
{assistant.name}
|
{assistant.name}
|
||||||
</Title>
|
</Title>
|
||||||
{added && <Button type="primary" shape="circle" size="small" icon={<CheckOutlined />} />}
|
{added && (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
shape="circle"
|
||||||
|
size="small"
|
||||||
|
icon={<CheckOutlined style={{ fontSize: 12 }} />}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
{!added && (
|
{!added && (
|
||||||
<Tooltip placement="top" title=" Add to assistant list " arrow>
|
<Tooltip placement="top" title=" Add to assistant list " arrow>
|
||||||
<Button
|
<Button
|
||||||
type="default"
|
type="default"
|
||||||
shape="circle"
|
shape="circle"
|
||||||
size="small"
|
size="small"
|
||||||
icon={<PlusOutlined />}
|
style={{ padding: 0 }}
|
||||||
|
icon={<PlusOutlined style={{ fontSize: 12 }} />}
|
||||||
onClick={() => onAddAssistant(assistant)}
|
onClick={() => onAddAssistant(assistant)}
|
||||||
/>
|
/>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { Assistant } from '@renderer/types'
|
|||||||
import { FC } from 'react'
|
import { FC } from 'react'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
import Inputbar from './Inputbar'
|
import Inputbar from './Inputbar'
|
||||||
import Conversations from './Conversations'
|
import Messages from './Messages'
|
||||||
import { Flex } from 'antd'
|
import { Flex } from 'antd'
|
||||||
import TopicList from './TopicList'
|
import TopicList from './TopicList'
|
||||||
import { useAssistant } from '@renderer/hooks/useAssistant'
|
import { useAssistant } from '@renderer/hooks/useAssistant'
|
||||||
@ -23,7 +23,7 @@ const Chat: FC<Props> = (props) => {
|
|||||||
return (
|
return (
|
||||||
<Container id="chat">
|
<Container id="chat">
|
||||||
<Flex vertical flex={1} justify="space-between">
|
<Flex vertical flex={1} justify="space-between">
|
||||||
<Conversations assistant={assistant} topic={activeTopic} />
|
<Messages assistant={assistant} topic={activeTopic} />
|
||||||
<Inputbar assistant={assistant} setActiveTopic={setActiveTopic} />
|
<Inputbar assistant={assistant} setActiveTopic={setActiveTopic} />
|
||||||
</Flex>
|
</Flex>
|
||||||
<TopicList assistant={assistant} activeTopic={activeTopic} setActiveTopic={setActiveTopic} />
|
<TopicList assistant={assistant} activeTopic={activeTopic} setActiveTopic={setActiveTopic} />
|
||||||
|
|||||||
@ -52,7 +52,7 @@ const Inputbar: FC<Props> = ({ assistant, setActiveTopic }) => {
|
|||||||
}, [addTopic, setActiveTopic])
|
}, [addTopic, setActiveTopic])
|
||||||
|
|
||||||
const clearTopic = () => {
|
const clearTopic = () => {
|
||||||
EventEmitter.emit(EVENT_NAMES.CLEAR_CONVERSATION)
|
EventEmitter.emit(EVENT_NAMES.CLEAR_MESSAGES)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Command or Ctrl + N create new topic
|
// Command or Ctrl + N create new topic
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import styled from 'styled-components'
|
|||||||
import MessageItem from './Message'
|
import MessageItem from './Message'
|
||||||
import { reverse } from 'lodash'
|
import { reverse } from 'lodash'
|
||||||
import hljs from 'highlight.js'
|
import hljs from 'highlight.js'
|
||||||
import { fetchChatCompletion, fetchConversationSummary } from '@renderer/services/api'
|
import { fetchChatCompletion, fetchMessagesSummary } from '@renderer/services/api'
|
||||||
import { useAssistant } from '@renderer/hooks/useAssistant'
|
import { useAssistant } from '@renderer/hooks/useAssistant'
|
||||||
import { DEFAULT_TOPIC_NAME } from '@renderer/config/constant'
|
import { DEFAULT_TOPIC_NAME } from '@renderer/config/constant'
|
||||||
import { runAsyncFunction } from '@renderer/utils'
|
import { runAsyncFunction } from '@renderer/utils'
|
||||||
@ -18,7 +18,7 @@ interface Props {
|
|||||||
topic: Topic
|
topic: Topic
|
||||||
}
|
}
|
||||||
|
|
||||||
const Conversations: FC<Props> = ({ assistant, topic }) => {
|
const Messages: FC<Props> = ({ assistant, topic }) => {
|
||||||
const [messages, setMessages] = useState<Message[]>([])
|
const [messages, setMessages] = useState<Message[]>([])
|
||||||
const [lastMessage, setLastMessage] = useState<Message | null>(null)
|
const [lastMessage, setLastMessage] = useState<Message | null>(null)
|
||||||
const { updateTopic } = useAssistant(assistant.id)
|
const { updateTopic } = useAssistant(assistant.id)
|
||||||
@ -47,7 +47,7 @@ const Conversations: FC<Props> = ({ assistant, topic }) => {
|
|||||||
|
|
||||||
const autoRenameTopic = useCallback(async () => {
|
const autoRenameTopic = useCallback(async () => {
|
||||||
if (topic.name === DEFAULT_TOPIC_NAME && messages.length >= 2) {
|
if (topic.name === DEFAULT_TOPIC_NAME && messages.length >= 2) {
|
||||||
const summaryText = await fetchConversationSummary({ messages, assistant })
|
const summaryText = await fetchMessagesSummary({ messages, assistant })
|
||||||
summaryText && updateTopic({ ...topic, name: summaryText })
|
summaryText && updateTopic({ ...topic, name: summaryText })
|
||||||
}
|
}
|
||||||
}, [assistant, messages, topic, updateTopic])
|
}, [assistant, messages, topic, updateTopic])
|
||||||
@ -65,7 +65,7 @@ const Conversations: FC<Props> = ({ assistant, topic }) => {
|
|||||||
setTimeout(() => EventEmitter.emit(EVENT_NAMES.AI_AUTO_RENAME), 100)
|
setTimeout(() => EventEmitter.emit(EVENT_NAMES.AI_AUTO_RENAME), 100)
|
||||||
}),
|
}),
|
||||||
EventEmitter.on(EVENT_NAMES.AI_AUTO_RENAME, autoRenameTopic),
|
EventEmitter.on(EVENT_NAMES.AI_AUTO_RENAME, autoRenameTopic),
|
||||||
EventEmitter.on(EVENT_NAMES.CLEAR_CONVERSATION, () => {
|
EventEmitter.on(EVENT_NAMES.CLEAR_MESSAGES, () => {
|
||||||
setMessages([])
|
setMessages([])
|
||||||
updateTopic({ ...topic, messages: [] })
|
updateTopic({ ...topic, messages: [] })
|
||||||
LocalStorage.clearTopicMessages(topic.id)
|
LocalStorage.clearTopicMessages(topic.id)
|
||||||
@ -105,4 +105,4 @@ const Container = styled.div`
|
|||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
export default Conversations
|
export default Messages
|
||||||
@ -1,7 +1,7 @@
|
|||||||
import PromptPopup from '@renderer/components/Popups/PromptPopup'
|
import PromptPopup from '@renderer/components/Popups/PromptPopup'
|
||||||
import { useAssistant } from '@renderer/hooks/useAssistant'
|
import { useAssistant } from '@renderer/hooks/useAssistant'
|
||||||
import { useShowRightSidebar } from '@renderer/hooks/useStore'
|
import { useShowRightSidebar } from '@renderer/hooks/useStore'
|
||||||
import { fetchConversationSummary } from '@renderer/services/api'
|
import { fetchMessagesSummary } from '@renderer/services/api'
|
||||||
import { Assistant, Topic } from '@renderer/types'
|
import { Assistant, Topic } from '@renderer/types'
|
||||||
import { Button, Dropdown, MenuProps, Popconfirm } from 'antd'
|
import { Button, Dropdown, MenuProps, Popconfirm } from 'antd'
|
||||||
import { FC, useRef } from 'react'
|
import { FC, useRef } from 'react'
|
||||||
@ -29,7 +29,7 @@ const TopicList: FC<Props> = ({ assistant, activeTopic, setActiveTopic }) => {
|
|||||||
if (currentTopic.current) {
|
if (currentTopic.current) {
|
||||||
const messages = await LocalStorage.getTopicMessages(currentTopic.current.id)
|
const messages = await LocalStorage.getTopicMessages(currentTopic.current.id)
|
||||||
if (messages.length >= 2) {
|
if (messages.length >= 2) {
|
||||||
const summaryText = await fetchConversationSummary({ messages, assistant })
|
const summaryText = await fetchMessagesSummary({ messages, assistant })
|
||||||
if (summaryText) {
|
if (summaryText) {
|
||||||
updateTopic({ ...currentTopic.current, name: summaryText })
|
updateTopic({ ...currentTopic.current, name: summaryText })
|
||||||
}
|
}
|
||||||
@ -124,6 +124,9 @@ const TopicListItem = styled.div`
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--color-background-soft);
|
background-color: var(--color-background-soft);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,12 +58,12 @@ export async function fetchChatCompletion({ message, topic, assistant, onRespons
|
|||||||
return _message
|
return _message
|
||||||
}
|
}
|
||||||
|
|
||||||
interface FetchConversationSummaryParams {
|
interface FetchMessagesSummaryParams {
|
||||||
messages: Message[]
|
messages: Message[]
|
||||||
assistant: Assistant
|
assistant: Assistant
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function fetchConversationSummary({ messages, assistant }: FetchConversationSummaryParams) {
|
export async function fetchMessagesSummary({ messages, assistant }: FetchMessagesSummaryParams) {
|
||||||
const provider = getAssistantProvider(assistant)
|
const provider = getAssistantProvider(assistant)
|
||||||
const openaiProvider = getOpenAiProvider(provider)
|
const openaiProvider = getOpenAiProvider(provider)
|
||||||
const defaultModel = getDefaultModel()
|
const defaultModel = getDefaultModel()
|
||||||
|
|||||||
@ -6,7 +6,7 @@ export function getDefaultAssistant(): Assistant {
|
|||||||
return {
|
return {
|
||||||
id: 'default',
|
id: 'default',
|
||||||
name: 'Default Assistant',
|
name: 'Default Assistant',
|
||||||
description: "Hello, I'm Default Assistant.",
|
description: "Hello, I'm Default Assistant. You can start chatting with me right away",
|
||||||
prompt: '',
|
prompt: '',
|
||||||
topics: [getDefaultTopic()]
|
topics: [getDefaultTopic()]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,6 @@ export const EVENT_NAMES = {
|
|||||||
SEND_MESSAGE: 'SEND_MESSAGE',
|
SEND_MESSAGE: 'SEND_MESSAGE',
|
||||||
AI_CHAT_COMPLETION: 'AI_CHAT_COMPLETION',
|
AI_CHAT_COMPLETION: 'AI_CHAT_COMPLETION',
|
||||||
AI_AUTO_RENAME: 'AI_AUTO_RENAME',
|
AI_AUTO_RENAME: 'AI_AUTO_RENAME',
|
||||||
CLEAR_CONVERSATION: 'CLEAR_CONVERSATION',
|
CLEAR_MESSAGES: 'CLEAR_MESSAGES',
|
||||||
ADD_ASSISTANT: 'ADD_ASSISTANT'
|
ADD_ASSISTANT: 'ADD_ASSISTANT'
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user