fix: filter empty user messages
This commit is contained in:
parent
5a0927393d
commit
30a082b979
@ -56,5 +56,4 @@ electronDownload:
|
|||||||
afterSign: scripts/notarize.js
|
afterSign: scripts/notarize.js
|
||||||
releaseInfo:
|
releaseInfo:
|
||||||
releaseNotes: |
|
releaseNotes: |
|
||||||
支持保存自定义智能体
|
错误修复,优化体验
|
||||||
修复话题重命名的问题
|
|
||||||
|
|||||||
@ -212,8 +212,7 @@ const resources = {
|
|||||||
'keep_alive_time.description': 'The time in minutes to keep the connection alive, default is 5 minutes.'
|
'keep_alive_time.description': 'The time in minutes to keep the connection alive, default is 5 minutes.'
|
||||||
},
|
},
|
||||||
error: {
|
error: {
|
||||||
'chat.response':
|
'chat.response': 'Something went wrong. Please check if you have set your API key in the Settings > Providers'
|
||||||
'Something went wrong. Please check your API key in settings > providers, or check your proxy in Settings > General > Proxy'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -427,7 +426,7 @@ const resources = {
|
|||||||
'keep_alive_time.description': '对话后模型在内存中保持的时间(默认:5分钟)'
|
'keep_alive_time.description': '对话后模型在内存中保持的时间(默认:5分钟)'
|
||||||
},
|
},
|
||||||
error: {
|
error: {
|
||||||
'chat.response': '出错了,这通常是由于没有正确配置 API 密钥或代理导致的, 请前往设置 > 模型提供商中配置 API 密钥'
|
'chat.response': '出错了,如果没有配置 API 密钥,请前往设置 > 模型提供商中配置密钥'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useAssistant } from '@renderer/hooks/useAssistant'
|
|||||||
import { useProviderByAssistant } from '@renderer/hooks/useProvider'
|
import { useProviderByAssistant } from '@renderer/hooks/useProvider'
|
||||||
import { fetchChatCompletion, fetchMessagesSummary } from '@renderer/services/api'
|
import { fetchChatCompletion, fetchMessagesSummary } from '@renderer/services/api'
|
||||||
import { EVENT_NAMES, EventEmitter } from '@renderer/services/event'
|
import { EVENT_NAMES, EventEmitter } from '@renderer/services/event'
|
||||||
import { estimateHistoryTokenCount, filterAtMessages } from '@renderer/services/messages'
|
import { estimateHistoryTokenCount, filterMessages } from '@renderer/services/messages'
|
||||||
import LocalStorage from '@renderer/services/storage'
|
import LocalStorage from '@renderer/services/storage'
|
||||||
import { Assistant, Message, Model, Topic } from '@renderer/types'
|
import { Assistant, Message, Model, Topic } from '@renderer/types'
|
||||||
import { getBriefInfo, runAsyncFunction, uuid } from '@renderer/utils'
|
import { getBriefInfo, runAsyncFunction, uuid } from '@renderer/utils'
|
||||||
@ -77,7 +77,7 @@ const Messages: 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.REGENERATE_MESSAGE, async (model: Model) => {
|
EventEmitter.on(EVENT_NAMES.REGENERATE_MESSAGE, async (model: Model) => {
|
||||||
const lastUserMessage = last(filterAtMessages(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)}`
|
const content = `[@${model.name}](#) ${getBriefInfo(lastUserMessage.content)}`
|
||||||
onSendMessage({ ...lastUserMessage, id: uuid(), type: '@', content })
|
onSendMessage({ ...lastUserMessage, id: uuid(), type: '@', content })
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import {
|
|||||||
getTranslateModel
|
getTranslateModel
|
||||||
} from './assistant'
|
} from './assistant'
|
||||||
import { EVENT_NAMES, EventEmitter } from './event'
|
import { EVENT_NAMES, EventEmitter } from './event'
|
||||||
import { filterAtMessages } from './messages'
|
import { filterMessages } from './messages'
|
||||||
import ProviderSDK from './ProviderSDK'
|
import ProviderSDK from './ProviderSDK'
|
||||||
|
|
||||||
export async function fetchChatCompletion({
|
export async function fetchChatCompletion({
|
||||||
@ -61,11 +61,12 @@ export async function fetchChatCompletion({
|
|||||||
}, 1000)
|
}, 1000)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await providerSdk.completions(filterAtMessages(messages), assistant, ({ text, usage }) => {
|
await providerSdk.completions(filterMessages(messages), assistant, ({ text, usage }) => {
|
||||||
message.content = message.content + text || ''
|
message.content = message.content + text || ''
|
||||||
message.usage = usage
|
message.usage = usage
|
||||||
onResponse({ ...message, status: 'pending' })
|
onResponse({ ...message, status: 'pending' })
|
||||||
})
|
})
|
||||||
|
message.status = 'success'
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
message.content = `Error: ${error.message}`
|
message.content = `Error: ${error.message}`
|
||||||
message.status = 'error'
|
message.status = 'error'
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
import { Assistant, Message } from '@renderer/types'
|
import { Assistant, Message } from '@renderer/types'
|
||||||
import { GPTTokens } from 'gpt-tokens'
|
import { GPTTokens } from 'gpt-tokens'
|
||||||
import { takeRight } from 'lodash'
|
import { isEmpty, takeRight } from 'lodash'
|
||||||
|
|
||||||
import { getAssistantSettings } from './assistant'
|
import { getAssistantSettings } from './assistant'
|
||||||
|
|
||||||
export const filterAtMessages = (messages: Message[]) => {
|
export const filterMessages = (messages: Message[]) => {
|
||||||
return messages.filter((message) => message.type !== '@')
|
return messages.filter((message) => message.type !== '@').filter((message) => !isEmpty(message.content.trim()))
|
||||||
}
|
}
|
||||||
|
|
||||||
export function estimateInputTokenCount(text: string) {
|
export function estimateInputTokenCount(text: string) {
|
||||||
@ -24,7 +24,7 @@ export function estimateHistoryTokenCount(assistant: Assistant, msgs: Message[])
|
|||||||
model: 'gpt-4o',
|
model: 'gpt-4o',
|
||||||
messages: [
|
messages: [
|
||||||
{ role: 'system', content: assistant.prompt },
|
{ role: 'system', content: assistant.prompt },
|
||||||
...filterAtMessages(takeRight(msgs, contextCount)).map((message) => ({
|
...filterMessages(takeRight(msgs, contextCount)).map((message) => ({
|
||||||
role: message.role,
|
role: message.role,
|
||||||
content: message.content
|
content: message.content
|
||||||
}))
|
}))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user