fix: remove filter messages
This commit is contained in:
parent
be081ccf7a
commit
a973c5fb89
@ -1,5 +1,5 @@
|
|||||||
export const DEFAULT_TEMPERATURE = 0.7
|
export const DEFAULT_TEMPERATURE = 0.7
|
||||||
export const DEFAULT_CONEXTCOUNT = 6
|
export const DEFAULT_CONEXTCOUNT = 5
|
||||||
export const DEFAULT_MAX_TOKENS = 4096
|
export const DEFAULT_MAX_TOKENS = 4096
|
||||||
export const FONT_FAMILY =
|
export const FONT_FAMILY =
|
||||||
"Ubuntu, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif"
|
"Ubuntu, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif"
|
||||||
|
|||||||
@ -9,8 +9,8 @@ import { useAssistant } from '@renderer/hooks/useAssistant'
|
|||||||
import useAvatar from '@renderer/hooks/useAvatar'
|
import useAvatar from '@renderer/hooks/useAvatar'
|
||||||
import { useModel } from '@renderer/hooks/useModel'
|
import { useModel } from '@renderer/hooks/useModel'
|
||||||
import { useSettings } from '@renderer/hooks/useSettings'
|
import { useSettings } from '@renderer/hooks/useSettings'
|
||||||
import { Message } from '@renderer/types'
|
import { Message, Model } from '@renderer/types'
|
||||||
import { firstLetter, removeLeadingEmoji } from '@renderer/utils'
|
import { firstLetter, getBriefInfo, removeLeadingEmoji } from '@renderer/utils'
|
||||||
import { Alert, Avatar, Divider } from 'antd'
|
import { Alert, Avatar, Divider } from 'antd'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { upperFirst } from 'lodash'
|
import { upperFirst } from 'lodash'
|
||||||
@ -106,7 +106,7 @@ const MessageItem: FC<Props> = ({ message, index, lastMessage, onDeleteMessage }
|
|||||||
</AvatarWrapper>
|
</AvatarWrapper>
|
||||||
</MessageHeader>
|
</MessageHeader>
|
||||||
<MessageContentContainer style={{ fontFamily, fontSize }}>
|
<MessageContentContainer style={{ fontFamily, fontSize }}>
|
||||||
<MessageContent message={message} />
|
<MessageContent message={message} model={model} />
|
||||||
{!lastMessage && (
|
{!lastMessage && (
|
||||||
<MessageFooter style={{ border: messageBorder, flexDirection: isLastMessage ? 'row-reverse' : undefined }}>
|
<MessageFooter style={{ border: messageBorder, flexDirection: isLastMessage ? 'row-reverse' : undefined }}>
|
||||||
<MessgeTokens message={message} />
|
<MessgeTokens message={message} />
|
||||||
@ -126,7 +126,7 @@ const MessageItem: FC<Props> = ({ message, index, lastMessage, onDeleteMessage }
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const MessageContent: React.FC<{ message: Message }> = ({ message }) => {
|
const MessageContent: React.FC<{ message: Message; model?: Model }> = ({ message, model }) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
|
|
||||||
if (message.status === 'sending') {
|
if (message.status === 'sending') {
|
||||||
@ -148,6 +148,11 @@ const MessageContent: React.FC<{ message: Message }> = ({ message }) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (message.type === '@' && model) {
|
||||||
|
const content = `[@${model.name}](#) ${getBriefInfo(message.content)}`
|
||||||
|
return <Markdown message={{ ...message, content }} />
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Markdown message={message} />
|
<Markdown message={message} />
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { EVENT_NAMES, EventEmitter } from '@renderer/services/event'
|
|||||||
import { deleteMessageFiles, filterMessages, getContextCount } from '@renderer/services/messages'
|
import { deleteMessageFiles, filterMessages, getContextCount } from '@renderer/services/messages'
|
||||||
import { estimateHistoryTokens, estimateMessageUsage } from '@renderer/services/tokens'
|
import { estimateHistoryTokens, estimateMessageUsage } from '@renderer/services/tokens'
|
||||||
import { Assistant, Message, Model, Topic } from '@renderer/types'
|
import { Assistant, Message, Model, Topic } from '@renderer/types'
|
||||||
import { captureScrollableDiv, getBriefInfo, runAsyncFunction, uuid } from '@renderer/utils'
|
import { captureScrollableDiv, runAsyncFunction, uuid } from '@renderer/utils'
|
||||||
import { t } from 'i18next'
|
import { t } from 'i18next'
|
||||||
import { flatten, last, reverse, take } from 'lodash'
|
import { flatten, last, reverse, take } from 'lodash'
|
||||||
import { FC, useCallback, useEffect, useRef, useState } from 'react'
|
import { FC, useCallback, useEffect, useRef, useState } from 'react'
|
||||||
@ -73,7 +73,14 @@ const Messages: FC<Props> = ({ assistant, topic, setActiveTopic }) => {
|
|||||||
const unsubscribes = [
|
const unsubscribes = [
|
||||||
EventEmitter.on(EVENT_NAMES.SEND_MESSAGE, async (msg: Message) => {
|
EventEmitter.on(EVENT_NAMES.SEND_MESSAGE, async (msg: Message) => {
|
||||||
await onSendMessage(msg)
|
await onSendMessage(msg)
|
||||||
containerRef.current?.scrollTo({ top: containerRef.current.scrollHeight, behavior: 'auto' })
|
|
||||||
|
// Scroll to bottom
|
||||||
|
setTimeout(
|
||||||
|
() => containerRef.current?.scrollTo({ top: containerRef.current.scrollHeight, behavior: 'auto' }),
|
||||||
|
10
|
||||||
|
)
|
||||||
|
|
||||||
|
// Fetch completion
|
||||||
fetchChatCompletion({
|
fetchChatCompletion({
|
||||||
assistant,
|
assistant,
|
||||||
messages: [...messages, msg],
|
messages: [...messages, msg],
|
||||||
@ -89,8 +96,12 @@ const Messages: FC<Props> = ({ assistant, topic, setActiveTopic }) => {
|
|||||||
EventEmitter.on(EVENT_NAMES.REGENERATE_MESSAGE, async (model: Model) => {
|
EventEmitter.on(EVENT_NAMES.REGENERATE_MESSAGE, async (model: Model) => {
|
||||||
const lastUserMessage = last(filterMessages(messages).filter((m) => m.role === 'user'))
|
const lastUserMessage = last(filterMessages(messages).filter((m) => m.role === 'user'))
|
||||||
if (lastUserMessage) {
|
if (lastUserMessage) {
|
||||||
const content = `[@${model.name}](#) ${getBriefInfo(lastUserMessage.content)}`
|
onSendMessage({
|
||||||
onSendMessage({ ...lastUserMessage, id: uuid(), type: '@', content })
|
...lastUserMessage,
|
||||||
|
id: uuid(),
|
||||||
|
type: '@',
|
||||||
|
modelId: model.id
|
||||||
|
})
|
||||||
fetchChatCompletion({
|
fetchChatCompletion({
|
||||||
assistant,
|
assistant,
|
||||||
topic,
|
topic,
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { MessageCreateParamsNonStreaming, MessageParam } from '@anthropic-ai/sdk
|
|||||||
import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant'
|
import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant'
|
||||||
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/assistant'
|
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/assistant'
|
||||||
import { EVENT_NAMES } from '@renderer/services/event'
|
import { EVENT_NAMES } from '@renderer/services/event'
|
||||||
import { filterContextMessages, filterMessages } from '@renderer/services/messages'
|
import { filterContextMessages } from '@renderer/services/messages'
|
||||||
import { Assistant, FileTypes, Message, Provider, Suggestion } from '@renderer/types'
|
import { Assistant, FileTypes, Message, Provider, Suggestion } from '@renderer/types'
|
||||||
import { first, flatten, sum, takeRight } from 'lodash'
|
import { first, flatten, sum, takeRight } from 'lodash'
|
||||||
import OpenAI from 'openai'
|
import OpenAI from 'openai'
|
||||||
@ -58,7 +58,7 @@ export default class AnthropicProvider extends BaseProvider {
|
|||||||
const { contextCount, maxTokens, streamOutput } = getAssistantSettings(assistant)
|
const { contextCount, maxTokens, streamOutput } = getAssistantSettings(assistant)
|
||||||
|
|
||||||
const userMessagesParams: MessageParam[] = []
|
const userMessagesParams: MessageParam[] = []
|
||||||
const _messages = filterMessages(filterContextMessages(takeRight(messages, contextCount + 2)))
|
const _messages = filterContextMessages(takeRight(messages, contextCount + 2))
|
||||||
|
|
||||||
onFilterMessages(_messages)
|
onFilterMessages(_messages)
|
||||||
|
|
||||||
|
|||||||
@ -9,10 +9,10 @@ import {
|
|||||||
} from '@google/generative-ai'
|
} from '@google/generative-ai'
|
||||||
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/assistant'
|
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/assistant'
|
||||||
import { EVENT_NAMES } from '@renderer/services/event'
|
import { EVENT_NAMES } from '@renderer/services/event'
|
||||||
import { filterContextMessages, filterMessages } from '@renderer/services/messages'
|
import { filterContextMessages } from '@renderer/services/messages'
|
||||||
import { Assistant, FileTypes, Message, Provider, Suggestion } from '@renderer/types'
|
import { Assistant, FileTypes, Message, Provider, Suggestion } from '@renderer/types'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { isEmpty, takeRight } from 'lodash'
|
import { first, isEmpty, takeRight } from 'lodash'
|
||||||
import OpenAI from 'openai'
|
import OpenAI from 'openai'
|
||||||
|
|
||||||
import BaseProvider from './BaseProvider'
|
import BaseProvider from './BaseProvider'
|
||||||
@ -59,9 +59,13 @@ export default class GeminiProvider extends BaseProvider {
|
|||||||
const model = assistant.model || defaultModel
|
const model = assistant.model || defaultModel
|
||||||
const { contextCount, maxTokens, streamOutput } = getAssistantSettings(assistant)
|
const { contextCount, maxTokens, streamOutput } = getAssistantSettings(assistant)
|
||||||
|
|
||||||
const userMessages = filterMessages(filterContextMessages(takeRight(messages, contextCount + 1)))
|
const userMessages = filterContextMessages(takeRight(messages, contextCount + 2))
|
||||||
onFilterMessages(userMessages)
|
onFilterMessages(userMessages)
|
||||||
|
|
||||||
|
if (first(userMessages)?.role === 'assistant') {
|
||||||
|
userMessages.shift()
|
||||||
|
}
|
||||||
|
|
||||||
const userLastMessage = userMessages.pop()
|
const userLastMessage = userMessages.pop()
|
||||||
|
|
||||||
const history: Content[] = []
|
const history: Content[] = []
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { isLocalAi } from '@renderer/config/env'
|
|||||||
import { isVisionModel } from '@renderer/config/models'
|
import { isVisionModel } from '@renderer/config/models'
|
||||||
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/assistant'
|
import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/assistant'
|
||||||
import { EVENT_NAMES } from '@renderer/services/event'
|
import { EVENT_NAMES } from '@renderer/services/event'
|
||||||
import { filterContextMessages, filterMessages } from '@renderer/services/messages'
|
import { filterContextMessages } from '@renderer/services/messages'
|
||||||
import { Assistant, FileTypes, Message, Model, Provider, Suggestion } from '@renderer/types'
|
import { Assistant, FileTypes, Message, Model, Provider, Suggestion } from '@renderer/types'
|
||||||
import { removeQuotes } from '@renderer/utils'
|
import { removeQuotes } from '@renderer/utils'
|
||||||
import { first, takeRight } from 'lodash'
|
import { first, takeRight } from 'lodash'
|
||||||
@ -117,7 +117,7 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
const systemMessage = assistant.prompt ? { role: 'system', content: assistant.prompt } : undefined
|
const systemMessage = assistant.prompt ? { role: 'system', content: assistant.prompt } : undefined
|
||||||
const userMessages: ChatCompletionMessageParam[] = []
|
const userMessages: ChatCompletionMessageParam[] = []
|
||||||
|
|
||||||
const _messages = filterMessages(filterContextMessages(takeRight(messages, contextCount + 1)))
|
const _messages = filterContextMessages(takeRight(messages, contextCount + 1))
|
||||||
onFilterMessages(_messages)
|
onFilterMessages(_messages)
|
||||||
|
|
||||||
for (const message of _messages) {
|
for (const message of _messages) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user