diff --git a/src/renderer/src/providers/AnthropicProvider.ts b/src/renderer/src/providers/AnthropicProvider.ts index 154d030f..346ac3f9 100644 --- a/src/renderer/src/providers/AnthropicProvider.ts +++ b/src/renderer/src/providers/AnthropicProvider.ts @@ -8,6 +8,7 @@ import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@rende import { EVENT_NAMES } from '@renderer/services/EventService' import { filterContextMessages } from '@renderer/services/MessagesService' import { Assistant, FileTypes, Message, Provider, Suggestion } from '@renderer/types' +import { removeSpecialCharacters } from '@renderer/utils' import { first, flatten, last, sum, takeRight } from 'lodash' import OpenAI from 'openai' @@ -206,7 +207,9 @@ export default class AnthropicProvider extends BaseProvider { max_tokens: 4096 }) - return message.content[0].type === 'text' ? message.content[0].text : '' + const content = message.content[0].type === 'text' ? message.content[0].text : '' + + return removeSpecialCharacters(content) } public async generateText({ prompt, content }: { prompt: string; content: string }): Promise { diff --git a/src/renderer/src/providers/GeminiProvider.ts b/src/renderer/src/providers/GeminiProvider.ts index 20cc4aa0..cc220e8e 100644 --- a/src/renderer/src/providers/GeminiProvider.ts +++ b/src/renderer/src/providers/GeminiProvider.ts @@ -15,6 +15,7 @@ import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@rende import { EVENT_NAMES } from '@renderer/services/EventService' import { filterContextMessages } from '@renderer/services/MessagesService' import { Assistant, FileTypes, Message, Model, Provider, Suggestion } from '@renderer/types' +import { removeSpecialCharacters } from '@renderer/utils' import axios from 'axios' import { first, isEmpty, last, takeRight } from 'lodash' import OpenAI from 'openai' @@ -223,7 +224,7 @@ export default class GeminiProvider extends BaseProvider { const { response } = await chat.sendMessage(userMessage.content) - return response.text() + return removeSpecialCharacters(response.text()) } public async generateText({ prompt, content }: { prompt: string; content: string }): Promise { diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts index 6110ff7d..bc32108b 100644 --- a/src/renderer/src/providers/OpenAIProvider.ts +++ b/src/renderer/src/providers/OpenAIProvider.ts @@ -5,7 +5,7 @@ import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@rende import { EVENT_NAMES } from '@renderer/services/EventService' import { filterContextMessages } from '@renderer/services/MessagesService' import { Assistant, FileTypes, GenerateImageParams, Message, Model, Provider, Suggestion } from '@renderer/types' -import { removeQuotes } from '@renderer/utils' +import { removeSpecialCharacters } from '@renderer/utils' import { last, takeRight } from 'lodash' import OpenAI, { AzureOpenAI } from 'openai' import { @@ -240,7 +240,7 @@ export default class OpenAIProvider extends BaseProvider { max_tokens: 1000 }) - return removeQuotes(response.choices[0].message?.content?.substring(0, 50) || '') + return removeSpecialCharacters(response.choices[0].message?.content?.substring(0, 50) || '') } public async generateText({ prompt, content }: { prompt: string; content: string }): Promise { diff --git a/src/renderer/src/utils/index.ts b/src/renderer/src/utils/index.ts index 7f7a4941..94166198 100644 --- a/src/renderer/src/utils/index.ts +++ b/src/renderer/src/utils/index.ts @@ -152,6 +152,11 @@ export function removeQuotes(str) { return str.replace(/['"]+/g, '') } +export function removeSpecialCharacters(str: string) { + // First remove newlines and quotes, then remove other special characters + return str.replace(/[\n"]/g, '').replace(/[^\p{L}\p{M}\p{N}\p{P}\p{S}]/gu, '') +} + export function generateColorFromChar(char: string) { // 使用字符的Unicode值作为随机种子 const seed = char.charCodeAt(0)