mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-30 01:32:49 +00:00
fix: The import method was used to create the intelligent agent, but the MCP and tool referenced by the AI dialogue node were not successfully created (#4574)
This commit is contained in:
parent
dceb05bf5b
commit
c0eb0db78e
|
|
@ -506,3 +506,23 @@ def save_workflow_mapping(workflow, source_type, source_id, other_resource_mappi
|
|||
resource_mapping_list += other_resource_mapping
|
||||
QuerySet(ResourceMapping).bulk_create(
|
||||
{(str(item.target_type) + str(item.target_id)): item for item in resource_mapping_list}.values())
|
||||
|
||||
|
||||
def get_tool_id_list(workflow):
|
||||
_result = []
|
||||
for node in workflow.get('nodes', []):
|
||||
if node.get('type') == 'tool-lib-node':
|
||||
tool_id = node.get('properties', {}).get('node_data', {}).get('tool_lib_id')
|
||||
if tool_id:
|
||||
_result.append(tool_id)
|
||||
elif node.get('type') == 'loop-node':
|
||||
r = get_tool_id_list(node.get('properties', {}).get('node_data', {}).get('loop_body', {}))
|
||||
for item in r:
|
||||
_result.append(item)
|
||||
elif node.get('type') == 'ai-chat-node':
|
||||
node_data = node.get('properties', {}).get('node_data', {})
|
||||
mcp_tool_ids = node_data.get('mcp_tool_ids') or []
|
||||
tool_ids = node_data.get('tool_ids') or []
|
||||
for _id in mcp_tool_ids + tool_ids:
|
||||
_result.append(_id)
|
||||
return _result
|
||||
|
|
|
|||
|
|
@ -71,6 +71,14 @@ def hand_node(node, update_tool_map):
|
|||
tool_lib_id)
|
||||
if node.get('type') == 'search-knowledge-node':
|
||||
node.get('properties', {}).get('node_data', {})['knowledge_id_list'] = []
|
||||
if node.get('type') == 'ai-chat-node':
|
||||
node_data = node.get('properties', {}).get('node_data', {})
|
||||
mcp_tool_ids = node_data.get('mcp_tool_ids') or []
|
||||
node_data['mcp_tool_ids'] = [update_tool_map.get(tool_id,
|
||||
tool_id) for tool_id in mcp_tool_ids]
|
||||
tool_ids = node_data.get('tool_ids') or []
|
||||
node_data['tool_ids'] = [update_tool_map.get(tool_id,
|
||||
tool_id) for tool_id in tool_ids]
|
||||
|
||||
|
||||
class MKInstance:
|
||||
|
|
@ -781,13 +789,8 @@ class ApplicationOperateSerializer(serializers.Serializer):
|
|||
self.is_valid()
|
||||
application_id = self.data.get('application_id')
|
||||
application = QuerySet(Application).filter(id=application_id).first()
|
||||
tool_id_list = [node.get('properties', {}).get('node_data', {}).get('tool_lib_id') for node
|
||||
in
|
||||
application.work_flow.get('nodes', []) + reduce(lambda x, y: [*x, *y], [
|
||||
n.get('properties', {}).get('node_data', {}).get('loop_body', {}).get('nodes', []) for n
|
||||
in
|
||||
application.work_flow.get('nodes', []) if n.get('type') == 'loop-node'], []) if
|
||||
node.get('type') == 'tool-lib-node']
|
||||
from application.flow.tools import get_tool_id_list
|
||||
tool_id_list = get_tool_id_list(application.work_flow)
|
||||
tool_list = []
|
||||
if len(tool_id_list) > 0:
|
||||
tool_list = QuerySet(Tool).filter(id__in=tool_id_list).exclude(scope=ToolScope.SHARED)
|
||||
|
|
@ -863,7 +866,7 @@ class ApplicationOperateSerializer(serializers.Serializer):
|
|||
work_flow_version.save()
|
||||
access_token = hashlib.md5(
|
||||
str(uuid.uuid7()).encode()).hexdigest()[
|
||||
8:24]
|
||||
8:24]
|
||||
application_access_token = QuerySet(ApplicationAccessToken).filter(
|
||||
application_id=application.id).first()
|
||||
if application_access_token is None:
|
||||
|
|
|
|||
|
|
@ -52,6 +52,14 @@ def hand_node(node, update_tool_map):
|
|||
|
||||
if node.get('type') == 'search-knowledge-node':
|
||||
node.get('properties', {}).get('node_data', {})['knowledge_id_list'] = []
|
||||
if node.get('type') == 'ai-chat-node':
|
||||
node_data = node.get('properties', {}).get('node_data', {})
|
||||
mcp_tool_ids = node_data.get('mcp_tool_ids') or []
|
||||
node_data['mcp_tool_ids'] = [update_tool_map.get(tool_id,
|
||||
tool_id) for tool_id in mcp_tool_ids]
|
||||
tool_ids = node_data.get('tool_ids') or []
|
||||
node_data['tool_ids'] = [update_tool_map.get(tool_id,
|
||||
tool_id) for tool_id in tool_ids]
|
||||
|
||||
|
||||
class KnowledgeWorkflowModelSerializer(serializers.ModelSerializer):
|
||||
|
|
@ -372,15 +380,8 @@ class KnowledgeWorkflowSerializer(serializers.Serializer):
|
|||
knowledge_id = self.data.get('knowledge_id')
|
||||
knowledge_workflow = QuerySet(KnowledgeWorkflow).filter(knowledge_id=knowledge_id).first()
|
||||
knowledge = QuerySet(Knowledge).filter(id=knowledge_id).first()
|
||||
tool_id_list = [node.get('properties', {}).get('node_data', {}).get('tool_lib_id') for node
|
||||
in
|
||||
knowledge_workflow.work_flow.get('nodes', []) + reduce(lambda x, y: [*x, *y], [
|
||||
n.get('properties', {}).get('node_data', {}).get('loop_body', {}).get('nodes', [])
|
||||
for n
|
||||
in
|
||||
knowledge_workflow.work_flow.get('nodes', []) if n.get('type') == 'loop-node'], [])
|
||||
if
|
||||
node.get('type') == 'tool-lib-node']
|
||||
from application.flow.tools import get_tool_id_list
|
||||
tool_id_list = get_tool_id_list(knowledge_workflow.work_flow)
|
||||
tool_list = []
|
||||
if len(tool_id_list) > 0:
|
||||
tool_list = QuerySet(Tool).filter(id__in=tool_id_list).exclude(scope=ToolScope.SHARED)
|
||||
|
|
|
|||
Loading…
Reference in New Issue