feat: 增强知识库节点配置处理逻辑
- 更新工作流引擎以支持从多个来源获取知识库ID,包括节点定义和节点名称 - 添加从节点名称中提取潜在知识库ID的功能 - 改进错误提示信息,提供更详细的配置指导
This commit is contained in:
parent
e5e9eebcf2
commit
02ae5908b9
|
|
@ -950,15 +950,45 @@ class WorkflowEngine:
|
||||||
"""执行知识库节点"""
|
"""执行知识库节点"""
|
||||||
from ..services.document import DocumentService
|
from ..services.document import DocumentService
|
||||||
|
|
||||||
config = input_data['node_config']
|
config = input_data.get('node_config', {})
|
||||||
# 支持多种字段名:knowledge_base_id, knowledgeBase, kb_id
|
# 支持多种字段名:knowledge_base_id, knowledgeBase, kb_id
|
||||||
|
# 先从 config 中获取
|
||||||
knowledge_base_id = config.get('knowledge_base_id') or config.get('knowledgeBase') or config.get('kb_id')
|
knowledge_base_id = config.get('knowledge_base_id') or config.get('knowledgeBase') or config.get('kb_id')
|
||||||
|
# 如果 config 中没有,尝试从节点定义本身获取
|
||||||
|
if not knowledge_base_id:
|
||||||
|
knowledge_base_id = node.get('knowledge_base_id') or node.get('knowledgeBase') or node.get('kb_id')
|
||||||
|
# 如果还是没有,尝试从节点的 config 字段(节点定义中的 config)获取
|
||||||
|
if not knowledge_base_id and 'config' in node:
|
||||||
|
node_config = node.get('config', {})
|
||||||
|
knowledge_base_id = node_config.get('knowledge_base_id') or node_config.get('knowledgeBase') or node_config.get('kb_id')
|
||||||
|
|
||||||
query = config.get('query', '')
|
query = config.get('query', '')
|
||||||
top_k = config.get('top_k', config.get('topK', 5))
|
top_k = config.get('top_k', config.get('topK', 5))
|
||||||
similarity_threshold = config.get('similarity_threshold', config.get('similarityThreshold', 0.7))
|
similarity_threshold = config.get('similarity_threshold', config.get('similarityThreshold', 0.7))
|
||||||
|
|
||||||
|
# 如果还是没有,尝试从节点名称中提取(例如 "knowledge-base 2" -> 2)
|
||||||
if not knowledge_base_id:
|
if not knowledge_base_id:
|
||||||
raise ValueError("知识库节点配置缺少 knowledge_base_id (或 knowledgeBase/kb_id)")
|
node_name = node.get('name', '')
|
||||||
|
import re
|
||||||
|
# 尝试从名称中提取数字(可能是知识库ID)
|
||||||
|
match = re.search(r'(\d+)', node_name)
|
||||||
|
if match:
|
||||||
|
try:
|
||||||
|
potential_id = int(match.group(1))
|
||||||
|
logger.info(f"从节点名称 '{node_name}' 中提取到潜在的知识库ID: {potential_id}")
|
||||||
|
knowledge_base_id = potential_id
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if not knowledge_base_id:
|
||||||
|
raise ValueError(
|
||||||
|
f"知识库节点配置缺少 knowledge_base_id (或 knowledgeBase/kb_id)。\n"
|
||||||
|
f"请在节点配置中添加知识库ID,例如:\n"
|
||||||
|
f" - config.knowledge_base_id: 2\n"
|
||||||
|
f" - config.knowledgeBase: 2\n"
|
||||||
|
f" - config.kb_id: 2\n"
|
||||||
|
f"当前节点配置: {config}"
|
||||||
|
)
|
||||||
|
|
||||||
if not query:
|
if not query:
|
||||||
# 尝试从 resolved_inputs 中获取查询文本
|
# 尝试从 resolved_inputs 中获取查询文本
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue