fix: 品牌保护+知识库全量覆盖 - 6层防御解决传销问题 + 30+产品关键词补全
This commit is contained in:
@@ -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 };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user