知你客服

This commit is contained in:
rjb
2026-03-06 22:31:41 +08:00
parent 171a6edf94
commit 9d3198f6bc
31 changed files with 6579 additions and 80 deletions

View File

@@ -673,10 +673,16 @@ class WorkflowEngine:
else:
# 如果没有提取到用户查询附加整个input_data
formatted_prompt = f"{formatted_prompt}\n\n{json_module.dumps(input_data, ensure_ascii=False)}"
elif has_unfilled_variables or re.search(r'\{\{(\w+)\}\}', formatted_prompt):
elif has_unfilled_variables or re.search(r'\{\{[^}]+\}\}', formatted_prompt):
# 如果有占位符但未填充,先尝试清理所有未填充的模板变量
# 使用正则表达式替换所有 {{...}} 格式的未填充变量
formatted_prompt = re.sub(r'\{\{[^}]+\}\}', '', formatted_prompt)
# 如果有占位符但未填充,附加用户需求说明
if user_query:
formatted_prompt = f"{formatted_prompt}\n\n用户需求:{user_query}\n\n请根据以上用户需求,忽略未填充的变量占位符(如{{{{variable}}}}),直接基于用户需求来完成任务。"
formatted_prompt = f"{formatted_prompt}\n\n用户需求:{user_query}\n\n请根据用户需求来完成任务。"
else:
# 如果没有用户查询附加整个input_data
formatted_prompt = f"{formatted_prompt}\n\n输入数据:{json_module.dumps(input_data, ensure_ascii=False)}\n\n请根据输入数据来完成任务。"
logger.info(f"[rjb] LLM节点prompt格式化: node_id={node_id}, original_prompt='{prompt[:50] if len(prompt) > 50 else prompt}', has_any_placeholder={has_any_placeholder}, user_query={user_query}, is_generic_instruction={is_generic_instruction}, final_prompt前200字符='{formatted_prompt[:200] if len(formatted_prompt) > 200 else formatted_prompt}'")
prompt = formatted_prompt
@@ -727,7 +733,8 @@ class WorkflowEngine:
# 检查是否启用工具调用
enable_tools = node_data.get('enable_tools', False)
tools_config = node_data.get('tools', []) # 工具名称列表
# 支持两种字段名tools 和 selected_tools
tools_config = node_data.get('tools') or node_data.get('selected_tools') or []
# 如果启用了工具,加载工具定义
tools = []
@@ -751,7 +758,8 @@ class WorkflowEngine:
provider=provider,
model=model,
temperature=temperature,
max_tokens=max_tokens
max_tokens=max_tokens,
execution_logger=self.logger
)
else:
result = await llm_service.call_llm(