diff --git a/src/renderer/src/providers/AnthropicProvider.ts b/src/renderer/src/providers/AnthropicProvider.ts index 8af370d892..ba2b6c087a 100644 --- a/src/renderer/src/providers/AnthropicProvider.ts +++ b/src/renderer/src/providers/AnthropicProvider.ts @@ -4,7 +4,7 @@ import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant' import { getAssistantSettings, getDefaultModel, getTopNamingModel } from '@renderer/services/assistant' import { EVENT_NAMES } from '@renderer/services/event' import { Assistant, Message, Provider, Suggestion } from '@renderer/types' -import { sum, takeRight } from 'lodash' +import { first, sum, takeRight } from 'lodash' import OpenAI from 'openai' import BaseProvider from './BaseProvider' @@ -26,13 +26,17 @@ export default class AnthropicProvider extends BaseProvider { const model = assistant.model || defaultModel const { contextCount, maxTokens } = getAssistantSettings(assistant) - const userMessages = takeRight(messages, contextCount + 1).map((message) => { + const userMessages = takeRight(messages, contextCount + 2).map((message) => { return { role: message.role, content: message.content } }) + if (first(userMessages)?.role === 'assistant') { + userMessages.shift() + } + return new Promise((resolve, reject) => { const stream = this.sdk.messages .stream({ @@ -93,6 +97,10 @@ export default class AnthropicProvider extends BaseProvider { content: message.content })) + if (first(userMessages)?.role === 'assistant') { + userMessages.shift() + } + const systemMessage = { role: 'system', content: '你是一名擅长会话的助理,你需要将用户的会话总结为 10 个字以内的标题,不要使用标点符号和其他特殊符号。'