fix: Recalculate token consumption after modifying the message, resolve #1829
This commit is contained in:
parent
de76d3fedc
commit
f8fce871da
@ -6,8 +6,8 @@ import { useMessageStyle, useSettings } from '@renderer/hooks/useSettings'
|
|||||||
import { useTopic } from '@renderer/hooks/useTopic'
|
import { useTopic } from '@renderer/hooks/useTopic'
|
||||||
import { fetchChatCompletion } from '@renderer/services/ApiService'
|
import { fetchChatCompletion } from '@renderer/services/ApiService'
|
||||||
import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService'
|
import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService'
|
||||||
import { getMessageModelId } from '@renderer/services/MessagesService'
|
import { getContextCount, getMessageModelId } from '@renderer/services/MessagesService'
|
||||||
import { estimateMessageUsage } from '@renderer/services/TokenService'
|
import { estimateHistoryTokens, estimateMessageUsage } from '@renderer/services/TokenService'
|
||||||
import { Message, Topic } from '@renderer/types'
|
import { Message, Topic } from '@renderer/types'
|
||||||
import { classNames, runAsyncFunction } from '@renderer/utils'
|
import { classNames, runAsyncFunction } from '@renderer/utils'
|
||||||
import { Divider } from 'antd'
|
import { Divider } from 'antd'
|
||||||
@ -75,13 +75,22 @@ const MessageItem: FC<Props> = ({
|
|||||||
const messageBackground = getMessageBackground(isBubbleStyle, isAssistantMessage)
|
const messageBackground = getMessageBackground(isBubbleStyle, isAssistantMessage)
|
||||||
|
|
||||||
const onEditMessage = useCallback(
|
const onEditMessage = useCallback(
|
||||||
(msg: Message) => {
|
async (msg: Message) => {
|
||||||
|
const usage = await estimateMessageUsage(msg)
|
||||||
|
msg.usage = usage
|
||||||
|
|
||||||
setMessage(msg)
|
setMessage(msg)
|
||||||
const messages = onGetMessages?.()?.map((m) => (m.id === message.id ? msg : m))
|
const messages = onGetMessages?.()?.map((m) => (m.id === message.id ? msg : m))
|
||||||
messages && onSetMessages?.(messages)
|
messages && onSetMessages?.(messages)
|
||||||
topic && db.topics.update(topic.id, { messages })
|
topic && db.topics.update(topic.id, { messages })
|
||||||
|
|
||||||
|
if (messages) {
|
||||||
|
const tokensCount = await estimateHistoryTokens(assistant, messages)
|
||||||
|
const contextCount = getContextCount(assistant, messages)
|
||||||
|
EventEmitter.emit(EVENT_NAMES.ESTIMATED_TOKEN_COUNT, { tokensCount, contextCount })
|
||||||
|
}
|
||||||
},
|
},
|
||||||
[message.id, onGetMessages, onSetMessages, topic]
|
[message.id, onGetMessages, onSetMessages, topic, assistant]
|
||||||
)
|
)
|
||||||
|
|
||||||
const messageHighlightHandler = (highlight: boolean = true) => {
|
const messageHighlightHandler = (highlight: boolean = true) => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user