Merge branch 'bestsanmao-bug_fix'

This commit is contained in:
river 2025-01-27 12:55:31 +08:00
commit 19314793b8
4 changed files with 40 additions and 22 deletions

View File

@ -1,6 +1,11 @@
# Your openai api key. (required) # Your openai api key. (required)
OPENAI_API_KEY=sk-xxxx OPENAI_API_KEY=sk-xxxx
# DeepSeek Api Key. (Optional)
DEEPSEEK_API_KEY=
# Access password, separated by comma. (optional) # Access password, separated by comma. (optional)
CODE=your-password CODE=your-password
@ -70,5 +75,6 @@ ANTHROPIC_API_VERSION=
### anthropic claude Api url (optional) ### anthropic claude Api url (optional)
ANTHROPIC_URL= ANTHROPIC_URL=
### (optional) ### (optional)
WHITE_WEBDAV_ENDPOINTS= WHITE_WEBDAV_ENDPOINTS=

View File

@ -255,6 +255,6 @@ export const getServerSideConfig = () => {
defaultModel, defaultModel,
visionModels, visionModels,
allowedWebDavEndpoints, allowedWebDavEndpoints,
enableMcp: !!process.env.ENABLE_MCP, enableMcp: process.env.ENABLE_MCP === "true",
}; };
}; };

View File

@ -393,6 +393,7 @@ You are an AI assistant with access to system tools. Your role is to help users
export const SUMMARIZE_MODEL = "gpt-4o-mini"; export const SUMMARIZE_MODEL = "gpt-4o-mini";
export const GEMINI_SUMMARIZE_MODEL = "gemini-pro"; export const GEMINI_SUMMARIZE_MODEL = "gemini-pro";
export const DEEPSEEK_SUMMARIZE_MODEL = "deepseek-chat";
export const KnowledgeCutOffDate: Record<string, string> = { export const KnowledgeCutOffDate: Record<string, string> = {
default: "2021-09", default: "2021-09",
@ -561,7 +562,7 @@ const iflytekModels = [
"4.0Ultra", "4.0Ultra",
]; ];
const deepseekModels = ["deepseek-chat", "deepseek-coder"]; const deepseekModels = ["deepseek-chat", "deepseek-coder", "deepseek-reasoner"];
const xAIModes = ["grok-beta"]; const xAIModes = ["grok-beta"];

View File

@ -20,6 +20,7 @@ import {
DEFAULT_MODELS, DEFAULT_MODELS,
DEFAULT_SYSTEM_TEMPLATE, DEFAULT_SYSTEM_TEMPLATE,
GEMINI_SUMMARIZE_MODEL, GEMINI_SUMMARIZE_MODEL,
DEEPSEEK_SUMMARIZE_MODEL,
KnowledgeCutOffDate, KnowledgeCutOffDate,
MCP_SYSTEM_TEMPLATE, MCP_SYSTEM_TEMPLATE,
MCP_TOOLS_TEMPLATE, MCP_TOOLS_TEMPLATE,
@ -35,7 +36,7 @@ import { ModelConfig, ModelType, useAppConfig } from "./config";
import { useAccessStore } from "./access"; import { useAccessStore } from "./access";
import { collectModelsWithDefaultModel } from "../utils/model"; import { collectModelsWithDefaultModel } from "../utils/model";
import { createEmptyMask, Mask } from "./mask"; import { createEmptyMask, Mask } from "./mask";
import { executeMcpAction, getAllTools } from "../mcp/actions"; import { executeMcpAction, getAllTools, isMcpEnabled } from "../mcp/actions";
import { extractMcpJson, isMcpJson } from "../mcp/utils"; import { extractMcpJson, isMcpJson } from "../mcp/utils";
const localStorage = safeLocalStorage(); const localStorage = safeLocalStorage();
@ -143,7 +144,10 @@ function getSummarizeModel(
} }
if (currentModel.startsWith("gemini")) { if (currentModel.startsWith("gemini")) {
return [GEMINI_SUMMARIZE_MODEL, ServiceProvider.Google]; return [GEMINI_SUMMARIZE_MODEL, ServiceProvider.Google];
} else if (currentModel.startsWith("deepseek-")) {
return [DEEPSEEK_SUMMARIZE_MODEL, ServiceProvider.DeepSeek];
} }
return [currentModel, providerName]; return [currentModel, providerName];
} }
@ -245,7 +249,7 @@ export const useChatStore = createPersistStore(
newSession.topic = currentSession.topic; newSession.topic = currentSession.topic;
// 深拷贝消息 // 深拷贝消息
newSession.messages = currentSession.messages.map(msg => ({ newSession.messages = currentSession.messages.map((msg) => ({
...msg, ...msg,
id: nanoid(), // 生成新的消息 ID id: nanoid(), // 生成新的消息 ID
})); }));
@ -551,11 +555,13 @@ export const useChatStore = createPersistStore(
(session.mask.modelConfig.model.startsWith("gpt-") || (session.mask.modelConfig.model.startsWith("gpt-") ||
session.mask.modelConfig.model.startsWith("chatgpt-")); session.mask.modelConfig.model.startsWith("chatgpt-"));
const mcpSystemPrompt = await getMcpSystemPrompt(); const mcpEnabled = await isMcpEnabled();
const mcpSystemPrompt = mcpEnabled ? await getMcpSystemPrompt() : "";
var systemPrompts: ChatMessage[] = []; var systemPrompts: ChatMessage[] = [];
systemPrompts = shouldInjectSystemPrompts
? [ if (shouldInjectSystemPrompts) {
systemPrompts = [
createMessage({ createMessage({
role: "system", role: "system",
content: content:
@ -564,14 +570,17 @@ export const useChatStore = createPersistStore(
template: DEFAULT_SYSTEM_TEMPLATE, template: DEFAULT_SYSTEM_TEMPLATE,
}) + mcpSystemPrompt, }) + mcpSystemPrompt,
}), }),
] ];
: [ } else if (mcpEnabled) {
systemPrompts = [
createMessage({ createMessage({
role: "system", role: "system",
content: mcpSystemPrompt, content: mcpSystemPrompt,
}), }),
]; ];
if (shouldInjectSystemPrompts) { }
if (shouldInjectSystemPrompts || mcpEnabled) {
console.log( console.log(
"[Global System Prompt] ", "[Global System Prompt] ",
systemPrompts.at(0)?.content ?? "empty", systemPrompts.at(0)?.content ?? "empty",
@ -816,6 +825,8 @@ export const useChatStore = createPersistStore(
/** check if the message contains MCP JSON and execute the MCP action */ /** check if the message contains MCP JSON and execute the MCP action */
checkMcpJson(message: ChatMessage) { checkMcpJson(message: ChatMessage) {
const mcpEnabled = isMcpEnabled();
if (!mcpEnabled) return;
const content = getMessageTextContent(message); const content = getMessageTextContent(message);
if (isMcpJson(content)) { if (isMcpJson(content)) {
try { try {