diff --git a/electron-builder.yml b/electron-builder.yml index 87128027..43ee4afb 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -56,5 +56,4 @@ electronDownload: afterSign: scripts/notarize.js releaseInfo: releaseNotes: | - 支持保存自定义智能体 - 修复话题重命名的问题 + 错误修复,优化体验 diff --git a/src/renderer/src/i18n/index.ts b/src/renderer/src/i18n/index.ts index 4f3496d2..95cf273c 100644 --- a/src/renderer/src/i18n/index.ts +++ b/src/renderer/src/i18n/index.ts @@ -212,8 +212,7 @@ const resources = { 'keep_alive_time.description': 'The time in minutes to keep the connection alive, default is 5 minutes.' }, error: { - 'chat.response': - 'Something went wrong. Please check your API key in settings > providers, or check your proxy in Settings > General > Proxy' + 'chat.response': 'Something went wrong. Please check if you have set your API key in the Settings > Providers' } } }, @@ -427,7 +426,7 @@ const resources = { 'keep_alive_time.description': '对话后模型在内存中保持的时间(默认:5分钟)' }, error: { - 'chat.response': '出错了,这通常是由于没有正确配置 API 密钥或代理导致的, 请前往设置 > 模型提供商中配置 API 密钥' + 'chat.response': '出错了,如果没有配置 API 密钥,请前往设置 > 模型提供商中配置密钥' } } } diff --git a/src/renderer/src/pages/home/components/Messages.tsx b/src/renderer/src/pages/home/components/Messages.tsx index 4cbbf377..c744140a 100644 --- a/src/renderer/src/pages/home/components/Messages.tsx +++ b/src/renderer/src/pages/home/components/Messages.tsx @@ -2,7 +2,7 @@ import { useAssistant } from '@renderer/hooks/useAssistant' import { useProviderByAssistant } from '@renderer/hooks/useProvider' import { fetchChatCompletion, fetchMessagesSummary } from '@renderer/services/api' 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 { Assistant, Message, Model, Topic } from '@renderer/types' import { getBriefInfo, runAsyncFunction, uuid } from '@renderer/utils' @@ -77,7 +77,7 @@ const Messages: FC = ({ assistant, topic }) => { setTimeout(() => EventEmitter.emit(EVENT_NAMES.AI_AUTO_RENAME), 100) }), 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) { const content = `[@${model.name}](#) ${getBriefInfo(lastUserMessage.content)}` onSendMessage({ ...lastUserMessage, id: uuid(), type: '@', content }) diff --git a/src/renderer/src/services/api.ts b/src/renderer/src/services/api.ts index 3c198a85..9a61753e 100644 --- a/src/renderer/src/services/api.ts +++ b/src/renderer/src/services/api.ts @@ -14,7 +14,7 @@ import { getTranslateModel } from './assistant' import { EVENT_NAMES, EventEmitter } from './event' -import { filterAtMessages } from './messages' +import { filterMessages } from './messages' import ProviderSDK from './ProviderSDK' export async function fetchChatCompletion({ @@ -61,11 +61,12 @@ export async function fetchChatCompletion({ }, 1000) try { - await providerSdk.completions(filterAtMessages(messages), assistant, ({ text, usage }) => { + await providerSdk.completions(filterMessages(messages), assistant, ({ text, usage }) => { message.content = message.content + text || '' message.usage = usage onResponse({ ...message, status: 'pending' }) }) + message.status = 'success' } catch (error: any) { message.content = `Error: ${error.message}` message.status = 'error' diff --git a/src/renderer/src/services/messages.ts b/src/renderer/src/services/messages.ts index 50497872..6c662045 100644 --- a/src/renderer/src/services/messages.ts +++ b/src/renderer/src/services/messages.ts @@ -1,11 +1,11 @@ import { Assistant, Message } from '@renderer/types' import { GPTTokens } from 'gpt-tokens' -import { takeRight } from 'lodash' +import { isEmpty, takeRight } from 'lodash' import { getAssistantSettings } from './assistant' -export const filterAtMessages = (messages: Message[]) => { - return messages.filter((message) => message.type !== '@') +export const filterMessages = (messages: Message[]) => { + return messages.filter((message) => message.type !== '@').filter((message) => !isEmpty(message.content.trim())) } export function estimateInputTokenCount(text: string) { @@ -24,7 +24,7 @@ export function estimateHistoryTokenCount(assistant: Assistant, msgs: Message[]) model: 'gpt-4o', messages: [ { role: 'system', content: assistant.prompt }, - ...filterAtMessages(takeRight(msgs, contextCount)).map((message) => ({ + ...filterMessages(takeRight(msgs, contextCount)).map((message) => ({ role: message.role, content: message.content }))