Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ def save_context(self, details, workflow_manage):
self.context['answer'] = details.get('answer')
self.context['question'] = details.get('question')
self.context['reasoning_content'] = details.get('reasoning_content')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ def save_context(self, details, workflow_manage):
self.context['question'] = details.get('question')
self.context['type'] = details.get('type')
self.context['reasoning_content'] = details.get('reasoning_content')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class BaseConditionNode(IConditionNode):
def save_context(self, details, workflow_manage):
self.context['branch_id'] = details.get('branch_id')
self.context['branch_name'] = details.get('branch_name')
self.context['exception_message'] = details.get('err_message')

def execute(self, **kwargs) -> NodeResult:
branch_list = self.node_params_serializer.data['branch']
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class BaseDataSourceLocalNodeForm(BaseForm):

class BaseDataSourceLocalNode(IDataSourceLocalNode):
def save_context(self, details, workflow_manage):
pass
self.context['exception_message'] = details.get('err_message')

@staticmethod
def get_form_list(node):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def handler(child_link: ChildLink, response: Fork.Response):
})

except Exception as e:
maxkb_logger.error(f'{str(e)}:{traceback.format_exc()}')
maxkb_logger.error(f'{str(e)}:{traceback.format_exc()}')
if workflow_manage.is_the_task_interrupted():
raise InterruptedTaskException('Task interrupted')

Expand All @@ -53,7 +53,7 @@ def handler(child_link: ChildLink, response: Fork.Response):

class BaseDataSourceWebNode(IDataSourceWebNode):
def save_context(self, details, workflow_manage):
pass
self.context['exception_message'] = details.get('err_message')

@staticmethod
def get_form_list(node):
Expand All @@ -77,7 +77,7 @@ def execute(self, **kwargs) -> NodeResult:
self.workflow_manage.params.get('knowledge_base') or {})

except Exception as e:
if isinstance(e,InterruptedTaskException):
if isinstance(e, InterruptedTaskException):
return NodeResult({'document_list': document_list, 'source_url': source_url, 'selector': selector},
self.workflow_manage.params.get('knowledge_base') or {})
maxkb_logger.error(_('data source web node:{node_id} error{error}{traceback}').format(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
class BaseReplyNode(IReplyNode):
def save_context(self, details, workflow_manage):
self.context['answer'] = details.get('answer')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
class BaseDocumentExtractNode(IDocumentExtractNode):
def save_context(self, details, workflow_manage):
self.context['content'] = details.get('content')
self.context['exception_message'] = details.get('err_message')

def execute(self, document, chat_id=None, **kwargs):
get_buffer = FileBufferHandle().get_buffer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ def bytes_to_uploaded_file(file_bytes, file_name="file.txt"):
class BaseDocumentSplitNode(IDocumentSplitNode):
def save_context(self, details, workflow_manage):
self.context['content'] = details.get('content')
self.context['exception_message'] = details.get('err_message')

def get_reference_content(self, fields: List[str]):
return self.workflow_manage.get_reference_field(fields[0], fields[1:])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ def save_context(self, details, workflow_manage):
self.context['start_time'] = details.get('start_time')
self.context['form_data'] = form_data
self.context['is_submit'] = details.get('is_submit')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = details.get('result')
if form_data is not None:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class BaseImageGenerateNode(IImageGenerateNode):
def save_context(self, details, workflow_manage):
self.context['answer'] = details.get('answer')
self.context['question'] = details.get('question')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class BaseImageToVideoNode(IImageToVideoNode):
def save_context(self, details, workflow_manage):
self.context['answer'] = details.get('answer')
self.context['question'] = details.get('question')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ class BaseImageUnderstandNode(IImageUnderstandNode):
def save_context(self, details, workflow_manage):
self.context['answer'] = details.get('answer')
self.context['question'] = details.get('question')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
from models_provider.tools import get_model_instance_by_model_workspace_id, get_model_credential
from .prompt_template import PROMPT_TEMPLATE

def get_default_model_params_setting(model_id):

def get_default_model_params_setting(model_id):
model = QuerySet(Model).filter(id=model_id).first()
credential = get_model_credential(model.provider, model.model_type, model.model_name)
model_params_setting = credential.get_model_params_setting_form(
Expand All @@ -24,7 +24,6 @@ def get_default_model_params_setting(model_id):


def _write_context(node_variable: Dict, workflow_variable: Dict, node: INode, workflow, answer: str):

chat_model = node_variable.get('chat_model')
message_tokens = chat_model.get_num_tokens_from_messages(node_variable.get('message_list'))
answer_tokens = chat_model.get_num_tokens(answer)
Expand All @@ -41,21 +40,18 @@ def _write_context(node_variable: Dict, workflow_variable: Dict, node: INode, wo


def write_context(node_variable: Dict, workflow_variable: Dict, node: INode, workflow):

response = node_variable.get('result')
answer = response.content
_write_context(node_variable, workflow_variable, node, workflow, answer)


class BaseIntentNode(IIntentNode):


def save_context(self, details, workflow_manage):

self.context['exception_message'] = details.get('err_message')
self.context['branch_id'] = details.get('branch_id')
self.context['category'] = details.get('category')


def execute(self, model_id, dialogue_number, history_chat_record, user_input, branch,
model_params_setting=None, **kwargs) -> NodeResult:

Expand All @@ -79,7 +75,6 @@ def execute(self, model_id, dialogue_number, history_chat_record, user_input, br
# 构建分类提示词
prompt = self.build_classification_prompt(user_input, branch)


# 生成消息列表
system = self.build_system_prompt()
message_list = self.generate_message_list(system, prompt, history_message)
Expand Down Expand Up @@ -130,7 +125,6 @@ def get_history_message(history_chat_record, dialogue_number):
message.content = re.sub('<form_rander>[\d\D]*?<\/form_rander>', '', message.content)
return history_message


def build_system_prompt(self) -> str:
"""构建系统提示词"""
return "你是一个专业的意图识别助手,请根据用户输入和意图选项,准确识别用户的真实意图。"
Expand Down Expand Up @@ -162,7 +156,6 @@ def build_classification_prompt(self, user_input: str, branch: List[Dict]) -> st
user_input=user_input
)


def generate_message_list(self, system: str, prompt: str, history_message):
"""生成消息列表"""
if system is None or len(system) == 0:
Expand Down Expand Up @@ -237,7 +230,6 @@ def find_other_branch(self, branch: List[Dict]) -> Dict[str, Any] | None:
return b
return None


def get_details(self, index: int, **kwargs):
"""获取节点执行详情"""
return {
Expand All @@ -258,4 +250,4 @@ def get_details(self, index: int, **kwargs):
'answer_tokens': self.context.get('answer_tokens'),
'status': self.status,
'err_message': self.err_message
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ def batch_add_document_tag(document_tag_map: Dict[str, List[str]]):
class BaseKnowledgeWriteNode(IKnowledgeWriteNode):

def save_context(self, details, workflow_manage):
pass
self.context['exception_message'] = details.get('err_message')

def save(self, document_list):
serializer = KnowledgeWriteParamSerializer(data=document_list, many=True)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ def _write_context(step_variable: Dict, global_variable: Dict, node, workflow):


class BaseLoopBreakNode(ILoopBreakNode):
def save_context(self, details, workflow_manage):
self.context['exception_message'] = details.get('err_message')

def execute(self, condition, condition_list, **kwargs) -> NodeResult:
r = [self.assertion(row.get('field'), row.get('compare'), row.get('value')) for row in
condition_list]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@


class BaseLoopContinueNode(ILoopContinueNode):
def save_context(self, details, workflow_manage):
self.context['exception_message'] = details.get('err_message')

def execute(self, condition, condition_list, **kwargs) -> NodeResult:
condition_list = [self.assertion(row.get('field'), row.get('compare'), row.get('value')) for row in
condition_list]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class BaseLoopStartStepNode(ILoopStarNode):
def save_context(self, details, workflow_manage):
self.context['index'] = details.get('current_index')
self.context['item'] = details.get('current_item')
self.context['exception_message'] = details.get('err_message')

def get_node_params_serializer_class(self) -> Type[serializers.Serializer]:
pass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ def save_context(self, details, workflow_manage):
self.context['result'] = details.get('result')
self.context['tool_params'] = details.get('tool_params')
self.context['mcp_tool'] = details.get('mcp_tool')
self.context['exception_message'] = details.get('err_message')

def execute(self, mcp_servers, mcp_server, mcp_tool, mcp_tool_id, mcp_source, tool_params,**kwargs) -> NodeResult:
def execute(self, mcp_servers, mcp_server, mcp_tool, mcp_tool_id, mcp_source, tool_params, **kwargs) -> NodeResult:
if mcp_source == 'referencing':
if not mcp_tool_id:
raise ValueError("MCP tool ID is required when mcp_source is 'referencing'.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ def save_context(self, details, workflow_manage):
self.context[key] = value
self.context['result'] = details.get('result')
self.context['request'] = details.get('request')
self.context['exception_message'] = details.get('err_message')

def execute(self, input_variable, variable_list, model_params_setting, model_id, **kwargs) -> NodeResult:
input_variable = str(input_variable)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ def save_context(self, details, workflow_manage):
self.context['answer'] = details.get('answer')
self.context['message_tokens'] = details.get('message_tokens')
self.context['answer_tokens'] = details.get('answer_tokens')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ def save_context(self, details, workflow_manage):
self.context['run_time'] = details.get('run_time')
self.context['result_list'] = details.get('result_list')
self.context['result'] = details.get('result')
self.context['exception_message'] = details.get('err_message')

def execute(self, question, reranker_setting, reranker_list, reranker_model_id, show_knowledge,
**kwargs) -> NodeResult:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ def save_context(self, details, workflow_manage):
self.context['knowledge_items'] = details.get('knowledge_items')
self.context['question'] = details.get('question')
self.context['run_time'] = details.get('run_time')
self.context['exception_message'] = details.get('err_message')

def get_reference_content(self, fields: List[str]):
return self.workflow_manage.get_reference_field(fields[0], fields[1:])
Expand Down Expand Up @@ -120,7 +121,7 @@ def handle_custom_tags(self, document_id_list: List, search_condition_list: list
field_value = self.workflow_manage.generate_prompt(condition['value'])
compare_type = condition['compare']

if not field_value or field_value == 'None' or len(field_value) == 0 :
if not field_value or field_value == 'None' or len(field_value) == 0:
continue

# 构建查询条件
Expand Down Expand Up @@ -159,7 +160,7 @@ def handle_custom_tags(self, document_id_list: List, search_condition_list: list
field_value = self.workflow_manage.generate_prompt(condition['value'])
compare_type = condition['compare']

if not field_value or field_value == 'None' or len(field_value) == 0 :
if not field_value or field_value == 'None' or len(field_value) == 0:
continue

if compare_type == 'not_contain':
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ def save_context(self, details, workflow_manage):
[f"{paragraph.get('title', '')}:{paragraph.get('content')}" for paragraph in
result])[0:knowledge_setting.get('max_paragraph_char_number', 5000)]
self.context['directly_return'] = directly_return
self.context['exception_message'] = details.get('err_message')

def get_reference_content(self, fields: List[str]):
return self.workflow_manage.get_reference_field(fields[0], fields[1:])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ def save_context(self, details, workflow_manage):
self.context['result'] = details.get('answer')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')
self.context['exception_message'] = details.get('err_message')

def execute(self, stt_model_id, audio, model_params_setting=None, **kwargs) -> NodeResult:
workspace_id = self.workflow_manage.get_body().get('workspace_id')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ def save_context(self, details, workflow_manage):
self.context['audio'] = details.get('audio_list')
self.context['video'] = details.get('video_list')
self.context['other'] = details.get('other_list')
self.context['exception_message'] = details.get('err_message')
self.status = details.get('status')
self.err_message = details.get('err_message')
for key, value in workflow_variable.items():
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class BaseTextToSpeechNode(ITextToSpeechNode):
def save_context(self, details, workflow_manage):
self.context['answer'] = details.get('answer')
self.context['result'] = details.get('result')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@
from models_provider.tools import get_model_instance_by_model_workspace_id
from django.utils.translation import gettext


class BaseTextToVideoNode(ITextToVideoNode):
def save_context(self, details, workflow_manage):
self.context['answer'] = details.get('answer')
self.context['exception_message'] = details.get('err_message')
self.context['question'] = details.get('question')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ def bytes_to_uploaded_file(file_bytes, file_name="unknown"):
class BaseToolLibNodeNode(IToolLibNode):
def save_context(self, details, workflow_manage):
self.context['result'] = details.get('result')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result'):
self.answer_text = str(details.get('result'))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ def convert_value(name: str, value, _type, is_required, source, node):
class BaseToolNodeNode(IToolNode):
def save_context(self, details, workflow_manage):
self.context['result'] = details.get('result')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = str(details.get('result'))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from application.flow.i_step_node import NodeResult
from application.flow.step_node.variable_aggregation_node.i_variable_aggregation_node import IVariableAggregation


def _filter_file_bytes(data):
"""递归过滤掉所有层级的 file_bytes"""
if isinstance(data, dict):
Expand All @@ -27,6 +28,7 @@ def save_context(self, details, workflow_manage):
self.context['result'] = details.get('result')
self.context['strategy'] = details.get('strategy')
self.context['group_list'] = details.get('group_list')
self.context['exception_message'] = details.get('err_message')

def get_first_non_null(self, variable_list):

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class BaseVariableAssignNode(IVariableAssignNode):
def save_context(self, details, workflow_manage):
self.context['variable_list'] = details.get('variable_list')
self.context['result_list'] = details.get('result_list')
self.context['exception_message'] = details.get('err_message')

def global_evaluation(self, variable, value):
from application.flow.loop_workflow_manage import LoopWorkflowManage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ def save_context(self, details, workflow_manage):
self.context[key] = value
self.context['result'] = details.get('result')
self.context['request'] = details.get('request')
self.context['exception_message'] = details.get('err_message')

def execute(self, input_variable, variable_list, **kwargs) -> NodeResult:
self.context['request'] = input_variable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ class BaseVideoUnderstandNode(IVideoUnderstandNode):
def save_context(self, details, workflow_manage):
self.context['answer'] = details.get('answer')
self.context['question'] = details.get('question')
self.context['exception_message'] = details.get('err_message')
if self.node_params.get('is_result', False):
self.answer_text = details.get('answer')

Expand Down