fix: 品牌保护+知识库全量覆盖 - 6层防御解决传销问题 + 30+产品关键词补全

This commit is contained in:
User
2026-03-17 11:00:09 +08:00
parent f97dd7e3d5
commit 0560db1048
46 changed files with 1948 additions and 120 deletions

View File

@@ -9,17 +9,21 @@ class ArkChatService {
return process.env.VOLC_ARK_API_KEY || process.env.VOLC_ACCESS_KEY_ID;
}
_isMockMode() {
isMockMode() {
const ep = process.env.VOLC_ARK_ENDPOINT_ID;
return !ep || ep === 'your_ark_endpoint_id';
}
_isMockMode() {
return this.isMockMode();
}
/**
* 获取方舟知识库配置(如果已配置)
* @returns {object|null} 知识库 metadata 配置
*/
_getKnowledgeBaseConfig() {
const kbIds = process.env.VOLC_ARK_KNOWLEDGE_BASE_IDS;
_getKnowledgeBaseConfig(kbIdsOverride = null) {
const kbIds = kbIdsOverride || process.env.VOLC_ARK_KNOWLEDGE_BASE_IDS;
if (!kbIds || kbIds === 'your_knowledge_base_dataset_id') return null;
const datasetIds = kbIds.split(',').map(id => id.trim()).filter(Boolean);
@@ -83,12 +87,14 @@ class ArkChatService {
/**
* 非流式调用方舟 LLM
*/
async chat(messages, tools = []) {
async chat(messages, tools = [], options = {}) {
if (this._isMockMode()) {
console.warn('[ArkChat] EndPointId not configured, returning mock response');
return this._mockChat(messages);
}
const { useKnowledgeBase = false, knowledgeBaseIds = null } = options || {};
const body = {
model: process.env.VOLC_ARK_ENDPOINT_ID,
messages,
@@ -96,8 +102,7 @@ class ArkChatService {
};
if (tools.length > 0) body.tools = tools;
// 注入方舟私域知识库配置
const kbConfig = this._getKnowledgeBaseConfig();
const kbConfig = useKnowledgeBase ? this._getKnowledgeBaseConfig(knowledgeBaseIds) : null;
if (kbConfig) {
body.metadata = { knowledge_base: kbConfig };
console.log('[ArkChat] Knowledge base enabled:', kbConfig.dataset_ids);
@@ -138,7 +143,7 @@ class ArkChatService {
* @param {function} onToolCall - (toolCalls: Array) => void
* @param {function} onDone - (fullContent: string) => void
*/
async chatStream(messages, tools = [], { onChunk, onToolCall, onDone }) {
async chatStream(messages, tools = [], { onChunk, onToolCall, onDone, useKnowledgeBase = false, knowledgeBaseIds = null } = {}) {
if (this._isMockMode()) {
return this._mockChatStream(messages, { onChunk, onDone });
}
@@ -150,8 +155,7 @@ class ArkChatService {
};
if (tools.length > 0) body.tools = tools;
// 注入方舟私域知识库配置
const kbConfig = this._getKnowledgeBaseConfig();
const kbConfig = useKnowledgeBase ? this._getKnowledgeBaseConfig(knowledgeBaseIds) : null;
if (kbConfig) {
body.metadata = { knowledge_base: kbConfig };
}