diff --git a/agent/templates/choose_your_knowledge_base_agent.json b/agent/templates/choose_your_knowledge_base_agent.json deleted file mode 100644 index a4b7ac9379..0000000000 --- a/agent/templates/choose_your_knowledge_base_agent.json +++ /dev/null @@ -1,422 +0,0 @@ -{ - "id": 19, - "title": { - "en": "Choose Your Knowledge Base Agent", - "de": "Wählen Sie Ihren Wissensdatenbank Agenten", - "zh": "选择知识库智能体"}, - "description": { - "en": "This Agent generates responses solely from the specified dataset (knowledge base). You are required to select a knowledge base from the dropdown when running the Agent.", - "de": "Dieser Agent erzeugt Antworten ausschließlich aus dem angegebenen Datensatz (Wissensdatenbank). Beim Ausführen des Agents müssen Sie eine Wissensdatenbank aus dem Dropdown-Menü auswählen.", - "zh": "本工作流仅根据指定知识库内容生成回答。运行时,请在下拉菜单选择需要查询的知识库。"}, - "canvas_type": "Agent", - "dsl": { - "components": { - "Agent:BraveParksJoke": { - "downstream": [ - "Message:HotMelonsObey" - ], - "obj": { - "component_name": "Agent", - "params": { - "delay_after_error": 1, - "description": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "{sys.query}", - "role": "user" - } - ], - "sys_prompt": "#Role\nYou are a **Docs QA Agent**, a specialized knowledge base assistant responsible for providing accurate answers based strictly on the connected documentation repository.\n\n# Core Principles\n1. **Rapid Output**\nRetrieve and answer questions directly from the knowledge base using the retrieval tool. Immediately return results upon successful retrieval without additional reflection rounds. Prioritize rapid output even before reaching maximum iteration limits.\n2. **Knowledge Base Only**: Answer questions EXCLUSIVELY based on information retrieved from the connected knowledge base.\n3. **No Content Creation**: Never generate, infer, or create information that is not explicitly present in the retrieved documents.\n4. **Source Transparency**: Always indicate when information comes from the knowledge base vs. when it's unavailable.\n5. **Accuracy Over Completeness**: Prefer incomplete but accurate answers over complete but potentially inaccurate ones.\n# Response Guidelines\n## When Information is Available\n- Provide direct answers based on retrieved content\n- Quote relevant sections when helpful\n- Cite the source document/section if available\n- Use phrases like: \"According to the documentation...\" or \"Based on the knowledge base...\"\n## When Information is Unavailable\n- Clearly state: \"I cannot find this information in the current knowledge base.\"\n- Do NOT attempt to fill gaps with general knowledge\n- Suggest alternative questions that might be covered in the docs\n- Use phrases like: \"The documentation does not cover...\" or \"This information is not available in the knowledge base.\"\n# Response Format\n```markdown\n## Answer\n[Your response based strictly on knowledge base content]\n**Always do these:**\n- Use the Retrieval tool for every question\n- Be transparent about information availability\n- Stick to documented facts only\n- Acknowledge knowledge base limitations", - "temperature": 0.1, - "temperatureEnabled": true, - "tools": [ - { - "component_name": "Retrieval", - "name": "Retrieval", - "params": { - "cross_languages": [], - "description": "Retrieve from the knowledge bases.", - "empty_response": "", - "kb_ids": [ - "begin@knowledge base" - ], - "keywords_similarity_weight": 0.7, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - } - }, - "rerank_id": "", - "similarity_threshold": 0.2, - "top_k": 1024, - "top_n": 8, - "use_kg": false - } - } - ], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "begin" - ] - }, - "Message:HotMelonsObey": { - "downstream": [], - "obj": { - "component_name": "Message", - "params": { - "content": [ - "{Agent:BraveParksJoke@content}" - ] - } - }, - "upstream": [ - "Agent:BraveParksJoke" - ] - }, - "begin": { - "downstream": [ - "Agent:BraveParksJoke" - ], - "obj": { - "component_name": "Begin", - "params": { - "enablePrologue": true, - "inputs": { - "knowledge base": { - "name": "knowledge base", - "optional": false, - "options": [ - "knowledge base 1", - "knowledge base 2", - "knowledge base 3" - ], - "type": "options" - } - }, - "mode": "conversational", - "prologue": "Hi! I'm your retrieval assistant. What do you want to ask?" - } - }, - "upstream": [] - } - }, - "globals": { - "sys.conversation_turns": 0, - "sys.files": [], - "sys.query": "", - "sys.user_id": "" - }, - "graph": { - "edges": [ - { - "data": { - "isHovered": false - }, - "id": "xy-edge__beginstart-Agent:BraveParksJokeend", - "selected": false, - "source": "begin", - "sourceHandle": "start", - "target": "Agent:BraveParksJoke", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:BraveParksJoketool-Tool:TangyWolvesDreamend", - "source": "Agent:BraveParksJoke", - "sourceHandle": "tool", - "target": "Tool:TangyWolvesDream", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:BraveParksJokestart-Message:HotMelonsObeyend", - "source": "Agent:BraveParksJoke", - "sourceHandle": "start", - "target": "Message:HotMelonsObey", - "targetHandle": "end" - } - ], - "nodes": [ - { - "data": { - "form": { - "enablePrologue": true, - "inputs": { - "knowledge base": { - "name": "knowledge base", - "optional": false, - "options": [ - "knowledge base 1", - "knowledge base 2", - "knowledge base 3" - ], - "type": "options" - } - }, - "mode": "conversational", - "prologue": "Hi! I'm your retrieval assistant. What do you want to ask?" - }, - "label": "Begin", - "name": "begin" - }, - "dragging": false, - "id": "begin", - "measured": { - "height": 76, - "width": 200 - }, - "position": { - "x": 174.93384234796846, - "y": -272.9638317458806 - }, - "selected": false, - "sourcePosition": "left", - "targetPosition": "right", - "type": "beginNode" - }, - { - "data": { - "form": { - "delay_after_error": 1, - "description": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "{sys.query}", - "role": "user" - } - ], - "sys_prompt": "#Role\nYou are a **Docs QA Agent**, a specialized knowledge base assistant responsible for providing accurate answers based strictly on the connected documentation repository.\n\n# Core Principles\n1. **Rapid Output**\nRetrieve and answer questions directly from the knowledge base using the retrieval tool. Immediately return results upon successful retrieval without additional reflection rounds. Prioritize rapid output even before reaching maximum iteration limits.\n2. **Knowledge Base Only**: Answer questions EXCLUSIVELY based on information retrieved from the connected knowledge base.\n3. **No Content Creation**: Never generate, infer, or create information that is not explicitly present in the retrieved documents.\n4. **Source Transparency**: Always indicate when information comes from the knowledge base vs. when it's unavailable.\n5. **Accuracy Over Completeness**: Prefer incomplete but accurate answers over complete but potentially inaccurate ones.\n# Response Guidelines\n## When Information is Available\n- Provide direct answers based on retrieved content\n- Quote relevant sections when helpful\n- Cite the source document/section if available\n- Use phrases like: \"According to the documentation...\" or \"Based on the knowledge base...\"\n## When Information is Unavailable\n- Clearly state: \"I cannot find this information in the current knowledge base.\"\n- Do NOT attempt to fill gaps with general knowledge\n- Suggest alternative questions that might be covered in the docs\n- Use phrases like: \"The documentation does not cover...\" or \"This information is not available in the knowledge base.\"\n# Response Format\n```markdown\n## Answer\n[Your response based strictly on knowledge base content]\n**Always do these:**\n- Use the Retrieval tool for every question\n- Be transparent about information availability\n- Stick to documented facts only\n- Acknowledge knowledge base limitations", - "temperature": 0.1, - "temperatureEnabled": true, - "tools": [ - { - "component_name": "Retrieval", - "name": "Retrieval", - "params": { - "cross_languages": [], - "description": "Retrieve from the knowledge bases.", - "empty_response": "", - "kb_ids": [ - "begin@knowledge base" - ], - "keywords_similarity_weight": 0.7, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - } - }, - "rerank_id": "", - "similarity_threshold": 0.2, - "top_k": 1024, - "top_n": 8, - "use_kg": false - } - } - ], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Agent" - }, - "dragging": false, - "id": "Agent:BraveParksJoke", - "measured": { - "height": 84, - "width": 200 - }, - "position": { - "x": 699.8147585743118, - "y": -512.1229013834202 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "description": "This is an agent for a specific task.", - "user_prompt": "This is the order you need to send to the agent." - }, - "label": "Tool", - "name": "flow.tool_0" - }, - "id": "Tool:TangyWolvesDream", - "measured": { - "height": 48, - "width": 200 - }, - "position": { - "x": 617.8147585743118, - "y": -372.1229013834202 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "toolNode" - }, - { - "data": { - "form": { - "content": [ - "{Agent:BraveParksJoke@content}" - ] - }, - "label": "Message", - "name": "Message" - }, - "id": "Message:HotMelonsObey", - "measured": { - "height": 56, - "width": 200 - }, - "position": { - "x": 999.8147585743118, - "y": -512.1229013834202 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "messageNode" - }, - { - "data": { - "form": { - "text": "Configure the dropdown menu with your knowledge bases for retrieval." - }, - "label": "Note", - "name": "Note: Begin" - }, - "dragHandle": ".note-drag-handle", - "id": "Note:CurlyGoatsRun", - "measured": { - "height": 136, - "width": 250 - }, - "position": { - "x": 240, - "y": -135 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode" - }, - { - "data": { - "form": { - "text": "The Agent will only retrieve from the selected knowledge base and use this content to generate responses.\n\nThe Agent prioritizes rapid response per system prompt configuration. Adjust reflection rounds by modifying the system prompt or via Agent > Advanced Settings > Max Rounds." - }, - "label": "Note", - "name": "Note: Agent" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "height": 186, - "id": "Note:GentleShowersAct", - "measured": { - "height": 186, - "width": 456 - }, - "position": { - "x": 759.6166714488969, - "y": -303.3174949046285 - }, - "resizing": false, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode", - "width": 456 - }, - { - "data": { - "form": { - "text": "This Agent generates responses solely from the specified dataset (knowledge base). \nYou are required to select a knowledge base from the dropdown when running the Agent." - }, - "label": "Note", - "name": "Workflow description" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "height": 169, - "id": "Note:FineCandlesDig", - "measured": { - "height": 169, - "width": 357 - }, - "position": { - "x": 177.69466666666665, - "y": -531.9333333333334 - }, - "resizing": false, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode", - "width": 357 - } - ] - }, - "history": [], - "messages": [], - "path": [], - "retrieval": [] - }, - "avatar": "data:image/png;base64,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" -} \ No newline at end of file diff --git a/agent/templates/choose_your_knowledge_base_workflow.json b/agent/templates/choose_your_knowledge_base_workflow.json deleted file mode 100644 index 79886ed358..0000000000 --- a/agent/templates/choose_your_knowledge_base_workflow.json +++ /dev/null @@ -1,440 +0,0 @@ -{ - "id": 18, - "title": { - "en": "Choose Your Knowledge Base Workflow", - "de": "Wählen Sie Ihren Wissensdatenbank Workflow", - "zh": "选择知识库工作流"}, - "description": { - "en": "This Agent generates responses solely from the specified dataset (knowledge base). You are required to select a knowledge base from the dropdown when running the Agent.", - "de": "Dieser Agent erzeugt Antworten ausschließlich aus dem angegebenen Datensatz (Wissensdatenbank). Beim Ausführen des Agents müssen Sie eine Wissensdatenbank aus dem Dropdown-Menü auswählen.", - "zh": "本工作流仅根据指定知识库内容生成回答。运行时,请在下拉菜单选择需要查询的知识库。"}, - "canvas_type": "Other", - "dsl": { - "components": { - "Agent:ProudDingosShout": { - "downstream": [ - "Message:DarkRavensType" - ], - "obj": { - "component_name": "Agent", - "params": { - "delay_after_error": 1, - "description": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "User's query: {sys.query}\n\nRetrieval content: {Retrieval:RudeCyclesKneel@formalized_content}", - "role": "user" - } - ], - "sys_prompt": "# Role\nYou are the **Docs QA Agent**, a specialized knowledge base assistant responsible for providing accurate answers based strictly on the connected documentation repository.\n# Core Principles\n1. **Knowledge Base Only**: Answer questions EXCLUSIVELY based on information retrieved from the connected knowledge base.\n2. **No Content Creation**: Never generate, infer, or create information that is not explicitly present in the retrieved documents.\n3. **Source Transparency**: Always indicate when information comes from the knowledge base vs. when it's unavailable.\n4. **Accuracy Over Completeness**: Prefer incomplete but accurate answers over complete but potentially inaccurate ones.\n# Response Guidelines\n## When Information is Available\n- Provide direct answers based on retrieved content\n- Quote relevant sections when helpful\n- Cite the source document/section if available\n- Use phrases like: \"According to the documentation...\" or \"Based on the knowledge base...\"\n## When Information is Unavailable\n- Clearly state: \"I cannot find this information in the current knowledge base.\"\n- Do NOT attempt to fill gaps with general knowledge\n- Suggest alternative questions that might be covered in the docs\n- Use phrases like: \"The documentation does not cover...\" or \"This information is not available in the knowledge base.\"\n# Response Format\n```markdown\n## Answer\n[Your response based strictly on knowledge base content]\n**Always do these:**\n- Use the Retrieval tool for every question\n- Be transparent about information availability\n- Stick to documented facts only\n- Acknowledge knowledge base limitations", - "temperature": 0.1, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "Retrieval:RudeCyclesKneel" - ] - }, - "Message:DarkRavensType": { - "downstream": [], - "obj": { - "component_name": "Message", - "params": { - "content": [ - "{Agent:ProudDingosShout@content}" - ] - } - }, - "upstream": [ - "Agent:ProudDingosShout" - ] - }, - "Retrieval:RudeCyclesKneel": { - "downstream": [ - "Agent:ProudDingosShout" - ], - "obj": { - "component_name": "Retrieval", - "params": { - "cross_languages": [], - "empty_response": "", - "kb_ids": [ - "begin@knowledge base" - ], - "keywords_similarity_weight": 0.7, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - } - }, - "query": "sys.query", - "rerank_id": "", - "similarity_threshold": 0.2, - "top_k": 1024, - "top_n": 8, - "use_kg": false - } - }, - "upstream": [ - "begin" - ] - }, - "begin": { - "downstream": [ - "Retrieval:RudeCyclesKneel" - ], - "obj": { - "component_name": "Begin", - "params": { - "enablePrologue": true, - "inputs": { - "knowledge base": { - "name": "knowledge base", - "optional": false, - "options": [ - "knowledge base 1", - "knowledge base 2", - "knowledge base 3" - ], - "type": "options" - } - }, - "mode": "conversational", - "prologue": "Hi! I'm your retrieval assistant. What do you want to ask?" - } - }, - "upstream": [] - } - }, - "globals": { - "sys.conversation_turns": 0, - "sys.files": [], - "sys.query": "", - "sys.user_id": "" - }, - "graph": { - "edges": [ - { - "data": { - "isHovered": false - }, - "id": "xy-edge__beginstart-Retrieval:RudeCyclesKneelend", - "source": "begin", - "sourceHandle": "start", - "target": "Retrieval:RudeCyclesKneel", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Retrieval:RudeCyclesKneelstart-Agent:ProudDingosShoutend", - "source": "Retrieval:RudeCyclesKneel", - "sourceHandle": "start", - "target": "Agent:ProudDingosShout", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:ProudDingosShoutstart-Message:DarkRavensTypeend", - "source": "Agent:ProudDingosShout", - "sourceHandle": "start", - "target": "Message:DarkRavensType", - "targetHandle": "end" - } - ], - "nodes": [ - { - "data": { - "form": { - "enablePrologue": true, - "inputs": { - "knowledge base": { - "name": "knowledge base", - "optional": false, - "options": [ - "knowledge base 1", - "knowledge base 2", - "knowledge base 3" - ], - "type": "options" - } - }, - "mode": "conversational", - "prologue": "Hi! I'm your retrieval assistant. What do you want to ask?" - }, - "label": "Begin", - "name": "begin" - }, - "id": "begin", - "measured": { - "height": 76, - "width": 200 - }, - "position": { - "x": 50, - "y": 200 - }, - "selected": false, - "sourcePosition": "left", - "targetPosition": "right", - "type": "beginNode" - }, - { - "data": { - "form": { - "cross_languages": [], - "empty_response": "", - "kb_ids": [ - "begin@knowledge base" - ], - "keywords_similarity_weight": 0.7, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - } - }, - "query": "sys.query", - "rerank_id": "", - "similarity_threshold": 0.2, - "top_k": 1024, - "top_n": 8, - "use_kg": false - }, - "label": "Retrieval", - "name": "Retrieval" - }, - "dragging": false, - "id": "Retrieval:RudeCyclesKneel", - "measured": { - "height": 96, - "width": 200 - }, - "position": { - "x": 368.9985951155415, - "y": 188.91748618260078 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "retrievalNode" - }, - { - "data": { - "form": { - "delay_after_error": 1, - "description": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "User's query: {sys.query}\n\nRetrieval content: {Retrieval:RudeCyclesKneel@formalized_content}", - "role": "user" - } - ], - "sys_prompt": "# Role\nYou are the **Docs QA Agent**, a specialized knowledge base assistant responsible for providing accurate answers based strictly on the connected documentation repository.\n# Core Principles\n1. **Knowledge Base Only**: Answer questions EXCLUSIVELY based on information retrieved from the connected knowledge base.\n2. **No Content Creation**: Never generate, infer, or create information that is not explicitly present in the retrieved documents.\n3. **Source Transparency**: Always indicate when information comes from the knowledge base vs. when it's unavailable.\n4. **Accuracy Over Completeness**: Prefer incomplete but accurate answers over complete but potentially inaccurate ones.\n# Response Guidelines\n## When Information is Available\n- Provide direct answers based on retrieved content\n- Quote relevant sections when helpful\n- Cite the source document/section if available\n- Use phrases like: \"According to the documentation...\" or \"Based on the knowledge base...\"\n## When Information is Unavailable\n- Clearly state: \"I cannot find this information in the current knowledge base.\"\n- Do NOT attempt to fill gaps with general knowledge\n- Suggest alternative questions that might be covered in the docs\n- Use phrases like: \"The documentation does not cover...\" or \"This information is not available in the knowledge base.\"\n# Response Format\n```markdown\n## Answer\n[Your response based strictly on knowledge base content]\n**Always do these:**\n- Use the Retrieval tool for every question\n- Be transparent about information availability\n- Stick to documented facts only\n- Acknowledge knowledge base limitations", - "temperature": 0.1, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Agent" - }, - "dragging": false, - "id": "Agent:ProudDingosShout", - "measured": { - "height": 86, - "width": 200 - }, - "position": { - "x": 732.9115613823421, - "y": 173.29966667348305 - }, - "selected": true, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "content": [ - "{Agent:ProudDingosShout@content}" - ] - }, - "label": "Message", - "name": "Message" - }, - "dragging": false, - "id": "Message:DarkRavensType", - "measured": { - "height": 56, - "width": 200 - }, - "position": { - "x": 1072.2594210214197, - "y": 178.92078947906558 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "messageNode" - }, - { - "data": { - "form": { - "text": "This Agent generates responses solely from the specified dataset (knowledge base). \nYou are required to select a knowledge base from the dropdown when running the Agent." - }, - "label": "Note", - "name": "Workflow description" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "height": 179, - "id": "Note:HonestHatsSip", - "measured": { - "height": 179, - "width": 345 - }, - "position": { - "x": 79.79276047764881, - "y": -41.86088007502428 - }, - "resizing": false, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode", - "width": 345 - }, - { - "data": { - "form": { - "text": "Configure the dropdown menu with your knowledge bases for retrieval." - }, - "label": "Note", - "name": "Note: Begin" - }, - "dragHandle": ".note-drag-handle", - "id": "Note:BumpyWaspsAttend", - "measured": { - "height": 136, - "width": 250 - }, - "position": { - "x": 15, - "y": 300 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode" - }, - { - "data": { - "form": { - "text": "The workflow will retrieve data from the knowledge base selected in the dropdown menu." - }, - "label": "Note", - "name": "Note: Retrieval" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "id": "Note:AllFlowersDig", - "measured": { - "height": 136, - "width": 250 - }, - "position": { - "x": 361.872717062755, - "y": 308.6265804950158 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode" - }, - { - "data": { - "form": { - "text": "The Agent will generate responses according to the information retrieved from the chosen knowledge base." - }, - "label": "Note", - "name": "Note: Agent" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "id": "Note:UpsetGlassesDeny", - "measured": { - "height": 136, - "width": 250 - }, - "position": { - "x": 695.7034747745811, - "y": 321.3328650385139 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode" - } - ] - }, - "history": [], - "messages": [], - "path": [], - "retrieval": [] - }, - "avatar": "data:image/png;base64,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" -} \ No newline at end of file diff --git a/agent/templates/customer_review_analysis.json b/agent/templates/customer_feedback_dispatcher.json similarity index 99% rename from agent/templates/customer_review_analysis.json rename to agent/templates/customer_feedback_dispatcher.json index b6ecc76846..822a9dbd6a 100644 --- a/agent/templates/customer_review_analysis.json +++ b/agent/templates/customer_feedback_dispatcher.json @@ -2,13 +2,13 @@ { "id": 11, "title": { - "en": "Customer Review Analysis", - "de": "Kundenbewertungsanalyse", - "zh": "客户评价分析"}, + "en": "Customer feedback disptacher", + "de": "Feedback-Lotse", + "zh": "客户反馈协调员"}, "description": { "en": "Automatically classify customer reviews using LLM (Large Language Model) and route them via email to the relevant departments.", "de": "Klassifiziert automatisch Kundenbewertungen mithilfe von LLM (Large Language Model) und leitet sie per E-Mail an die zuständigen Abteilungen weiter.", - "zh": "大模型将自动分类客户评价,并通过电子邮件将结果发送到相关部门。"}, + "zh": "该模板将自动分类客户评价,并通过电子邮件将结果发送到相关部门。"}, "canvas_type": "Customer Support", "dsl": { "components": { diff --git a/agent/templates/customer_service.json b/agent/templates/customer_service.json deleted file mode 100644 index fc3704e535..0000000000 --- a/agent/templates/customer_service.json +++ /dev/null @@ -1,962 +0,0 @@ - -{ - "id": 2, - "title": { - "en": "Multi-Agent Customer Support", - "de": "Multi Agenten Kundensupport", - "zh": "多智能体客服"}, - "description": { - "en": "This is a multi-agent system for intelligent customer service processing based on user intent classification. It uses the lead-agent to identify the type of user needs, assign tasks to sub-agents for processing.", - "de": "Dies ist ein Multi-Agenten-System für die intelligente Kundenservice-Verarbeitung basierend auf Benutzerabsichtsklassifizierung. Es verwendet den Haupt-Agenten zur Identifizierung der Art der Benutzerbedürfnisse und weist Aufgaben an Unter-Agenten zur Verarbeitung zu.", - "zh": "多智能体系统,用于智能客服场景。基于用户意图分类,使用主智能体识别用户需求类型,并将任务分配给子智能体进行处理。"}, - "canvas_type": "Agent", - "dsl": { - "components": { - "Agent:DullTownsHope": { - "downstream": [ - "VariableAggregator:FuzzyBerriesFlow" - ], - "obj": { - "component_name": "Agent", - "params": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.3, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 4096, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "parameter": "Balance", - "presencePenaltyEnabled": false, - "presence_penalty": 0.2, - "prompts": [ - { - "content": "The user query is {sys.query}", - "role": "user" - } - ], - "sys_prompt": "You are an empathetic mood-soothing assistant. \n\nYour role is to comfort and encourage users when they feel upset or frustrated. \n\n- Use a warm, kind, and understanding tone. \n\n- Focus on showing empathy and emotional support rather than solving the problem directly. \n\n- Always encourage users with positive and reassuring statements. ", - "temperature": 0.5, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.85, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "Categorize:DullFriendsThank" - ] - }, - "Agent:KhakiSunsJudge": { - "downstream": [ - "VariableAggregator:FuzzyBerriesFlow" - ], - "obj": { - "component_name": "Agent", - "params": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "The user query is {sys.query}\n\nThe relevant document are {Retrieval:ShyPumasJoke@formalized_content}", - "role": "user" - } - ], - "sys_prompt": "You are a highly professional product information advisor. \n\nYour only mission is to provide accurate, factual, and structured answers to all product-related queries.\n\nAbsolutely no assumptions, guesses, or fabricated content are allowed. \n\n**Key Principles:**\n\n1. **Strict Database Reliance:** \n\n - Every answer must be based solely on the verified product information stored in the relevant documen.\n\n - You are NOT allowed to invent, speculate, or infer details beyond what is retrieved. \n\n - If you cannot find relevant data, respond with: *\"I cannot find this information in our official product database. Please check back later or provide more details for further search.\"*\n\n2. **Information Accuracy and Structure:** \n\n - Provide information in a clear, concise, and professional way. \n\n - Use bullet points or numbered lists if there are multiple key points (e.g., features, price, warranty, technical specifications). \n\n - Always specify the version or model number when applicable to avoid confusion.\n\n3. **Tone and Style:** \n\n - Maintain a polite, professional, and helpful tone at all times. \n\n - Avoid marketing exaggeration or promotional language; stay strictly factual. \n\n - Do not express personal opinions; only cite official product data.\n\n4. **User Guidance:** \n\n - If the user’s query is unclear or too broad, politely request clarification or guide them to provide more specific product details (e.g., product name, model, version). \n\n - Example: *\"Could you please specify the product model or category so I can retrieve the most relevant information for you?\"*\n\n5. **Response Length and Formatting:** \n\n - Keep each answer within 100–150 words for general queries. \n\n - For complex or multi-step explanations, you may extend to 200–250 words, but always remain clear and well-structured.\n\n6. **Critical Reminder:** \n\nYour authority and reliability depend entirely on the relevant document responses. Any fabricated, speculative, or unverified content will be considered a critical failure of your role.\n\n\n", - "temperature": 0.1, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "Retrieval:ShyPumasJoke" - ] - }, - "Agent:TwelveOwlsWatch": { - "downstream": [ - "VariableAggregator:FuzzyBerriesFlow" - ], - "obj": { - "component_name": "Agent", - "params": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.3, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 4096, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "parameter": "Balance", - "presencePenaltyEnabled": false, - "presence_penalty": 0.2, - "prompts": [ - { - "content": "The user query is {sys.query}", - "role": "user" - } - ], - "sys_prompt": "You are a friendly and casual conversational assistant. \n\nYour primary goal is to engage users in light and enjoyable daily conversation. \n\n- Keep a natural, relaxed, and positive tone. \n\n- Avoid sensitive, controversial, or negative topics. \n\n- You may gently guide the conversation by introducing related casual topics if the user shows interest. \n\n", - "temperature": 0.5, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.85, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "Categorize:DullFriendsThank" - ] - }, - "Categorize:DullFriendsThank": { - "downstream": [ - "Message:BreezyDonutsHeal", - "Agent:TwelveOwlsWatch", - "Agent:DullTownsHope", - "Retrieval:ShyPumasJoke" - ], - "obj": { - "component_name": "Categorize", - "params": { - "category_description": { - "1. contact": { - "description": "This answer provide a specific contact information, like e-mail, phone number, wechat number, line number, twitter, discord, etc,.", - "examples": [ - "My phone number is 203921\nkevinhu.hk@gmail.com\nThis is my discord number: johndowson_29384\n13212123432\n8379829" - ], - "to": [ - "Message:BreezyDonutsHeal" - ] - }, - "2. casual": { - "description": "The question is not about the product usage, appearance and how it works. Just casual chat.", - "examples": [ - "How are you doing?\nWhat is your name?\nAre you a robot?\nWhat's the weather?\nWill it rain?" - ], - "to": [ - "Agent:TwelveOwlsWatch" - ] - }, - "3. complain": { - "description": "Complain even curse about the product or service you provide. But the comment is not specific enough.", - "examples": [ - "How bad is it.\nIt's really sucks.\nDamn, for God's sake, can it be more steady?\nShit, I just can't use this shit.\nI can't stand it anymore." - ], - "to": [ - "Agent:DullTownsHope" - ] - }, - "4. product related": { - "description": "The question is about the product usage, appearance and how it works.", - "examples": [ - "Why it always beaming?\nHow to install it onto the wall?\nIt leaks, what to do?\nException: Can't connect to ES cluster\nHow to build the RAGFlow image from scratch" - ], - "to": [ - "Retrieval:ShyPumasJoke" - ] - } - }, - "llm_id": "deepseek-chat@DeepSeek", - "message_history_window_size": 1, - "outputs": { - "category_name": { - "type": "string" - } - }, - "query": "sys.query", - "temperature": "0.1" - } - }, - "upstream": [ - "begin" - ] - }, - "Message:BreezyDonutsHeal": { - "downstream": [], - "obj": { - "component_name": "Message", - "params": { - "content": [ - "Okay, I've already write this down. What else I can do for you?", - "Get it. What else I can do for you?", - "Thanks for your trust! Our expert will contact ASAP. So, anything else I can do for you?", - "Thanks! So, anything else I can do for you?" - ] - } - }, - "upstream": [ - "Categorize:DullFriendsThank" - ] - }, - "Message:DryBusesCarry": { - "downstream": [], - "obj": { - "component_name": "Message", - "params": { - "content": [ - "{VariableAggregator:FuzzyBerriesFlow@LLM_Response}" - ] - } - }, - "upstream": [ - "VariableAggregator:FuzzyBerriesFlow" - ] - }, - "Retrieval:ShyPumasJoke": { - "downstream": [ - "Agent:KhakiSunsJudge" - ], - "obj": { - "component_name": "Retrieval", - "params": { - "cross_languages": [], - "empty_response": "", - "kb_ids": [], - "keywords_similarity_weight": 0.7, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - } - }, - "query": "sys.query", - "rerank_id": "", - "similarity_threshold": 0.2, - "top_k": 1024, - "top_n": 8, - "use_kg": false - } - }, - "upstream": [ - "Categorize:DullFriendsThank" - ] - }, - "VariableAggregator:FuzzyBerriesFlow": { - "downstream": [ - "Message:DryBusesCarry" - ], - "obj": { - "component_name": "VariableAggregator", - "params": { - "groups": [ - { - "group_name": "LLM_Response", - "type": "string", - "variables": [ - { - "value": "Agent:TwelveOwlsWatch@content" - }, - { - "value": "Agent:DullTownsHope@content" - }, - { - "value": "Agent:KhakiSunsJudge@content" - } - ] - } - ], - "outputs": { - "LLM_Response": { - "type": "string" - } - } - } - }, - "upstream": [ - "Agent:DullTownsHope", - "Agent:TwelveOwlsWatch", - "Agent:KhakiSunsJudge" - ] - }, - "begin": { - "downstream": [ - "Categorize:DullFriendsThank" - ], - "obj": { - "component_name": "Begin", - "params": { - "enablePrologue": true, - "inputs": {}, - "mode": "conversational", - "prologue": "Hi! I'm an official AI customer service representative. How can I help you?" - } - }, - "upstream": [] - } - }, - "globals": { - "sys.conversation_turns": 0, - "sys.files": [], - "sys.query": "", - "sys.user_id": "" - }, - "graph": { - "edges": [ - { - "data": { - "isHovered": false - }, - "id": "xy-edge__beginstart-Categorize:DullFriendsThankend", - "source": "begin", - "sourceHandle": "start", - "target": "Categorize:DullFriendsThank", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Categorize:DullFriendsThanke4d754a5-a33e-4096-8648-8688e5474a15-Message:BreezyDonutsHealend", - "source": "Categorize:DullFriendsThank", - "sourceHandle": "e4d754a5-a33e-4096-8648-8688e5474a15", - "target": "Message:BreezyDonutsHeal", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Categorize:DullFriendsThank8cbf6ea3-a176-490d-9f8c-86373c932583-Agent:TwelveOwlsWatchend", - "source": "Categorize:DullFriendsThank", - "sourceHandle": "8cbf6ea3-a176-490d-9f8c-86373c932583", - "target": "Agent:TwelveOwlsWatch", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Categorize:DullFriendsThankacc40a78-1b9e-4d2f-b5d6-64e01ab69269-Agent:DullTownsHopeend", - "source": "Categorize:DullFriendsThank", - "sourceHandle": "acc40a78-1b9e-4d2f-b5d6-64e01ab69269", - "target": "Agent:DullTownsHope", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Categorize:DullFriendsThankdfa5eead-9341-4f22-9236-068dbfb745e8-Retrieval:ShyPumasJokeend", - "source": "Categorize:DullFriendsThank", - "sourceHandle": "dfa5eead-9341-4f22-9236-068dbfb745e8", - "target": "Retrieval:ShyPumasJoke", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Retrieval:ShyPumasJokestart-Agent:KhakiSunsJudgeend", - "source": "Retrieval:ShyPumasJoke", - "sourceHandle": "start", - "target": "Agent:KhakiSunsJudge", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:DullTownsHopestart-VariableAggregator:FuzzyBerriesFlowend", - "source": "Agent:DullTownsHope", - "sourceHandle": "start", - "target": "VariableAggregator:FuzzyBerriesFlow", - "targetHandle": "end" - }, - { - "id": "xy-edge__Agent:TwelveOwlsWatchstart-VariableAggregator:FuzzyBerriesFlowend", - "markerEnd": "logo", - "source": "Agent:TwelveOwlsWatch", - "sourceHandle": "start", - "target": "VariableAggregator:FuzzyBerriesFlow", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:KhakiSunsJudgestart-VariableAggregator:FuzzyBerriesFlowend", - "markerEnd": "logo", - "source": "Agent:KhakiSunsJudge", - "sourceHandle": "start", - "target": "VariableAggregator:FuzzyBerriesFlow", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - }, - { - "id": "xy-edge__VariableAggregator:FuzzyBerriesFlowstart-Message:DryBusesCarryend", - "source": "VariableAggregator:FuzzyBerriesFlow", - "sourceHandle": "start", - "target": "Message:DryBusesCarry", - "targetHandle": "end" - } - ], - "nodes": [ - { - "data": { - "form": { - "enablePrologue": true, - "inputs": {}, - "mode": "conversational", - "prologue": "Hi! I'm an official AI customer service representative. How can I help you?" - }, - "label": "Begin", - "name": "begin" - }, - "id": "begin", - "measured": { - "height": 48, - "width": 200 - }, - "position": { - "x": 50, - "y": 200 - }, - "selected": false, - "sourcePosition": "left", - "targetPosition": "right", - "type": "beginNode" - }, - { - "data": { - "form": { - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.5, - "items": [ - { - "description": "This answer provide a specific contact information, like e-mail, phone number, wechat number, line number, twitter, discord, etc,.", - "examples": [ - { - "value": "My phone number is 203921\nkevinhu.hk@gmail.com\nThis is my discord number: johndowson_29384\n13212123432\n8379829" - } - ], - "name": "1. contact", - "uuid": "e4d754a5-a33e-4096-8648-8688e5474a15" - }, - { - "description": "The question is not about the product usage, appearance and how it works. Just casual chat.", - "examples": [ - { - "value": "How are you doing?\nWhat is your name?\nAre you a robot?\nWhat's the weather?\nWill it rain?" - } - ], - "name": "2. casual", - "uuid": "8cbf6ea3-a176-490d-9f8c-86373c932583" - }, - { - "description": "Complain even curse about the product or service you provide. But the comment is not specific enough.", - "examples": [ - { - "value": "How bad is it.\nIt's really sucks.\nDamn, for God's sake, can it be more steady?\nShit, I just can't use this shit.\nI can't stand it anymore." - } - ], - "name": "3. complain", - "uuid": "acc40a78-1b9e-4d2f-b5d6-64e01ab69269" - }, - { - "description": "The question is about the product usage, appearance and how it works.", - "examples": [ - { - "value": "Why it always beaming?\nHow to install it onto the wall?\nIt leaks, what to do?\nException: Can't connect to ES cluster\nHow to build the RAGFlow image from scratch" - } - ], - "name": "4. product related", - "uuid": "dfa5eead-9341-4f22-9236-068dbfb745e8" - } - ], - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_tokens": 4096, - "message_history_window_size": 1, - "outputs": { - "category_name": { - "type": "string" - } - }, - "parameter": "Precise", - "presencePenaltyEnabled": false, - "presence_penalty": 0.5, - "query": "sys.query", - "temperature": "0.1", - "temperatureEnabled": true, - "topPEnabled": false, - "top_p": 0.75 - }, - "label": "Categorize", - "name": "Categorize" - }, - "dragging": false, - "id": "Categorize:DullFriendsThank", - "measured": { - "height": 218, - "width": 200 - }, - "position": { - "x": 377.1140727959881, - "y": 138.1799140251472 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "categorizeNode" - }, - { - "data": { - "form": { - "content": [ - "Okay, I've already write this down. What else I can do for you?", - "Get it. What else I can do for you?", - "Thanks for your trust! Our expert will contact ASAP. So, anything else I can do for you?", - "Thanks! So, anything else I can do for you?" - ] - }, - "label": "Message", - "name": "What else?" - }, - "dragging": false, - "id": "Message:BreezyDonutsHeal", - "measured": { - "height": 56, - "width": 200 - }, - "position": { - "x": 724.8348409169271, - "y": 60.09138437270154 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "messageNode" - }, - { - "data": { - "form": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.3, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 4096, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "parameter": "Balance", - "presencePenaltyEnabled": false, - "presence_penalty": 0.2, - "prompts": [ - { - "content": "The user query is {sys.query}", - "role": "user" - } - ], - "sys_prompt": "You are a friendly and casual conversational assistant. \n\nYour primary goal is to engage users in light and enjoyable daily conversation. \n\n- Keep a natural, relaxed, and positive tone. \n\n- Avoid sensitive, controversial, or negative topics. \n\n- You may gently guide the conversation by introducing related casual topics if the user shows interest. \n\n", - "temperature": 0.5, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.85, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Causal chat" - }, - "dragging": false, - "id": "Agent:TwelveOwlsWatch", - "measured": { - "height": 84, - "width": 200 - }, - "position": { - "x": 720.4965892695689, - "y": 167.46311264481432 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.3, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 4096, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "parameter": "Balance", - "presencePenaltyEnabled": false, - "presence_penalty": 0.2, - "prompts": [ - { - "content": "The user query is {sys.query}", - "role": "user" - } - ], - "sys_prompt": "You are an empathetic mood-soothing assistant. \n\nYour role is to comfort and encourage users when they feel upset or frustrated. \n\n- Use a warm, kind, and understanding tone. \n\n- Focus on showing empathy and emotional support rather than solving the problem directly. \n\n- Always encourage users with positive and reassuring statements. ", - "temperature": 0.5, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.85, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Soothe mood" - }, - "dragging": false, - "id": "Agent:DullTownsHope", - "measured": { - "height": 84, - "width": 200 - }, - "position": { - "x": 722.665715093248, - "y": 281.3422183879642 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "cross_languages": [], - "empty_response": "", - "kb_ids": [], - "keywords_similarity_weight": 0.7, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - } - }, - "query": "sys.query", - "rerank_id": "", - "similarity_threshold": 0.2, - "top_k": 1024, - "top_n": 8, - "use_kg": false - }, - "label": "Retrieval", - "name": "Search product info" - }, - "dragging": false, - "id": "Retrieval:ShyPumasJoke", - "measured": { - "height": 50, - "width": 200 - }, - "position": { - "x": 645.6873721057459, - "y": 516.6923702571407 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "retrievalNode" - }, - { - "data": { - "form": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "The user query is {sys.query}\n\nThe relevant document are {Retrieval:ShyPumasJoke@formalized_content}", - "role": "user" - } - ], - "sys_prompt": "You are a highly professional product information advisor. \n\nYour only mission is to provide accurate, factual, and structured answers to all product-related queries.\n\nAbsolutely no assumptions, guesses, or fabricated content are allowed. \n\n**Key Principles:**\n\n1. **Strict Database Reliance:** \n\n - Every answer must be based solely on the verified product information stored in the relevant documen.\n\n - You are NOT allowed to invent, speculate, or infer details beyond what is retrieved. \n\n - If you cannot find relevant data, respond with: *\"I cannot find this information in our official product database. Please check back later or provide more details for further search.\"*\n\n2. **Information Accuracy and Structure:** \n\n - Provide information in a clear, concise, and professional way. \n\n - Use bullet points or numbered lists if there are multiple key points (e.g., features, price, warranty, technical specifications). \n\n - Always specify the version or model number when applicable to avoid confusion.\n\n3. **Tone and Style:** \n\n - Maintain a polite, professional, and helpful tone at all times. \n\n - Avoid marketing exaggeration or promotional language; stay strictly factual. \n\n - Do not express personal opinions; only cite official product data.\n\n4. **User Guidance:** \n\n - If the user’s query is unclear or too broad, politely request clarification or guide them to provide more specific product details (e.g., product name, model, version). \n\n - Example: *\"Could you please specify the product model or category so I can retrieve the most relevant information for you?\"*\n\n5. **Response Length and Formatting:** \n\n - Keep each answer within 100–150 words for general queries. \n\n - For complex or multi-step explanations, you may extend to 200–250 words, but always remain clear and well-structured.\n\n6. **Critical Reminder:** \n\nYour authority and reliability depend entirely on the relevant document responses. Any fabricated, speculative, or unverified content will be considered a critical failure of your role.\n\n\n", - "temperature": 0.1, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Product info" - }, - "dragging": false, - "id": "Agent:KhakiSunsJudge", - "measured": { - "height": 84, - "width": 200 - }, - "position": { - "x": 726.580040161058, - "y": 386.5448208363979 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "text": "This is an intelligent customer service processing system workflow based on user intent classification. It uses LLM to identify user demand types and transfers them to the corresponding professional agent for processing." - }, - "label": "Note", - "name": "Workflow Overall Description" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "height": 171, - "id": "Note:AllGuestsShow", - "measured": { - "height": 171, - "width": 380 - }, - "position": { - "x": -283.6407251474677, - "y": 157.2943019466498 - }, - "resizing": false, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode", - "width": 380 - }, - { - "data": { - "form": { - "text": "Here, product document snippets related to the user's question will be retrieved from the knowledge base first, and the relevant document snippets will be passed to the LLM together with the user's question." - }, - "label": "Note", - "name": "Product info Agent" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "height": 154, - "id": "Note:IcyBooksCough", - "measured": { - "height": 154, - "width": 370 - }, - "position": { - "x": 1014.0959071234828, - "y": 492.830874176321 - }, - "resizing": false, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode", - "width": 370 - }, - { - "data": { - "form": { - "text": "Here, a text will be randomly selected for answering" - }, - "label": "Note", - "name": "What else?" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "id": "Note:AllThingsHide", - "measured": { - "height": 136, - "width": 249 - }, - "position": { - "x": 770.7060131788647, - "y": -123.23496705283817 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode" - }, - { - "data": { - "form": { - "groups": [ - { - "group_name": "LLM_Response", - "type": "string", - "variables": [ - { - "value": "Agent:TwelveOwlsWatch@content" - }, - { - "value": "Agent:DullTownsHope@content" - }, - { - "value": "Agent:KhakiSunsJudge@content" - } - ] - } - ], - "outputs": { - "LLM_Response": { - "type": "string" - } - } - }, - "label": "VariableAggregator", - "name": "Variable aggregator" - }, - "dragging": false, - "id": "VariableAggregator:FuzzyBerriesFlow", - "measured": { - "height": 150, - "width": 200 - }, - "position": { - "x": 1061.596672609154, - "y": 247.90496561846572 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "variableAggregatorNode" - }, - { - "data": { - "form": { - "content": [ - "{VariableAggregator:FuzzyBerriesFlow@LLM_Response}" - ] - }, - "label": "Message", - "name": "Response" - }, - "dragging": false, - "id": "Message:DryBusesCarry", - "measured": { - "height": 50, - "width": 200 - }, - "position": { - "x": 1364.5500382017049, - "y": 296.59667260915404 - }, - "selected": true, - "sourcePosition": "right", - "targetPosition": "left", - "type": "messageNode" - } - ] - }, - "history": [], - "messages": [], - "path": [], - "retrieval": [], - "variables": {} - }, - "avatar": "data:image/png;base64,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" -} \ No newline at end of file diff --git a/agent/templates/customer_support.json b/agent/templates/customer_support.json deleted file mode 100644 index 5eaa3789d6..0000000000 --- a/agent/templates/customer_support.json +++ /dev/null @@ -1,886 +0,0 @@ - -{ - "id": 10, - "title": { - "en":"Customer Support", - "de": "Kundensupport", - "zh": "客户支持"}, - "description": { - "en": "This is an intelligent customer service processing system workflow based on user intent classification. It uses LLM to identify user demand types and transfers them to the corresponding professional agent for processing.", - "de": "Dies ist ein intelligentes Kundenservice-Verarbeitungssystem-Workflow basierend auf Benutzerabsichtsklassifizierung. Es verwendet LLM zur Identifizierung von Benutzeranforderungstypen und überträgt diese zur Verarbeitung an den entsprechenden professionellen Agenten.", - "zh": "工作流系统,用于智能客服场景。基于用户意图分类。使用大模型识别用户需求类型,并将需求转移给相应的智能体进行处理。"}, - "canvas_type": "Customer Support", - "dsl": { - "components": { - "Agent:DullTownsHope": { - "downstream": [ - "Message:GreatDucksArgue" - ], - "obj": { - "component_name": "Agent", - "params": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.3, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 4096, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "parameter": "Balance", - "presencePenaltyEnabled": false, - "presence_penalty": 0.2, - "prompts": [ - { - "content": "The user query is {sys.query}", - "role": "user" - } - ], - "sys_prompt": "You are an empathetic mood-soothing assistant. \n\nYour role is to comfort and encourage users when they feel upset or frustrated. \n\n- Use a warm, kind, and understanding tone. \n\n- Focus on showing empathy and emotional support rather than solving the problem directly. \n\n- Always encourage users with positive and reassuring statements. ", - "temperature": 0.5, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.85, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "Categorize:DullFriendsThank" - ] - }, - "Agent:KhakiSunsJudge": { - "downstream": [ - "Message:GreatDucksArgue" - ], - "obj": { - "component_name": "Agent", - "params": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "The user query is {sys.query}\n\nThe relevant document are {Retrieval:ShyPumasJoke@formalized_content}", - "role": "user" - } - ], - "sys_prompt": "You are a highly professional product information advisor. \n\nYour only mission is to provide accurate, factual, and structured answers to all product-related queries.\n\nAbsolutely no assumptions, guesses, or fabricated content are allowed. \n\n**Key Principles:**\n\n1. **Strict Database Reliance:** \n\n - Every answer must be based solely on the verified product information stored in the relevant documen.\n\n - You are NOT allowed to invent, speculate, or infer details beyond what is retrieved. \n\n - If you cannot find relevant data, respond with: *\"I cannot find this information in our official product database. Please check back later or provide more details for further search.\"*\n\n2. **Information Accuracy and Structure:** \n\n - Provide information in a clear, concise, and professional way. \n\n - Use bullet points or numbered lists if there are multiple key points (e.g., features, price, warranty, technical specifications). \n\n - Always specify the version or model number when applicable to avoid confusion.\n\n3. **Tone and Style:** \n\n - Maintain a polite, professional, and helpful tone at all times. \n\n - Avoid marketing exaggeration or promotional language; stay strictly factual. \n\n - Do not express personal opinions; only cite official product data.\n\n4. **User Guidance:** \n\n - If the user\u2019s query is unclear or too broad, politely request clarification or guide them to provide more specific product details (e.g., product name, model, version). \n\n - Example: *\"Could you please specify the product model or category so I can retrieve the most relevant information for you?\"*\n\n5. **Response Length and Formatting:** \n\n - Keep each answer within 100\u2013150 words for general queries. \n\n - For complex or multi-step explanations, you may extend to 200\u2013250 words, but always remain clear and well-structured.\n\n6. **Critical Reminder:** \n\nYour authority and reliability depend entirely on the relevant document responses. Any fabricated, speculative, or unverified content will be considered a critical failure of your role.\n\n\n", - "temperature": 0.1, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "Retrieval:ShyPumasJoke" - ] - }, - "Agent:TwelveOwlsWatch": { - "downstream": [ - "Message:GreatDucksArgue" - ], - "obj": { - "component_name": "Agent", - "params": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.3, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 4096, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "parameter": "Balance", - "presencePenaltyEnabled": false, - "presence_penalty": 0.2, - "prompts": [ - { - "content": "The user query is {sys.query}", - "role": "user" - } - ], - "sys_prompt": "You are a friendly and casual conversational assistant. \n\nYour primary goal is to engage users in light and enjoyable daily conversation. \n\n- Keep a natural, relaxed, and positive tone. \n\n- Avoid sensitive, controversial, or negative topics. \n\n- You may gently guide the conversation by introducing related casual topics if the user shows interest. \n\n", - "temperature": 0.5, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.85, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "Categorize:DullFriendsThank" - ] - }, - "Categorize:DullFriendsThank": { - "downstream": [ - "Message:BreezyDonutsHeal", - "Agent:TwelveOwlsWatch", - "Agent:DullTownsHope", - "Retrieval:ShyPumasJoke" - ], - "obj": { - "component_name": "Categorize", - "params": { - "category_description": { - "1. contact": { - "description": "This answer provide a specific contact information, like e-mail, phone number, wechat number, line number, twitter, discord, etc,.", - "examples": [ - "My phone number is 203921\nkevinhu.hk@gmail.com\nThis is my discord number: johndowson_29384\n13212123432\n8379829" - ], - "to": [ - "Message:BreezyDonutsHeal" - ] - }, - "2. casual": { - "description": "The question is not about the product usage, appearance and how it works. Just casual chat.", - "examples": [ - "How are you doing?\nWhat is your name?\nAre you a robot?\nWhat's the weather?\nWill it rain?" - ], - "to": [ - "Agent:TwelveOwlsWatch" - ] - }, - "3. complain": { - "description": "Complain even curse about the product or service you provide. But the comment is not specific enough.", - "examples": [ - "How bad is it.\nIt's really sucks.\nDamn, for God's sake, can it be more steady?\nShit, I just can't use this shit.\nI can't stand it anymore." - ], - "to": [ - "Agent:DullTownsHope" - ] - }, - "4. product related": { - "description": "The question is about the product usage, appearance and how it works.", - "examples": [ - "Why it always beaming?\nHow to install it onto the wall?\nIt leaks, what to do?\nException: Can't connect to ES cluster\nHow to build the RAGFlow image from scratch" - ], - "to": [ - "Retrieval:ShyPumasJoke" - ] - } - }, - "llm_id": "deepseek-chat@DeepSeek", - "message_history_window_size": 1, - "outputs": { - "category_name": { - "type": "string" - } - }, - "query": "sys.query", - "temperature": "0.1" - } - }, - "upstream": [ - "begin" - ] - }, - "Message:BreezyDonutsHeal": { - "downstream": [], - "obj": { - "component_name": "Message", - "params": { - "content": [ - "Okay, I've already write this down. What else I can do for you?", - "Get it. What else I can do for you?", - "Thanks for your trust! Our expert will contact ASAP. So, anything else I can do for you?", - "Thanks! So, anything else I can do for you?" - ] - } - }, - "upstream": [ - "Categorize:DullFriendsThank" - ] - }, - "Message:GreatDucksArgue": { - "downstream": [], - "obj": { - "component_name": "Message", - "params": { - "content": [ - "{Agent:TwelveOwlsWatch@content}{Agent:DullTownsHope@content}{Agent:KhakiSunsJudge@content}" - ] - } - }, - "upstream": [ - "Agent:TwelveOwlsWatch", - "Agent:DullTownsHope", - "Agent:KhakiSunsJudge" - ] - }, - "Retrieval:ShyPumasJoke": { - "downstream": [ - "Agent:KhakiSunsJudge" - ], - "obj": { - "component_name": "Retrieval", - "params": { - "cross_languages": [], - "empty_response": "", - "kb_ids": [], - "keywords_similarity_weight": 0.7, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - } - }, - "query": "sys.query", - "rerank_id": "", - "similarity_threshold": 0.2, - "top_k": 1024, - "top_n": 8, - "use_kg": false - } - }, - "upstream": [ - "Categorize:DullFriendsThank" - ] - }, - "begin": { - "downstream": [ - "Categorize:DullFriendsThank" - ], - "obj": { - "component_name": "Begin", - "params": { - "enablePrologue": true, - "inputs": {}, - "mode": "conversational", - "prologue": "Hi! I'm an official AI customer service representative. How can I help you?" - } - }, - "upstream": [] - } - }, - "globals": { - "sys.conversation_turns": 0, - "sys.files": [], - "sys.query": "", - "sys.user_id": "" - }, - "graph": { - "edges": [ - { - "data": { - "isHovered": false - }, - "id": "xy-edge__beginstart-Categorize:DullFriendsThankend", - "source": "begin", - "sourceHandle": "start", - "target": "Categorize:DullFriendsThank", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Categorize:DullFriendsThanke4d754a5-a33e-4096-8648-8688e5474a15-Message:BreezyDonutsHealend", - "source": "Categorize:DullFriendsThank", - "sourceHandle": "e4d754a5-a33e-4096-8648-8688e5474a15", - "target": "Message:BreezyDonutsHeal", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Categorize:DullFriendsThank8cbf6ea3-a176-490d-9f8c-86373c932583-Agent:TwelveOwlsWatchend", - "source": "Categorize:DullFriendsThank", - "sourceHandle": "8cbf6ea3-a176-490d-9f8c-86373c932583", - "target": "Agent:TwelveOwlsWatch", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Categorize:DullFriendsThankacc40a78-1b9e-4d2f-b5d6-64e01ab69269-Agent:DullTownsHopeend", - "source": "Categorize:DullFriendsThank", - "sourceHandle": "acc40a78-1b9e-4d2f-b5d6-64e01ab69269", - "target": "Agent:DullTownsHope", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Categorize:DullFriendsThankdfa5eead-9341-4f22-9236-068dbfb745e8-Retrieval:ShyPumasJokeend", - "source": "Categorize:DullFriendsThank", - "sourceHandle": "dfa5eead-9341-4f22-9236-068dbfb745e8", - "target": "Retrieval:ShyPumasJoke", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Retrieval:ShyPumasJokestart-Agent:KhakiSunsJudgeend", - "source": "Retrieval:ShyPumasJoke", - "sourceHandle": "start", - "target": "Agent:KhakiSunsJudge", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:TwelveOwlsWatchstart-Message:GreatDucksArgueend", - "source": "Agent:TwelveOwlsWatch", - "sourceHandle": "start", - "target": "Message:GreatDucksArgue", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:DullTownsHopestart-Message:GreatDucksArgueend", - "markerEnd": "logo", - "source": "Agent:DullTownsHope", - "sourceHandle": "start", - "style": { - "stroke": "rgba(91, 93, 106, 1)", - "strokeWidth": 1 - }, - "target": "Message:GreatDucksArgue", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:KhakiSunsJudgestart-Message:GreatDucksArgueend", - "markerEnd": "logo", - "source": "Agent:KhakiSunsJudge", - "sourceHandle": "start", - "style": { - "stroke": "rgba(91, 93, 106, 1)", - "strokeWidth": 1 - }, - "target": "Message:GreatDucksArgue", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - } - ], - "nodes": [ - { - "data": { - "form": { - "enablePrologue": true, - "inputs": {}, - "mode": "conversational", - "prologue": "Hi! I'm an official AI customer service representative. How can I help you?" - }, - "label": "Begin", - "name": "begin" - }, - "id": "begin", - "measured": { - "height": 48, - "width": 200 - }, - "position": { - "x": 50, - "y": 200 - }, - "selected": false, - "sourcePosition": "left", - "targetPosition": "right", - "type": "beginNode" - }, - { - "data": { - "form": { - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.5, - "items": [ - { - "description": "This answer provide a specific contact information, like e-mail, phone number, wechat number, line number, twitter, discord, etc,.", - "examples": [ - { - "value": "My phone number is 203921\nkevinhu.hk@gmail.com\nThis is my discord number: johndowson_29384\n13212123432\n8379829" - } - ], - "name": "1. contact", - "uuid": "e4d754a5-a33e-4096-8648-8688e5474a15" - }, - { - "description": "The question is not about the product usage, appearance and how it works. Just casual chat.", - "examples": [ - { - "value": "How are you doing?\nWhat is your name?\nAre you a robot?\nWhat's the weather?\nWill it rain?" - } - ], - "name": "2. casual", - "uuid": "8cbf6ea3-a176-490d-9f8c-86373c932583" - }, - { - "description": "Complain even curse about the product or service you provide. But the comment is not specific enough.", - "examples": [ - { - "value": "How bad is it.\nIt's really sucks.\nDamn, for God's sake, can it be more steady?\nShit, I just can't use this shit.\nI can't stand it anymore." - } - ], - "name": "3. complain", - "uuid": "acc40a78-1b9e-4d2f-b5d6-64e01ab69269" - }, - { - "description": "The question is about the product usage, appearance and how it works.", - "examples": [ - { - "value": "Why it always beaming?\nHow to install it onto the wall?\nIt leaks, what to do?\nException: Can't connect to ES cluster\nHow to build the RAGFlow image from scratch" - } - ], - "name": "4. product related", - "uuid": "dfa5eead-9341-4f22-9236-068dbfb745e8" - } - ], - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_tokens": 4096, - "message_history_window_size": 1, - "outputs": { - "category_name": { - "type": "string" - } - }, - "parameter": "Precise", - "presencePenaltyEnabled": false, - "presence_penalty": 0.5, - "query": "sys.query", - "temperature": "0.1", - "temperatureEnabled": true, - "topPEnabled": false, - "top_p": 0.75 - }, - "label": "Categorize", - "name": "Categorize" - }, - "dragging": false, - "id": "Categorize:DullFriendsThank", - "measured": { - "height": 204, - "width": 200 - }, - "position": { - "x": 377.1140727959881, - "y": 138.1799140251472 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "categorizeNode" - }, - { - "data": { - "form": { - "content": [ - "Okay, I've already write this down. What else I can do for you?", - "Get it. What else I can do for you?", - "Thanks for your trust! Our expert will contact ASAP. So, anything else I can do for you?", - "Thanks! So, anything else I can do for you?" - ] - }, - "label": "Message", - "name": "What else?" - }, - "dragging": false, - "id": "Message:BreezyDonutsHeal", - "measured": { - "height": 56, - "width": 200 - }, - "position": { - "x": 724.8348409169271, - "y": 60.09138437270154 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "messageNode" - }, - { - "data": { - "form": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.3, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 4096, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "parameter": "Balance", - "presencePenaltyEnabled": false, - "presence_penalty": 0.2, - "prompts": [ - { - "content": "The user query is {sys.query}", - "role": "user" - } - ], - "sys_prompt": "You are a friendly and casual conversational assistant. \n\nYour primary goal is to engage users in light and enjoyable daily conversation. \n\n- Keep a natural, relaxed, and positive tone. \n\n- Avoid sensitive, controversial, or negative topics. \n\n- You may gently guide the conversation by introducing related casual topics if the user shows interest. \n\n", - "temperature": 0.5, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.85, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Causal chat" - }, - "dragging": false, - "id": "Agent:TwelveOwlsWatch", - "measured": { - "height": 84, - "width": 200 - }, - "position": { - "x": 720.4965892695689, - "y": 167.46311264481432 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.3, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 4096, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "parameter": "Balance", - "presencePenaltyEnabled": false, - "presence_penalty": 0.2, - "prompts": [ - { - "content": "The user query is {sys.query}", - "role": "user" - } - ], - "sys_prompt": "You are an empathetic mood-soothing assistant. \n\nYour role is to comfort and encourage users when they feel upset or frustrated. \n\n- Use a warm, kind, and understanding tone. \n\n- Focus on showing empathy and emotional support rather than solving the problem directly. \n\n- Always encourage users with positive and reassuring statements. ", - "temperature": 0.5, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.85, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Soothe mood" - }, - "dragging": false, - "id": "Agent:DullTownsHope", - "measured": { - "height": 84, - "width": 200 - }, - "position": { - "x": 722.665715093248, - "y": 281.3422183879642 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "cross_languages": [], - "empty_response": "", - "kb_ids": [], - "keywords_similarity_weight": 0.7, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - } - }, - "query": "sys.query", - "rerank_id": "", - "similarity_threshold": 0.2, - "top_k": 1024, - "top_n": 8, - "use_kg": false - }, - "label": "Retrieval", - "name": "Search product info" - }, - "dragging": false, - "id": "Retrieval:ShyPumasJoke", - "measured": { - "height": 56, - "width": 200 - }, - "position": { - "x": 645.6873721057459, - "y": 516.6923702571407 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "retrievalNode" - }, - { - "data": { - "form": { - "delay_after_error": 1, - "description": "", - "exception_comment": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": null, - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "deepseek-chat@DeepSeek", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 5, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "The user query is {sys.query}\n\nThe relevant document are {Retrieval:ShyPumasJoke@formalized_content}", - "role": "user" - } - ], - "sys_prompt": "You are a highly professional product information advisor. \n\nYour only mission is to provide accurate, factual, and structured answers to all product-related queries.\n\nAbsolutely no assumptions, guesses, or fabricated content are allowed. \n\n**Key Principles:**\n\n1. **Strict Database Reliance:** \n\n - Every answer must be based solely on the verified product information stored in the relevant documen.\n\n - You are NOT allowed to invent, speculate, or infer details beyond what is retrieved. \n\n - If you cannot find relevant data, respond with: *\"I cannot find this information in our official product database. Please check back later or provide more details for further search.\"*\n\n2. **Information Accuracy and Structure:** \n\n - Provide information in a clear, concise, and professional way. \n\n - Use bullet points or numbered lists if there are multiple key points (e.g., features, price, warranty, technical specifications). \n\n - Always specify the version or model number when applicable to avoid confusion.\n\n3. **Tone and Style:** \n\n - Maintain a polite, professional, and helpful tone at all times. \n\n - Avoid marketing exaggeration or promotional language; stay strictly factual. \n\n - Do not express personal opinions; only cite official product data.\n\n4. **User Guidance:** \n\n - If the user\u2019s query is unclear or too broad, politely request clarification or guide them to provide more specific product details (e.g., product name, model, version). \n\n - Example: *\"Could you please specify the product model or category so I can retrieve the most relevant information for you?\"*\n\n5. **Response Length and Formatting:** \n\n - Keep each answer within 100\u2013150 words for general queries. \n\n - For complex or multi-step explanations, you may extend to 200\u2013250 words, but always remain clear and well-structured.\n\n6. **Critical Reminder:** \n\nYour authority and reliability depend entirely on the relevant document responses. Any fabricated, speculative, or unverified content will be considered a critical failure of your role.\n\n\n", - "temperature": 0.1, - "temperatureEnabled": true, - "tools": [], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Product info" - }, - "dragging": false, - "id": "Agent:KhakiSunsJudge", - "measured": { - "height": 84, - "width": 200 - }, - "position": { - "x": 726.580040161058, - "y": 386.5448208363979 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "content": [ - "{Agent:TwelveOwlsWatch@content}{Agent:DullTownsHope@content}{Agent:KhakiSunsJudge@content}" - ] - }, - "label": "Message", - "name": "Response" - }, - "dragging": false, - "id": "Message:GreatDucksArgue", - "measured": { - "height": 56, - "width": 200 - }, - "position": { - "x": 1073.6401719497055, - "y": 279.1730925642852 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "messageNode" - }, - { - "data": { - "form": { - "text": "This is an intelligent customer service processing system workflow based on user intent classification. It uses LLM to identify user demand types and transfers them to the corresponding professional agent for processing." - }, - "label": "Note", - "name": "Workflow Overall Description" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "height": 171, - "id": "Note:AllGuestsShow", - "measured": { - "height": 171, - "width": 380 - }, - "position": { - "x": -283.6407251474677, - "y": 157.2943019466498 - }, - "resizing": false, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode", - "width": 380 - }, - { - "data": { - "form": { - "text": "Here, product document snippets related to the user's question will be retrieved from the knowledge base first, and the relevant document snippets will be passed to the LLM together with the user's question." - }, - "label": "Note", - "name": "Product info Agent" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "height": 154, - "id": "Note:IcyBooksCough", - "measured": { - "height": 154, - "width": 370 - }, - "position": { - "x": 1014.0959071234828, - "y": 492.830874176321 - }, - "resizing": false, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode", - "width": 370 - }, - { - "data": { - "form": { - "text": "Here, a text will be randomly selected for answering" - }, - "label": "Note", - "name": "What else\uff1f" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "id": "Note:AllThingsHide", - "measured": { - "height": 136, - "width": 249 - }, - "position": { - "x": 770.7060131788647, - "y": -123.23496705283817 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode" - } - ] - }, - "history": [], - "messages": [], - "path": [], - "retrieval": [] - }, - "avatar": "data:image/png;base64,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" -} \ No newline at end of file diff --git a/agent/templates/deep_research.json b/agent/templates/deep_research.json index c1eff2a201..31a15c34b6 100644 --- a/agent/templates/deep_research.json +++ b/agent/templates/deep_research.json @@ -2,13 +2,13 @@ { "id": 1, "title": { - "en": "Deep Research", + "en": "Deep research", "de": "Tiefgehende Recherche", - "zh": "深度研究"}, + "zh": "Deep research"}, "description": { - "en": "For professionals in sales, marketing, policy, or consulting, the Multi-Agent Deep Research Agent conducts structured, multi-step investigations across diverse sources and delivers consulting-style reports with clear citations.", + "en": "For professionals in sales, marketing, policy, or consulting, the Multi-Agent Deep research Agentic workflow conducts structured, multi-step investigations across diverse sources and delivers consulting-style reports with clear citations.", "de": "Für Fachleute in Vertrieb, Marketing, Politik oder Beratung führt der Multi-Agenten-Tiefenforschungsagent strukturierte, mehrstufige Untersuchungen über verschiedene Quellen durch und liefert Berichte im Beratungsstil mit klaren Quellenangaben.", - "zh": "专为销售、市场、政策或咨询领域的专业人士设计,多智能体的深度研究会结合多源信息进行结构化、多步骤地回答问题,并附带有清晰的引用。"}, + "zh": "专为销售、市场、政策或咨询领域的专业人士设计,多智能体的 Deep research 会结合多源信息进行结构化、多步骤地回答问题,并附带有清晰的引用。"}, "canvas_type": "Recommended", "dsl": { "components": { @@ -431,7 +431,7 @@ "visual_files_var": "" }, "label": "Agent", - "name": "Deep Research Agent" + "name": "Deep research Agent" }, "dragging": false, "id": "Agent:NewPumasLick", @@ -692,10 +692,10 @@ { "data": { "form": { - "text": "A Deep Research Agent built on a multi-agent architecture.\nMuch of the credit goes to Anthropic\u2019s blog post, which deeply inspired this design.\n\nhttps://www.anthropic.com/engineering/built-multi-agent-research-system" + "text": "A Deep research Agent built on a multi-agent architecture.\nMuch of the credit goes to Anthropic\u2019s blog post, which deeply inspired this design.\n\nhttps://www.anthropic.com/engineering/built-multi-agent-research-system" }, "label": "Note", - "name": "Multi-Agent Deep Research" + "name": "Multi-Agent Deep research" }, "dragHandle": ".note-drag-handle", "dragging": false, @@ -722,7 +722,7 @@ "text": "Choose a SOTA model with strong reasoning capabilities." }, "label": "Note", - "name": "Deep Research Lead Agent" + "name": "Deep research lead Agent" }, "dragHandle": ".note-drag-handle", "dragging": false, diff --git a/agent/templates/deep_search_r.json b/agent/templates/deep_search_r.json index 268b823577..0cd897dd80 100644 --- a/agent/templates/deep_search_r.json +++ b/agent/templates/deep_search_r.json @@ -2,13 +2,13 @@ { "id": 6, "title": { - "en": "Deep Research", + "en": "Deep research", "de": "Tiefgehende Recherche", - "zh": "深度研究"}, + "zh": "Deep research"}, "description": { - "en": "For professionals in sales, marketing, policy, or consulting, the Multi-Agent Deep Research Agent conducts structured, multi-step investigations across diverse sources and delivers consulting-style reports with clear citations.", + "en": "For professionals in sales, marketing, policy, or consulting, the Multi-Agent Deep research Agent conducts structured, multi-step investigations across diverse sources and delivers consulting-style reports with clear citations.", "de": "Für Fachleute in Vertrieb, Marketing, Politik oder Beratung führt der Multi-Agenten-Tiefenforschungsagent strukturierte, mehrstufige Untersuchungen über verschiedene Quellen durch und liefert Berichte im Beratungsstil mit klaren Quellenangaben.", - "zh": "专为销售、市场、政策或咨询领域的专业人士设计,多智能体的深度研究会结合多源信息进行结构化、多步骤地回答问题,并附带有清晰的引用。"}, + "zh": "专为销售、市场、政策或咨询领域的专业人士设计,多智能体的 Deep research 会结合多源信息进行结构化、多步骤地回答问题,并附带有清晰的引用。"}, "canvas_type": "Agent", "dsl": { "components": { @@ -431,7 +431,7 @@ "visual_files_var": "" }, "label": "Agent", - "name": "Deep Research Agent" + "name": "Deep research Agent" }, "dragging": false, "id": "Agent:NewPumasLick", @@ -692,10 +692,10 @@ { "data": { "form": { - "text": "A Deep Research Agent built on a multi-agent architecture.\nMuch of the credit goes to Anthropic\u2019s blog post, which deeply inspired this design.\n\nhttps://www.anthropic.com/engineering/built-multi-agent-research-system" + "text": "A Deep research Agentic workflow built on a multi-agent architecture.\nMuch of the credit goes to Anthropic\u2019s blog post, which deeply inspired this design.\n\nhttps://www.anthropic.com/engineering/built-multi-agent-research-system" }, "label": "Note", - "name": "Multi-Agent Deep Research" + "name": "Multi-Agent Deep research" }, "dragHandle": ".note-drag-handle", "dragging": false, @@ -722,7 +722,7 @@ "text": "Choose a SOTA model with strong reasoning capabilities." }, "label": "Note", - "name": "Deep Research Lead Agent" + "name": "Deep research lead Agent" }, "dragHandle": ".note-drag-handle", "dragging": false, diff --git a/agent/templates/market_generate_seo_blog.json b/agent/templates/market_seo_article_writer.json similarity index 98% rename from agent/templates/market_generate_seo_blog.json rename to agent/templates/market_seo_article_writer.json index f230efdba7..0309036e14 100644 --- a/agent/templates/market_generate_seo_blog.json +++ b/agent/templates/market_seo_article_writer.json @@ -1,13 +1,13 @@ { "id": 12, "title": { - "en": "Generate SEO Blog", - "de": "SEO Blog generieren", - "zh": "生成SEO博客"}, + "en": "SEO article writer", + "de": "SEO-Blog-Magnetiseur", + "zh": "SEO 博客写手"}, "description": { - "en": "This workflow automatically generates a complete SEO-optimized blog article based on a simple user input. You don't need any writing experience. Just provide a topic or short request — the system will handle the rest.", - "de": "Dieser Workflow generiert automatisch einen vollständigen SEO-optimierten Blogartikel basierend auf einer einfachen Benutzereingabe. Sie benötigen keine Schreiberfahrung. Geben Sie einfach ein Thema oder eine kurze Anfrage ein – das System übernimmt den Rest.", - "zh": "此工作流根据简单的用户输入自动生成完整的SEO博客文章。你无需任何写作经验,只需提供一个主题或简短请求,系统将处理其余部分。"}, + "en": "This SEO article writer automatically generates a complete SEO-optimized blog article based on a simple user input. You don't need any writing experience. Just provide a topic or short request — the system will handle the rest.", + "de": "SEO-Blog-Magnetiseur automatisch einen vollständigen SEO-optimierten Blogartikel basierend auf einer einfachen Benutzereingabe. Sie benötigen keine Schreiberfahrung. Geben Sie einfach ein Thema oder eine kurze Anfrage ein – das System übernimmt den Rest.", + "zh": "此 SEO 博客写手根据简单的用户输入自动生成完整的SEO博客文章。你无需任何写作经验,只需提供一个主题或简短请求,系统将处理其余部分。"}, "canvas_type": "Marketing", "dsl": { "components": { diff --git a/agent/templates/image_lingo.json b/agent/templates/photo_text_translator.json similarity index 96% rename from agent/templates/image_lingo.json rename to agent/templates/photo_text_translator.json index 2fba05b848..fcb6d71b30 100644 --- a/agent/templates/image_lingo.json +++ b/agent/templates/photo_text_translator.json @@ -1,13 +1,13 @@ { "id": 13, "title": { - "en": "ImageLingo", - "de": "ImageLingo", - "zh": "图片解析"}, + "en": "Photo text translator", + "de": "Bild-Dolmetscher", + "zh": "图片文字快译"}, "description": { - "en": "ImageLingo lets you snap any photo containing text—menus, signs, or documents—and instantly recognize and translate it into your language of choice using advanced AI-powered translation technology.", - "de": "ImageLingo ermöglicht es Ihnen, jedes Foto mit Text – Menüs, Schilder oder Dokumente – zu fotografieren und es sofort in Ihre gewünschte Sprache zu erkennen und zu übersetzen, unter Verwendung fortschrittlicher KI-gestützter Übersetzungstechnologie.", - "zh": "多模态大模型允许您拍摄任何包含文本的照片——菜单、标志或文档——立即识别并转换成您选择的语言。"}, + "en": "Photo text translator lets you snap any photo containing text—menus, signs, or documents—and instantly recognize and translate it into your language of choice using advanced AI-powered translation technology.", + "de": "Bild-Dolmetscher ermöglicht es Ihnen, jedes Foto mit Text – Menüs, Schilder oder Dokumente – zu fotografieren und es sofort in Ihre gewünschte Sprache zu erkennen und zu übersetzen, unter Verwendung fortschrittlicher KI-gestützter Übersetzungstechnologie.", + "zh": "图片文字快译允许您拍摄任何包含文本的照片——菜单、标志或文档——立即识别并转换成您选择的语言。"}, "canvas_type": "Consumer App", "dsl": { "components": { diff --git a/agent/templates/knowledge_base_report.json b/agent/templates/reflective_academic_paper_generator.json similarity index 97% rename from agent/templates/knowledge_base_report.json rename to agent/templates/reflective_academic_paper_generator.json index 38cfb71589..bfb3e51e18 100644 --- a/agent/templates/knowledge_base_report.json +++ b/agent/templates/reflective_academic_paper_generator.json @@ -1,13 +1,13 @@ { "id": 20, "title": { - "en": "Report Agent Using Knowledge Base", - "de": "Berichtsagent mit Wissensdatenbank", - "zh": "知识库检索智能体"}, + "en": "Reflective academic paper generator", + "de": "Schreibhilfe für Reflexionspapiere", + "zh": "学术论文生成助手"}, "description": { - "en": "A report generation assistant using local knowledge base, with advanced capabilities in task planning, reasoning, and reflective analysis. Recommended for academic research paper Q&A", + "en": "A reflective academic paper generator using local knowledge base, with advanced capabilities in task planning, reasoning, and reflective analysis. Recommended for academic research paper Q&A", "de": "Ein Berichtsgenerierungsassistent, der eine lokale Wissensdatenbank nutzt, mit erweiterten Fähigkeiten in Aufgabenplanung, Schlussfolgerung und reflektierender Analyse. Empfohlen für akademische Forschungspapier-Fragen und -Antworten.", - "zh": "一个使用本地知识库的报告生成助手,具备高级能力,包括任务规划、推理和反思性分析。推荐用于学术研究论文问答。"}, + "zh": "一个使用本地知识库的学术论文生成助手,具备高级能力,包括任务规划、推理和反思性分析。推荐用于学术研究论文问答。"}, "canvas_type": "Agent", "dsl": { "components": { diff --git a/agent/templates/knowledge_base_report_r.json b/agent/templates/reflective_academic_paper_generator_r.json similarity index 97% rename from agent/templates/knowledge_base_report_r.json rename to agent/templates/reflective_academic_paper_generator_r.json index 074250e6a8..1ff9afe59c 100644 --- a/agent/templates/knowledge_base_report_r.json +++ b/agent/templates/reflective_academic_paper_generator_r.json @@ -1,13 +1,13 @@ { "id": 21, "title": { - "en": "Report Agent Using Knowledge Base", - "de": "Berichtsagent mit Wissensdatenbank", - "zh": "知识库检索智能体"}, + "en": "Reflective academic paper generator", + "de": "Schreibhilfe für Reflexionspapiere", + "zh": "学术论文生成助手"}, "description": { - "en": "A report generation assistant using local knowledge base, with advanced capabilities in task planning, reasoning, and reflective analysis. Recommended for academic research paper Q&A", + "en": "A reflective academic paper generator using local knowledge base, with advanced capabilities in task planning, reasoning, and reflective analysis. Recommended for academic research paper Q&A", "de": "Ein Berichtsgenerierungsassistent, der eine lokale Wissensdatenbank nutzt, mit erweiterten Fähigkeiten in Aufgabenplanung, Schlussfolgerung und reflektierender Analyse. Empfohlen für akademische Forschungspapier-Fragen und -Antworten.", - "zh": "一个使用本地知识库的报告生成助手,具备高级能力,包括任务规划、推理和反思性分析。推荐用于学术研究论文问答。"}, + "zh": "一个使用本地知识库的学术论文生成助手,具备高级能力,包括任务规划、推理和反思性分析。推荐用于学术研究论文问答。"}, "canvas_type": "Recommended", "dsl": { "components": { diff --git a/agent/templates/generate_SEO_blog.json b/agent/templates/seo_article_writer.json similarity index 99% rename from agent/templates/generate_SEO_blog.json rename to agent/templates/seo_article_writer.json index 33a656246c..3169f31fd6 100644 --- a/agent/templates/generate_SEO_blog.json +++ b/agent/templates/seo_article_writer.json @@ -1,13 +1,13 @@ { "id": 8, "title": { - "en": "Generate SEO Blog", - "de": "SEO Blog generieren", - "zh": "生成SEO博客"}, + "en": "SEO article writer", + "de": "SEO-Blog-Magnetiseur", + "zh": "SEO 博客写手"}, "description": { "en": "This is a multi-agent version of the SEO blog generation workflow. It simulates a small team of AI “writers”, where each agent plays a specialized role — just like a real editorial team.", "de": "Dies ist eine Multi-Agenten-Version des Workflows zur Erstellung von SEO-Blogs. Sie simuliert ein kleines Team von KI-„Autoren“, in dem jeder Agent eine spezielle Rolle übernimmt – genau wie in einem echten Redaktionsteam.", - "zh": "多智能体架构可根据简单的用户输入自动生成完整的SEO博客文章。模拟小型“作家”团队,其中每个智能体扮演一个专业角色——就像真正的编辑团队。"}, + "zh": "SEO 博客写手可根据简单的用户输入自动生成完整的SEO博客文章。模拟小型“作家”团队,其中每个智能体扮演一个专业角色——就像真正的编辑团队。"}, "canvas_type": "Agent", "dsl": { "components": { diff --git a/agent/templates/seo_blog.json b/agent/templates/seo_article_writer_r.json similarity index 98% rename from agent/templates/seo_blog.json rename to agent/templates/seo_article_writer_r.json index e06c28f0cc..a49c4c6882 100644 --- a/agent/templates/seo_blog.json +++ b/agent/templates/seo_article_writer_r.json @@ -1,13 +1,13 @@ { "id": 4, "title": { - "en": "Generate SEO Blog", - "de": "SEO Blog generieren", - "zh": "生成SEO博客"}, + "en": "SEO article writer", + "de": "SEO-Blog-Magnetiseur", + "zh": "SEO 博客写手"}, "description": { - "en": "This workflow automatically generates a complete SEO-optimized blog article based on a simple user input. You don't need any writing experience. Just provide a topic or short request — the system will handle the rest.", - "de": "Dieser Workflow generiert automatisch einen vollständigen SEO-optimierten Blogartikel basierend auf einer einfachen Benutzereingabe. Sie benötigen keine Schreiberfahrung. Geben Sie einfach ein Thema oder eine kurze Anfrage ein – das System übernimmt den Rest.", - "zh": "此工作流根据简单的用户输入自动生成完整的SEO博客文章。你无需任何写作经验,只需提供一个主题或简短请求,系统将处理其余部分。"}, + "en": "This SEO article writer automatically generates a complete SEO-optimized blog article based on a simple user input. You don't need any writing experience. Just provide a topic or short request — the system will handle the rest.", + "de": "SEO-Blog-Magnetiseur automatisch einen vollständigen SEO-optimierten Blogartikel basierend auf einer einfachen Benutzereingabe. Sie benötigen keine Schreiberfahrung. Geben Sie einfach ein Thema oder eine kurze Anfrage ein – das System übernimmt den Rest.", + "zh": "此 SEO 博客写手根据简单的用户输入自动生成完整的SEO博客文章。你无需任何写作经验,只需提供一个主题或简短请求,系统将处理其余部分。"}, "canvas_type": "Recommended", "dsl": { "components": { diff --git a/agent/templates/ecommerce_customer_service_workflow.json b/agent/templates/smart_customer_service_specialist.json similarity index 98% rename from agent/templates/ecommerce_customer_service_workflow.json rename to agent/templates/smart_customer_service_specialist.json index a56c0a547c..a4d656b365 100644 --- a/agent/templates/ecommerce_customer_service_workflow.json +++ b/agent/templates/smart_customer_service_specialist.json @@ -1,14 +1,14 @@ { "id": 22, "title": { - "en": "Ecommerce Customer Service Workflow", + "en": "Smart customer service specialist", "de": "Ecommerce Kundenservice Workflow", - "zh": "电子商务客户服务工作流程" + "zh": "智能客户服务专员" }, "description": { - "en": "This template helps e-commerce platforms address complex customer needs, such as comparing product features, providing usage support, and coordinating home installation services.", - "de": "Diese Vorlage hilft E-Commerce-Plattformen, komplexe Kundenbedürfnisse zu erfüllen, wie z.B. den Vergleich von Produktmerkmalen, die Bereitstellung von Nutzungsunterstützung und die Koordination von Hausinstallationsdiensten.", - "zh": "该模板可帮助电子商务平台解决复杂的客户需求,例如比较产品功能、提供使用支持和协调家庭安装服务。" + "en": "This template helps address complex customer needs, such as comparing product features, providing usage support, and coordinating home installation services.", + "de": "Diese Vorlage hilft komplexe Kundenbedürfnisse zu erfüllen, wie z.B. den Vergleich von Produktmerkmalen, die Bereitstellung von Nutzungsunterstützung und die Koordination von Hausinstallationsdiensten.", + "zh": "该模板可帮助解决复杂的客户需求,例如比较产品功能、提供使用支持和协调家庭安装服务。" }, "canvas_type": "Customer Support", "dsl": { diff --git a/agent/templates/stock_research_report.json b/agent/templates/stock_market_research_assistant.json similarity index 98% rename from agent/templates/stock_research_report.json rename to agent/templates/stock_market_research_assistant.json index 786d5adbcc..00e9cecd4a 100644 --- a/agent/templates/stock_research_report.json +++ b/agent/templates/stock_market_research_assistant.json @@ -1,1173 +1,1173 @@ -{ - "id": 26, - "title": { - "en": "Stock Research Report Agent", - "de": "Aktienanalyse Agent", - "zh": "股票研究报告智能体" - }, - "description": { - "en": "This template helps financial analysts quickly organize information — it can automatically retrieve company data, consolidate financial metrics, and integrate research report insights.", - "de": "Diese Vorlage hilft Finanzanalysten, Informationen schnell zu organisieren – der Agent kann automatisch Unternehmensdaten abrufen, Finanzkennzahlen konsolidieren und Forschungsberichte integrieren.", - "zh": "这个模板可以帮助金融分析师快速整理信息——它能够自动获取公司数据、整合财务指标,并汇总研报观点。" - }, - "canvas_type": "Recommended", - "dsl": { - "components": { - "Agent:ManyToesBrush": { - "downstream": [ - "Switch:FluffyCoinsSell" - ], - "obj": { - "component_name": "Agent", - "params": { - "cite": true, - "delay_after_error": 1, - "description": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "qwen-turbo-latest@Tongyi-Qianwen", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "{sys.query}", - "role": "user" - } - ], - "sys_prompt": " \n\nYour responsibility is to identify and extract the stock name or abbreviation from the user's natural language query and return the corresponding unique stock code.\n\n \n\n\n\n \n\n1. Only one result is allowed: - If a stock is identified \u2192 only return the corresponding stock code; - If no stock is identified \u2192 only return \u201cNot Found\u201d. 2. **Do not** output any additional text, punctuation, explanation, prefixes, or line breaks. 3. The output must strictly adhere to the . \n\n\n\n\n\nOnly output the stock code (e.g., AAPL or 600519)\nOr only output \u201cNot Found\u201d\n\n\n\n\nUser input: \u201cHelp me check the research report of Apple\u201d \u2192 Output: AAPL\nUser input: \u201cHow is Maotai\u2019s financial performance\u201d \u2192 Output: 600519\nUser input: \u201cHow is the Shanghai Composite Index doing today\u201d \u2192 Output: Not Found\n\n\n\n - Tavily Search: Use this tool when you are unsure of the stock code. - If you are confident, you do not need to use the tool. \n\n\n\n\n\nOnly output the result, no explanations, hints, or notes allowed.\nThe output can only be the stock code or \u201cNot Found\u201d, otherwise, it is considered an incorrect answer.\n", - "temperature": 0.1, - "temperatureEnabled": false, - "tools": [ - { - "component_name": "TavilySearch", - "name": "TavilySearch", - "params": { - "api_key": "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", - "days": 7, - "exclude_domains": [], - "include_answer": false, - "include_domains": [], - "include_image_descriptions": false, - "include_images": false, - "include_raw_content": true, - "max_results": 5, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - }, - "json": { - "type": "Array", - "value": [] - } - }, - "query": "sys.query", - "search_depth": "basic", - "topic": "general" - } - } - ], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "begin" - ] - }, - "Agent:SadDodosRescue": { - "downstream": [ - "Agent:SharpSlothsSlide" - ], - "obj": { - "component_name": "Agent", - "params": { - "cite": true, - "delay_after_error": 1, - "description": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "kimi-k2-turbo-preview@Moonshot", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [ - { - "mcp_id": "30d6ef8ea8d511f0828382e3548809fa", - "tools": {} - } - ], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "user's query is {sys.query}\n\n\n{Agent:ManyToesBrush@content}\n", - "role": "user" - } - ], - "sys_prompt": " \n\nYou are the information extraction agent. You understand the user\u2019s query and delegate tasks to investoday and the internal research report retrieval agent. \n\n \n\n\n\n 1. Based on the stock code output by the \"Extract Stock Code\" agent, call investoday's list_news to retrieve the latest authoritative research reports and views, and save all publicly available key information. \n\n2. Call the \"Internal Research Report Retrieval Agent\" and save the full text of the research report output. \n\n3. Output the content retrieved from investoday and the Internal Research Report Retrieval Agent in full. \n\n\n\n\n\nThe output must be divided into two sections:\n#1. Title: \u201cinvestoday\u201d\nDirectly output the content collected from investoday without any additional processing.\n#2. Title: \"Internal Research Report Retrieval Agent\"\nDirectly output the content provided by the Internal Research Report Retrieval Agent.\n", - "temperature": 0.1, - "temperatureEnabled": false, - "tools": [ - { - "component_name": "Agent", - "id": "Agent:MightyIdeasGlow", - "name": "Internal Research Report Retrieval Agent", - "params": { - "cite": true, - "delay_after_error": 1, - "description": "You are a senior financial content analyst who can accurately identify the companies, stock codes, industries or topics mentioned in user questions, and completely extract relevant research content from the knowledge base to ensure that data, opinions and conclusions are not lost.", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "kimi-k2-turbo-preview@Moonshot", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "{sys.query}", - "role": "user" - } - ], - "sys_prompt": " \n\nRead user input \u2192 Identify the involved company/stock (supports abbreviations, full names, codes, and aliases) \u2192 Retrieve the most relevant research reports from the knowledge base \u2192 Output the full text of the research report, retaining the original format, data, chart descriptions, and risk warnings. \n\n\n\n\n\n \n\n1. Exact Match: Prioritize exact matches of company full names and stock codes. \n\n2. Content Fidelity: Fully retain the research report text stored in the knowledge base without deletion, modification, or omission of paragraphs. \n\n3. Original Data: Retain table data, dates, units, etc., in their original form. \n\n4. Complete Viewpoints: Include investment logic, financial analysis, industry comparisons, earnings forecasts, valuation methods, risk warnings, etc. \n\n5. Merging Multiple Reports: If there are multiple relevant research reports, output them in reverse chronological order. \n\n\n\n6. No Results Feedback: If no matching reports are found, output \u201cNo related research reports available in the knowledge base.\u201d\n\n\n\n ", - "temperature": 0.1, - "temperatureEnabled": false, - "tools": [ - { - "component_name": "Retrieval", - "name": "Retrieval", - "params": { - "cross_languages": [], - "description": "A knowledge base of research reports on stock analysis by senior experts", - "empty_response": "", - "kb_ids": [ - "60c53ed89acc11f0bc1e7a2a6d0b2755" - ], - "keywords_similarity_weight": 0.7, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - } - }, - "rerank_id": "", - "similarity_threshold": 0.2, - "top_k": 1024, - "top_n": 8, - "use_kg": false - } - } - ], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "This is the order you need to send to the agent.", - "visual_files_var": "" - } - } - ], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "Switch:FluffyCoinsSell" - ] - }, - "Agent:SharpSlothsSlide": { - "downstream": [ - "Message:OliveLawsArgue" - ], - "obj": { - "component_name": "Agent", - "params": { - "cite": true, - "delay_after_error": 1, - "description": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "qwen-turbo-latest@Tongyi-Qianwen", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "User query questions:\n\n\n\n{sys.query}\n\n\n\nInformation Extraction Agent:\n\n{Agent:SadDodosRescue@content}", - "role": "user" - } - ], - "sys_prompt": " \n\nYou are a senior investment banking (IB) analyst with years of experience in capital market research. You excel at writing investment research reports covering publicly listed companies, industries, and macroeconomics. You possess strong financial analysis skills and industry insights, combining quantitative and qualitative analysis to provide high-value references for investment decisions. \n\n**You are able to retain and present differentiated viewpoints from various reports and sources in your research, and when discrepancies arise, you do not merge them into a single conclusion. Instead, you compare and analyze the differences.** \n\n\n \n\n\n\n\n \n\nYou will receive financial information extracted by the information extraction agent.\n\n \n\n\n\nBased on the content returned by the information extraction agent (no fabrication of data), write a professional, complete, and structured investment research report. The report must be logically rigorous, clearly organized, and use professional language, suitable for reference by fund managers, institutional investors, and other professional readers.\nWhen there are differences in analysis or forecasts between different reports or institutions, you must list and identify the sources in the report. You should not select only one viewpoint. You need to point out the differences, their possible causes, and their impact on investment judgments.\n\n\n\n\n##1. Summary\nProvide a concise overview of the company\u2019s core business, recent performance, industry positioning, and major investment highlights.\nSummarize key conclusions in 3-5 sentences.\nHighlight any discrepancies in core conclusions and briefly describe the differing viewpoints and areas of disagreement.\n##2. Company Overview\nDescribe the company's main business, core products/services, market share, competitive advantages, and business model.\nHighlight any differences in the description of the company\u2019s market position or competitive advantages from different sources. Present and compare these differences.\n##3. Recent Financial Performance\nSummarize key metrics from the latest financial report (e.g., revenue, net profit, gross margin, EPS).\nHighlight the drivers behind the trends and compare the differential analyses from different reports. Present this comparison in a table.\n##4. Industry Trends & Opportunities\nOverview of industry development trends, market size, and major drivers.\nIf different sources provide differing forecasts for industry growth rates, technological trends, or competitive landscape, list these and provide background information. Present this comparison in a table.\n##5. Investment Recommendation\nProvide a clear investment recommendation based on the analysis above (e.g., \"Buy/Hold/Neutral/Sell\"), presented in a table.\nInclude investment ratings or recommendations from all sources, with the source and date clearly noted.\nIf you provide a combined recommendation based on different viewpoints, clearly explain the reasoning behind this integration.\n##6. Appendix & References\nList the data sources, analysis methods, important formulas, or chart descriptions used.\nAll references must come from the information extraction agent and the company financial data table provided, or publicly noted sources.\nFor differentiated viewpoints, provide full citation information (author, institution, date) and present this in a table.\n\n\n\n\nLanguage Style: Financial, professional, precise, and analytical.\nViewpoint Retention: When there are multiple viewpoints and conclusions, all must be retained and compared. You cannot choose only one.\nCitations: When specific data or viewpoints are referenced, include the source in parentheses (e.g., Source: Morgan Stanley Research, 2024-05-07).\nFacts: All data and conclusions must come from the information extraction agent or their noted legitimate sources. No fabrication is allowed.\nReadability: Use short paragraphs and bullet points to make it easy for professional readers to grasp key information and see the differences in viewpoints.\n\n\n\n\nGenerate a complete investment research report that meets investment banking industry standards, which can be directly used for institutional investment internal reference, while faithfully retaining differentiated viewpoints from various reports and providing the corresponding analysis.\n", - "temperature": 0.1, - "temperatureEnabled": false, - "tools": [], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - } - }, - "upstream": [ - "Agent:SadDodosRescue" - ] - }, - "CodeExec:LightSheepTrade": { - "downstream": [ - "Message:OliveLawsArgue" - ], - "obj": { - "component_name": "CodeExec", - "params": { - "arguments": { - "input_text": "YahooFinance:QuickAdsDig@report" - }, - "lang": "python", - "outputs": { - "md_table": { - "type": "String", - "value": "" - } - }, - "script": "import re\n\ndef format_number(value: str) -> str:\n \"\"\"Convert scientific notation or floating-point numbers to comma-separated numbers\"\"\"\n try:\n num = float(value)\n if num.is_integer():\n return f\"{int(num):,}\" # If it's an integer, format without decimal places\n else:\n return f\"{num:,.2f}\" # Otherwise, keep two decimal places and add commas\n except:\n return value # Return the original value if it's not a number (e.g., \u2014 or empty)\n\ndef extract_md_table_single_column(input_text: str) -> str:\n # Use English indicators directly\n indicators = [\n \"Total Assets\", \"Total Equity\", \"Tangible Book Value\", \"Total Debt\", \n \"Net Debt\", \"Cash And Cash Equivalents\", \"Working Capital\", \n \"Long Term Debt\", \"Common Stock Equity\", \"Ordinary Shares Number\"\n ]\n \n # Core indicators and their corresponding units\n unit_map = {\n \"Total Assets\": \"USD\",\n \"Total Equity\": \"USD\",\n \"Tangible Book Value\": \"USD\",\n \"Total Debt\": \"USD\",\n \"Net Debt\": \"USD\",\n \"Cash And Cash Equivalents\": \"USD\",\n \"Working Capital\": \"USD\",\n \"Long Term Debt\": \"USD\",\n \"Common Stock Equity\": \"USD\",\n \"Ordinary Shares Number\": \"Shares\"\n }\n\n lines = input_text.splitlines()\n\n # Automatically detect the date column, keeping only the first one\n date_pattern = r\"\\d{4}-\\d{2}-\\d{2}\"\n header_line = \"\"\n for line in lines:\n if re.search(date_pattern, line):\n header_line = line\n break\n\n if not header_line:\n raise ValueError(\"Date column header row not found\")\n\n dates = re.findall(date_pattern, header_line)\n first_date = dates[0] # Keep only the first date\n header = f\"| Indicator | {first_date} |\"\n divider = \"|------------------------|------------|\"\n\n rows = []\n for ind in indicators:\n unit = unit_map.get(ind, \"\")\n display_ind = f\"{ind} ({unit})\" if unit else ind\n\n found = False\n for line in lines:\n if ind in line:\n # Match numbers and possible units\n pattern = r\"(nan|[0-9\\.]+(?:[eE][+-]?\\d+)?)\"\n values = re.findall(pattern, line)\n # Replace 'nan' with '\u2014' and format the number\n first_value = values[0].strip() if values and values[0].strip().lower() != \"nan\" else \"\u2014\"\n first_value = format_number(first_value) if first_value != \"\u2014\" else \"\u2014\"\n rows.append(f\"| {display_ind} | {first_value} |\")\n found = True\n break\n if not found:\n rows.append(f\"| {display_ind} | \u2014 |\")\n\n md_table = \"\\n\".join([header, divider] + rows)\n return md_table\n\ndef main(input_text: str):\n return extract_md_table_single_column(input_text)\n" - } - }, - "upstream": [ - "YahooFinance:QuickAdsDig" - ] - }, - "Message:OliveLawsArgue": { - "downstream": [], - "obj": { - "component_name": "Message", - "params": { - "content": [ - "Company financial statements:\n\n{CodeExec:LightSheepTrade@md_table}\n\n\n{Agent:SharpSlothsSlide@content}" - ] - } - }, - "upstream": [ - "Agent:SharpSlothsSlide", - "CodeExec:LightSheepTrade" - ] - }, - "Message:TwentyBanksLeave": { - "downstream": [], - "obj": { - "component_name": "Message", - "params": { - "content": [ - "Your query is not supported." - ] - } - }, - "upstream": [ - "Switch:FluffyCoinsSell" - ] - }, - "Switch:FluffyCoinsSell": { - "downstream": [ - "YahooFinance:QuickAdsDig", - "Agent:SadDodosRescue", - "Message:TwentyBanksLeave" - ], - "obj": { - "component_name": "Switch", - "params": { - "conditions": [ - { - "items": [ - { - "cpn_id": "Agent:ManyToesBrush@content", - "operator": "not contains", - "value": "Not Found" - } - ], - "logical_operator": "and", - "to": [ - "YahooFinance:QuickAdsDig", - "Agent:SadDodosRescue" - ] - } - ], - "end_cpn_ids": [ - "Message:TwentyBanksLeave" - ] - } - }, - "upstream": [ - "Agent:ManyToesBrush" - ] - }, - "YahooFinance:QuickAdsDig": { - "downstream": [ - "CodeExec:LightSheepTrade" - ], - "obj": { - "component_name": "YahooFinance", - "params": { - "balance_sheet": true, - "cash_flow_statement": false, - "financials": false, - "history": false, - "info": false, - "news": false, - "outputs": { - "report": { - "type": "string", - "value": "" - } - }, - "stock_code": "sys.query" - } - }, - "upstream": [ - "Switch:FluffyCoinsSell" - ] - }, - "begin": { - "downstream": [ - "Agent:ManyToesBrush" - ], - "obj": { - "component_name": "Begin", - "params": { - "enablePrologue": true, - "inputs": {}, - "mode": "conversational", - "prologue": "Hi! I'm your assistant. What can I do for you?" - } - }, - "upstream": [] - } - }, - "globals": { - "sys.conversation_turns": 0, - "sys.files": [], - "sys.query": "", - "sys.user_id": "" - }, - "graph": { - "edges": [ - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:ManyToesBrushtool-Tool:AngryRabbitsPlayend", - "source": "Agent:ManyToesBrush", - "sourceHandle": "tool", - "target": "Tool:AngryRabbitsPlay", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:SadDodosRescuestart-Agent:SharpSlothsSlideend", - "source": "Agent:SadDodosRescue", - "sourceHandle": "start", - "target": "Agent:SharpSlothsSlide", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:SadDodosRescueagentBottom-Agent:MightyIdeasGlowagentTop", - "source": "Agent:SadDodosRescue", - "sourceHandle": "agentBottom", - "target": "Agent:MightyIdeasGlow", - "targetHandle": "agentTop" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:MightyIdeasGlowtool-Tool:FullIconsStopend", - "source": "Agent:MightyIdeasGlow", - "sourceHandle": "tool", - "target": "Tool:FullIconsStop", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__YahooFinance:QuickAdsDigstart-CodeExec:LightSheepTradeend", - "markerEnd": "logo", - "source": "YahooFinance:QuickAdsDig", - "sourceHandle": "start", - "style": { - "stroke": "rgba(91, 93, 106, 1)", - "strokeWidth": 1 - }, - "target": "CodeExec:LightSheepTrade", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:SharpSlothsSlidestart-Message:OliveLawsArgueend", - "markerEnd": "logo", - "source": "Agent:SharpSlothsSlide", - "sourceHandle": "start", - "style": { - "stroke": "rgba(151, 154, 171, 1)", - "strokeWidth": 1 - }, - "target": "Message:OliveLawsArgue", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__beginstart-Agent:ManyToesBrushend", - "markerEnd": "logo", - "source": "begin", - "sourceHandle": "start", - "style": { - "stroke": "rgba(151, 154, 171, 1)", - "strokeWidth": 1 - }, - "target": "Agent:ManyToesBrush", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:ManyToesBrushstart-Switch:FluffyCoinsSellend", - "source": "Agent:ManyToesBrush", - "sourceHandle": "start", - "target": "Switch:FluffyCoinsSell", - "targetHandle": "end" - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Switch:FluffyCoinsSellCase 1-YahooFinance:QuickAdsDigend", - "markerEnd": "logo", - "source": "Switch:FluffyCoinsSell", - "sourceHandle": "Case 1", - "style": { - "stroke": "rgba(151, 154, 171, 1)", - "strokeWidth": 1 - }, - "target": "YahooFinance:QuickAdsDig", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Switch:FluffyCoinsSellCase 1-Agent:SadDodosRescueend", - "markerEnd": "logo", - "source": "Switch:FluffyCoinsSell", - "sourceHandle": "Case 1", - "style": { - "stroke": "rgba(151, 154, 171, 1)", - "strokeWidth": 1 - }, - "target": "Agent:SadDodosRescue", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Switch:FluffyCoinsSellend_cpn_ids-Message:TwentyBanksLeaveend", - "markerEnd": "logo", - "source": "Switch:FluffyCoinsSell", - "sourceHandle": "end_cpn_ids", - "style": { - "stroke": "rgba(151, 154, 171, 1)", - "strokeWidth": 1 - }, - "target": "Message:TwentyBanksLeave", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__CodeExec:LightSheepTradestart-Message:OliveLawsArgueend", - "markerEnd": "logo", - "source": "CodeExec:LightSheepTrade", - "sourceHandle": "start", - "style": { - "stroke": "rgba(91, 93, 106, 1)", - "strokeWidth": 1 - }, - "target": "Message:OliveLawsArgue", - "targetHandle": "end", - "type": "buttonEdge", - "zIndex": 1001 - }, - { - "data": { - "isHovered": false - }, - "id": "xy-edge__Agent:SadDodosRescuetool-Tool:ClearKiwisRollend", - "source": "Agent:SadDodosRescue", - "sourceHandle": "tool", - "target": "Tool:ClearKiwisRoll", - "targetHandle": "end" - } - ], - "nodes": [ - { - "data": { - "form": { - "enablePrologue": true, - "inputs": {}, - "mode": "conversational", - "prologue": "Hi! I'm your assistant. What can I do for you?" - }, - "label": "Begin", - "name": "begin" - }, - "dragging": false, - "id": "begin", - "measured": { - "height": 48, - "width": 200 - }, - "position": { - "x": -250.58492312820874, - "y": 304.13718826989873 - }, - "selected": false, - "sourcePosition": "left", - "targetPosition": "right", - "type": "beginNode" - }, - { - "data": { - "form": { - "cite": true, - "delay_after_error": 1, - "description": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "qwen-turbo-latest@Tongyi-Qianwen", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "{sys.query}", - "role": "user" - } - ], - "sys_prompt": " \n\nYour responsibility is to identify and extract the stock name or abbreviation from the user's natural language query and return the corresponding unique stock code.\n\n \n\n\n\n \n\n1. Only one result is allowed: - If a stock is identified \u2192 only return the corresponding stock code; - If no stock is identified \u2192 only return \u201cNot Found\u201d. 2. **Do not** output any additional text, punctuation, explanation, prefixes, or line breaks. 3. The output must strictly adhere to the . \n\n\n\n\n\nOnly output the stock code (e.g., AAPL or 600519)\nOr only output \u201cNot Found\u201d\n\n\n\n\nUser input: \u201cHelp me check the research report of Apple\u201d \u2192 Output: AAPL\nUser input: \u201cHow is Maotai\u2019s financial performance\u201d \u2192 Output: 600519\nUser input: \u201cHow is the Shanghai Composite Index doing today\u201d \u2192 Output: Not Found\n\n\n\n - Tavily Search: Use this tool when you are unsure of the stock code. - If you are confident, you do not need to use the tool. \n\n\n\n\n\nOnly output the result, no explanations, hints, or notes allowed.\nThe output can only be the stock code or \u201cNot Found\u201d, otherwise, it is considered an incorrect answer.\n", - "temperature": 0.1, - "temperatureEnabled": false, - "tools": [ - { - "component_name": "TavilySearch", - "name": "TavilySearch", - "params": { - "api_key": "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", - "days": 7, - "exclude_domains": [], - "include_answer": false, - "include_domains": [], - "include_image_descriptions": false, - "include_images": false, - "include_raw_content": true, - "max_results": 5, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - }, - "json": { - "type": "Array", - "value": [] - } - }, - "query": "sys.query", - "search_depth": "basic", - "topic": "general" - } - } - ], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Extract Stock Code Agent" - }, - "dragging": false, - "id": "Agent:ManyToesBrush", - "measured": { - "height": 76, - "width": 200 - }, - "position": { - "x": 1.784314979916303, - "y": 285.7261182739586 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "description": "This is an agent for a specific task.", - "user_prompt": "This is the order you need to send to the agent." - }, - "label": "Tool", - "name": "flow.tool_0" - }, - "dragging": false, - "id": "Tool:AngryRabbitsPlay", - "measured": { - "height": 48, - "width": 200 - }, - "position": { - "x": -1.1174997064789522, - "y": 392.2709327777357 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "toolNode" - }, - { - "data": { - "form": { - "content": [ - "Your query is not supported." - ] - }, - "label": "Message", - "name": "Reply to irrelevant message node" - }, - "dragging": false, - "id": "Message:TwentyBanksLeave", - "measured": { - "height": 48, - "width": 200 - }, - "position": { - "x": 1274.991898394738, - "y": 540.2215056031129 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "messageNode" - }, - { - "data": { - "form": { - "balance_sheet": true, - "cash_flow_statement": false, - "financials": false, - "history": false, - "info": false, - "news": false, - "outputs": { - "report": { - "type": "string", - "value": "" - } - }, - "stock_code": "sys.query" - }, - "label": "YahooFinance", - "name": "YahooFinance" - }, - "dragging": false, - "id": "YahooFinance:QuickAdsDig", - "measured": { - "height": 48, - "width": 200 - }, - "position": { - "x": 676.5378050046916, - "y": 74.09222900489664 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "ragNode" - }, - { - "data": { - "form": { - "cite": true, - "delay_after_error": 1, - "description": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "kimi-k2-turbo-preview@Moonshot", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [ - { - "mcp_id": "30d6ef8ea8d511f0828382e3548809fa", - "tools": {} - } - ], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "user's query is {sys.query}\n\n\n{Agent:ManyToesBrush@content}\n", - "role": "user" - } - ], - "sys_prompt": " \n\nYou are the information extraction agent. You understand the user\u2019s query and delegate tasks to investoday and the internal research report retrieval agent. \n\n \n\n\n\n 1. Based on the stock code output by the \"Extract Stock Code\" agent, call investoday's list_news to retrieve the latest authoritative research reports and views, and save all publicly available key information. \n\n2. Call the \"Internal Research Report Retrieval Agent\" and save the full text of the research report output. \n\n3. Output the content retrieved from investoday and the Internal Research Report Retrieval Agent in full. \n\n\n\n\n\nThe output must be divided into two sections:\n#1. Title: \u201cinvestoday\u201d\nDirectly output the content collected from investoday without any additional processing.\n#2. Title: \"Internal Research Report Retrieval Agent\"\nDirectly output the content provided by the Internal Research Report Retrieval Agent.\n", - "temperature": 0.1, - "temperatureEnabled": false, - "tools": [], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Information Extraction Agent" - }, - "dragging": false, - "id": "Agent:SadDodosRescue", - "measured": { - "height": 76, - "width": 200 - }, - "position": { - "x": 674.0210917308762, - "y": 154.63747017677127 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "arguments": { - "input_text": "YahooFinance:QuickAdsDig@report" - }, - "lang": "python", - "outputs": { - "md_table": { - "type": "String", - "value": "" - } - }, - "script": "import re\n\ndef format_number(value: str) -> str:\n \"\"\"Convert scientific notation or floating-point numbers to comma-separated numbers\"\"\"\n try:\n num = float(value)\n if num.is_integer():\n return f\"{int(num):,}\" # If it's an integer, format without decimal places\n else:\n return f\"{num:,.2f}\" # Otherwise, keep two decimal places and add commas\n except:\n return value # Return the original value if it's not a number (e.g., \u2014 or empty)\n\ndef extract_md_table_single_column(input_text: str) -> str:\n # Use English indicators directly\n indicators = [\n \"Total Assets\", \"Total Equity\", \"Tangible Book Value\", \"Total Debt\", \n \"Net Debt\", \"Cash And Cash Equivalents\", \"Working Capital\", \n \"Long Term Debt\", \"Common Stock Equity\", \"Ordinary Shares Number\"\n ]\n \n # Core indicators and their corresponding units\n unit_map = {\n \"Total Assets\": \"USD\",\n \"Total Equity\": \"USD\",\n \"Tangible Book Value\": \"USD\",\n \"Total Debt\": \"USD\",\n \"Net Debt\": \"USD\",\n \"Cash And Cash Equivalents\": \"USD\",\n \"Working Capital\": \"USD\",\n \"Long Term Debt\": \"USD\",\n \"Common Stock Equity\": \"USD\",\n \"Ordinary Shares Number\": \"Shares\"\n }\n\n lines = input_text.splitlines()\n\n # Automatically detect the date column, keeping only the first one\n date_pattern = r\"\\d{4}-\\d{2}-\\d{2}\"\n header_line = \"\"\n for line in lines:\n if re.search(date_pattern, line):\n header_line = line\n break\n\n if not header_line:\n raise ValueError(\"Date column header row not found\")\n\n dates = re.findall(date_pattern, header_line)\n first_date = dates[0] # Keep only the first date\n header = f\"| Indicator | {first_date} |\"\n divider = \"|------------------------|------------|\"\n\n rows = []\n for ind in indicators:\n unit = unit_map.get(ind, \"\")\n display_ind = f\"{ind} ({unit})\" if unit else ind\n\n found = False\n for line in lines:\n if ind in line:\n # Match numbers and possible units\n pattern = r\"(nan|[0-9\\.]+(?:[eE][+-]?\\d+)?)\"\n values = re.findall(pattern, line)\n # Replace 'nan' with '\u2014' and format the number\n first_value = values[0].strip() if values and values[0].strip().lower() != \"nan\" else \"\u2014\"\n first_value = format_number(first_value) if first_value != \"\u2014\" else \"\u2014\"\n rows.append(f\"| {display_ind} | {first_value} |\")\n found = True\n break\n if not found:\n rows.append(f\"| {display_ind} | \u2014 |\")\n\n md_table = \"\\n\".join([header, divider] + rows)\n return md_table\n\ndef main(input_text: str):\n return extract_md_table_single_column(input_text)\n" - }, - "label": "CodeExec", - "name": "Code-generated balance sheet" - }, - "dragging": false, - "id": "CodeExec:LightSheepTrade", - "measured": { - "height": 48, - "width": 200 - }, - "position": { - "x": 970.444642975358, - "y": 74.04386270784316 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "ragNode" - }, - { - "data": { - "form": { - "cite": true, - "delay_after_error": 1, - "description": "", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "qwen-turbo-latest@Tongyi-Qianwen", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "User query questions:\n\n\n\n{sys.query}\n\n\n\nInformation Extraction Agent:\n\n{Agent:SadDodosRescue@content}", - "role": "user" - } - ], - "sys_prompt": " \n\nYou are a senior investment banking (IB) analyst with years of experience in capital market research. You excel at writing investment research reports covering publicly listed companies, industries, and macroeconomics. You possess strong financial analysis skills and industry insights, combining quantitative and qualitative analysis to provide high-value references for investment decisions. \n\n**You are able to retain and present differentiated viewpoints from various reports and sources in your research, and when discrepancies arise, you do not merge them into a single conclusion. Instead, you compare and analyze the differences.** \n\n\n \n\n\n\n\n \n\nYou will receive financial information extracted by the information extraction agent.\n\n \n\n\n\nBased on the content returned by the information extraction agent (no fabrication of data), write a professional, complete, and structured investment research report. The report must be logically rigorous, clearly organized, and use professional language, suitable for reference by fund managers, institutional investors, and other professional readers.\nWhen there are differences in analysis or forecasts between different reports or institutions, you must list and identify the sources in the report. You should not select only one viewpoint. You need to point out the differences, their possible causes, and their impact on investment judgments.\n\n\n\n\n##1. Summary\nProvide a concise overview of the company\u2019s core business, recent performance, industry positioning, and major investment highlights.\nSummarize key conclusions in 3-5 sentences.\nHighlight any discrepancies in core conclusions and briefly describe the differing viewpoints and areas of disagreement.\n##2. Company Overview\nDescribe the company's main business, core products/services, market share, competitive advantages, and business model.\nHighlight any differences in the description of the company\u2019s market position or competitive advantages from different sources. Present and compare these differences.\n##3. Recent Financial Performance\nSummarize key metrics from the latest financial report (e.g., revenue, net profit, gross margin, EPS).\nHighlight the drivers behind the trends and compare the differential analyses from different reports. Present this comparison in a table.\n##4. Industry Trends & Opportunities\nOverview of industry development trends, market size, and major drivers.\nIf different sources provide differing forecasts for industry growth rates, technological trends, or competitive landscape, list these and provide background information. Present this comparison in a table.\n##5. Investment Recommendation\nProvide a clear investment recommendation based on the analysis above (e.g., \"Buy/Hold/Neutral/Sell\"), presented in a table.\nInclude investment ratings or recommendations from all sources, with the source and date clearly noted.\nIf you provide a combined recommendation based on different viewpoints, clearly explain the reasoning behind this integration.\n##6. Appendix & References\nList the data sources, analysis methods, important formulas, or chart descriptions used.\nAll references must come from the information extraction agent and the company financial data table provided, or publicly noted sources.\nFor differentiated viewpoints, provide full citation information (author, institution, date) and present this in a table.\n\n\n\n\nLanguage Style: Financial, professional, precise, and analytical.\nViewpoint Retention: When there are multiple viewpoints and conclusions, all must be retained and compared. You cannot choose only one.\nCitations: When specific data or viewpoints are referenced, include the source in parentheses (e.g., Source: Morgan Stanley Research, 2024-05-07).\nFacts: All data and conclusions must come from the information extraction agent or their noted legitimate sources. No fabrication is allowed.\nReadability: Use short paragraphs and bullet points to make it easy for professional readers to grasp key information and see the differences in viewpoints.\n\n\n\n\nGenerate a complete investment research report that meets investment banking industry standards, which can be directly used for institutional investment internal reference, while faithfully retaining differentiated viewpoints from various reports and providing the corresponding analysis.\n", - "temperature": 0.1, - "temperatureEnabled": false, - "tools": [], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Research report generation agent" - }, - "id": "Agent:SharpSlothsSlide", - "measured": { - "height": 76, - "width": 200 - }, - "position": { - "x": 974.0210917308762, - "y": 154.63747017677127 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "content": [ - "Company financial statements:\n\n{CodeExec:LightSheepTrade@md_table}\n\n\n{Agent:SharpSlothsSlide@content}" - ] - }, - "label": "Message", - "name": "Reply message node" - }, - "dragging": false, - "id": "Message:OliveLawsArgue", - "measured": { - "height": 48, - "width": 200 - }, - "position": { - "x": 1279.3354680249918, - "y": 83.53099404318621 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "messageNode" - }, - { - "data": { - "form": { - "cite": true, - "delay_after_error": 1, - "description": "You are a senior financial content analyst who can accurately identify the companies, stock codes, industries or topics mentioned in user questions, and completely extract relevant research content from the knowledge base to ensure that data, opinions and conclusions are not lost.", - "exception_default_value": "", - "exception_goto": [], - "exception_method": "", - "frequencyPenaltyEnabled": false, - "frequency_penalty": 0.7, - "llm_id": "kimi-k2-turbo-preview@Moonshot", - "maxTokensEnabled": false, - "max_retries": 3, - "max_rounds": 1, - "max_tokens": 256, - "mcp": [], - "message_history_window_size": 12, - "outputs": { - "content": { - "type": "string", - "value": "" - } - }, - "presencePenaltyEnabled": false, - "presence_penalty": 0.4, - "prompts": [ - { - "content": "{sys.query}", - "role": "user" - } - ], - "sys_prompt": " \n\nRead user input \u2192 Identify the involved company/stock (supports abbreviations, full names, codes, and aliases) \u2192 Retrieve the most relevant research reports from the knowledge base \u2192 Output the full text of the research report, retaining the original format, data, chart descriptions, and risk warnings. \n\n\n\n\n\n \n\n1. Exact Match: Prioritize exact matches of company full names and stock codes. \n\n2. Content Fidelity: Fully retain the research report text stored in the knowledge base without deletion, modification, or omission of paragraphs. \n\n3. Original Data: Retain table data, dates, units, etc., in their original form. \n\n4. Complete Viewpoints: Include investment logic, financial analysis, industry comparisons, earnings forecasts, valuation methods, risk warnings, etc. \n\n5. Merging Multiple Reports: If there are multiple relevant research reports, output them in reverse chronological order. \n\n\n\n6. No Results Feedback: If no matching reports are found, output \u201cNo related research reports available in the knowledge base.\u201d\n\n\n\n ", - "temperature": 0.1, - "temperatureEnabled": false, - "tools": [ - { - "component_name": "Retrieval", - "name": "Retrieval", - "params": { - "cross_languages": [], - "description": "A knowledge base of research reports on stock analysis by senior experts", - "empty_response": "", - "kb_ids": [ - "60c53ed89acc11f0bc1e7a2a6d0b2755" - ], - "keywords_similarity_weight": 0.7, - "outputs": { - "formalized_content": { - "type": "string", - "value": "" - } - }, - "rerank_id": "", - "similarity_threshold": 0.2, - "top_k": 1024, - "top_n": 8, - "use_kg": false - } - } - ], - "topPEnabled": false, - "top_p": 0.3, - "user_prompt": "This is the order you need to send to the agent.", - "visual_files_var": "" - }, - "label": "Agent", - "name": "Internal Research Report Retrieval Agent" - }, - "dragging": false, - "id": "Agent:MightyIdeasGlow", - "measured": { - "height": 76, - "width": 200 - }, - "position": { - "x": 787.966928431608, - "y": 270.12089782504677 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "agentNode" - }, - { - "data": { - "form": { - "description": "This is an agent for a specific task.", - "user_prompt": "This is the order you need to send to the agent." - }, - "label": "Tool", - "name": "flow.tool_1" - }, - "dragging": false, - "id": "Tool:FullIconsStop", - "measured": { - "height": 48, - "width": 200 - }, - "position": { - "x": 786.0879409003913, - "y": 373.7912225392144 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "toolNode" - }, - { - "data": { - "form": { - "conditions": [ - { - "items": [ - { - "cpn_id": "Agent:ManyToesBrush@content", - "operator": "not contains", - "value": "Not Found" - } - ], - "logical_operator": "and", - "to": [ - "YahooFinance:QuickAdsDig", - "Agent:SadDodosRescue" - ] - } - ], - "end_cpn_ids": [ - "Message:TwentyBanksLeave" - ] - }, - "label": "Switch", - "name": "Switch" - }, - "dragging": false, - "id": "Switch:FluffyCoinsSell", - "measured": { - "height": 146, - "width": 200 - }, - "position": { - "x": 244.5649388872756, - "y": 249.25263304293162 - }, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "switchNode" - }, - { - "data": { - "form": { - "description": "This is an agent for a specific task.", - "user_prompt": "This is the order you need to send to the agent." - }, - "label": "Tool", - "name": "flow.tool_2" - }, - "id": "Tool:ClearKiwisRoll", - "measured": { - "height": 44, - "width": 200 - }, - "position": { - "x": 592.0210917308762, - "y": 294.6374701767713 - }, - "sourcePosition": "right", - "targetPosition": "left", - "type": "toolNode" - }, - { - "data": { - "form": { - "text": "Regarding the MCP message for the Information Extraction Agent: You must manually add an MCP in MCP Servers before you can use it!" - }, - "label": "Note", - "name": "MCP Note" - }, - "dragHandle": ".note-drag-handle", - "dragging": false, - "height": 185, - "id": "Note:SadWallsSniff", - "measured": { - "height": 185, - "width": 328 - }, - "position": { - "x": 527.9711365245946, - "y": 448.2236919343899 - }, - "resizing": false, - "selected": false, - "sourcePosition": "right", - "targetPosition": "left", - "type": "noteNode", - "width": 328 - } - ] - }, - "history": [], - "messages": [], - "path": [], - "retrieval": [] - }, - "avatar": - "data:image/png;base64,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" +{ + "id": 26, + "title": { + "en": "Stock market research assistant", + "de": "Assistent für Börsenforschung", + "zh": "股市研究助手" + }, + "description": { + "en": "This template helps financial analysts quickly organize information — it can automatically retrieve company data, consolidate financial metrics, and integrate research report insights.", + "de": "Diese Vorlage hilft Finanzanalysten, Informationen schnell zu organisieren – der Agent kann automatisch Unternehmensdaten abrufen, Finanzkennzahlen konsolidieren und Forschungsberichte integrieren.", + "zh": "这个模板可以帮助金融分析师快速整理信息——它能够自动获取公司数据、整合财务指标,并汇总研报观点。" + }, + "canvas_type": "Recommended", + "dsl": { + "components": { + "Agent:ManyToesBrush": { + "downstream": [ + "Switch:FluffyCoinsSell" + ], + "obj": { + "component_name": "Agent", + "params": { + "cite": true, + "delay_after_error": 1, + "description": "", + "exception_default_value": "", + "exception_goto": [], + "exception_method": "", + "frequencyPenaltyEnabled": false, + "frequency_penalty": 0.7, + "llm_id": "qwen-turbo-latest@Tongyi-Qianwen", + "maxTokensEnabled": false, + "max_retries": 3, + "max_rounds": 1, + "max_tokens": 256, + "mcp": [], + "message_history_window_size": 12, + "outputs": { + "content": { + "type": "string", + "value": "" + } + }, + "presencePenaltyEnabled": false, + "presence_penalty": 0.4, + "prompts": [ + { + "content": "{sys.query}", + "role": "user" + } + ], + "sys_prompt": " \n\nYour responsibility is to identify and extract the stock name or abbreviation from the user's natural language query and return the corresponding unique stock code.\n\n \n\n\n\n \n\n1. Only one result is allowed: - If a stock is identified \u2192 only return the corresponding stock code; - If no stock is identified \u2192 only return \u201cNot Found\u201d. 2. **Do not** output any additional text, punctuation, explanation, prefixes, or line breaks. 3. The output must strictly adhere to the . \n\n\n\n\n\nOnly output the stock code (e.g., AAPL or 600519)\nOr only output \u201cNot Found\u201d\n\n\n\n\nUser input: \u201cHelp me check the research report of Apple\u201d \u2192 Output: AAPL\nUser input: \u201cHow is Maotai\u2019s financial performance\u201d \u2192 Output: 600519\nUser input: \u201cHow is the Shanghai Composite Index doing today\u201d \u2192 Output: Not Found\n\n\n\n - Tavily Search: Use this tool when you are unsure of the stock code. - If you are confident, you do not need to use the tool. \n\n\n\n\n\nOnly output the result, no explanations, hints, or notes allowed.\nThe output can only be the stock code or \u201cNot Found\u201d, otherwise, it is considered an incorrect answer.\n", + "temperature": 0.1, + "temperatureEnabled": false, + "tools": [ + { + "component_name": "TavilySearch", + "name": "TavilySearch", + "params": { + "api_key": "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", + "days": 7, + "exclude_domains": [], + "include_answer": false, + "include_domains": [], + "include_image_descriptions": false, + "include_images": false, + "include_raw_content": true, + "max_results": 5, + "outputs": { + "formalized_content": { + "type": "string", + "value": "" + }, + "json": { + "type": "Array", + "value": [] + } + }, + "query": "sys.query", + "search_depth": "basic", + "topic": "general" + } + } + ], + "topPEnabled": false, + "top_p": 0.3, + "user_prompt": "", + "visual_files_var": "" + } + }, + "upstream": [ + "begin" + ] + }, + "Agent:SadDodosRescue": { + "downstream": [ + "Agent:SharpSlothsSlide" + ], + "obj": { + "component_name": "Agent", + "params": { + "cite": true, + "delay_after_error": 1, + "description": "", + "exception_default_value": "", + "exception_goto": [], + "exception_method": "", + "frequencyPenaltyEnabled": false, + "frequency_penalty": 0.7, + "llm_id": "kimi-k2-turbo-preview@Moonshot", + "maxTokensEnabled": false, + "max_retries": 3, + "max_rounds": 1, + "max_tokens": 256, + "mcp": [ + { + "mcp_id": "30d6ef8ea8d511f0828382e3548809fa", + "tools": {} + } + ], + "message_history_window_size": 12, + "outputs": { + "content": { + "type": "string", + "value": "" + } + }, + "presencePenaltyEnabled": false, + "presence_penalty": 0.4, + "prompts": [ + { + "content": "user's query is {sys.query}\n\n\n{Agent:ManyToesBrush@content}\n", + "role": "user" + } + ], + "sys_prompt": " \n\nYou are the information extraction agent. You understand the user\u2019s query and delegate tasks to investoday and the internal research report retrieval agent. \n\n \n\n\n\n 1. Based on the stock code output by the \"Extract Stock Code\" agent, call investoday's list_news to retrieve the latest authoritative research reports and views, and save all publicly available key information. \n\n2. Call the \"Internal Research Report Retrieval Agent\" and save the full text of the research report output. \n\n3. Output the content retrieved from investoday and the Internal Research Report Retrieval Agent in full. \n\n\n\n\n\nThe output must be divided into two sections:\n#1. Title: \u201cinvestoday\u201d\nDirectly output the content collected from investoday without any additional processing.\n#2. Title: \"Internal Research Report Retrieval Agent\"\nDirectly output the content provided by the Internal Research Report Retrieval Agent.\n", + "temperature": 0.1, + "temperatureEnabled": false, + "tools": [ + { + "component_name": "Agent", + "id": "Agent:MightyIdeasGlow", + "name": "Internal Research Report Retrieval Agent", + "params": { + "cite": true, + "delay_after_error": 1, + "description": "You are a senior financial content analyst who can accurately identify the companies, stock codes, industries or topics mentioned in user questions, and completely extract relevant research content from the knowledge base to ensure that data, opinions and conclusions are not lost.", + "exception_default_value": "", + "exception_goto": [], + "exception_method": "", + "frequencyPenaltyEnabled": false, + "frequency_penalty": 0.7, + "llm_id": "kimi-k2-turbo-preview@Moonshot", + "maxTokensEnabled": false, + "max_retries": 3, + "max_rounds": 1, + "max_tokens": 256, + "mcp": [], + "message_history_window_size": 12, + "outputs": { + "content": { + "type": "string", + "value": "" + } + }, + "presencePenaltyEnabled": false, + "presence_penalty": 0.4, + "prompts": [ + { + "content": "{sys.query}", + "role": "user" + } + ], + "sys_prompt": " \n\nRead user input \u2192 Identify the involved company/stock (supports abbreviations, full names, codes, and aliases) \u2192 Retrieve the most relevant research reports from the knowledge base \u2192 Output the full text of the research report, retaining the original format, data, chart descriptions, and risk warnings. \n\n\n\n\n\n \n\n1. Exact Match: Prioritize exact matches of company full names and stock codes. \n\n2. Content Fidelity: Fully retain the research report text stored in the knowledge base without deletion, modification, or omission of paragraphs. \n\n3. Original Data: Retain table data, dates, units, etc., in their original form. \n\n4. Complete Viewpoints: Include investment logic, financial analysis, industry comparisons, earnings forecasts, valuation methods, risk warnings, etc. \n\n5. Merging Multiple Reports: If there are multiple relevant research reports, output them in reverse chronological order. \n\n\n\n6. No Results Feedback: If no matching reports are found, output \u201cNo related research reports available in the knowledge base.\u201d\n\n\n\n ", + "temperature": 0.1, + "temperatureEnabled": false, + "tools": [ + { + "component_name": "Retrieval", + "name": "Retrieval", + "params": { + "cross_languages": [], + "description": "A knowledge base of research reports on stock analysis by senior experts", + "empty_response": "", + "kb_ids": [ + "60c53ed89acc11f0bc1e7a2a6d0b2755" + ], + "keywords_similarity_weight": 0.7, + "outputs": { + "formalized_content": { + "type": "string", + "value": "" + } + }, + "rerank_id": "", + "similarity_threshold": 0.2, + "top_k": 1024, + "top_n": 8, + "use_kg": false + } + } + ], + "topPEnabled": false, + "top_p": 0.3, + "user_prompt": "This is the order you need to send to the agent.", + "visual_files_var": "" + } + } + ], + "topPEnabled": false, + "top_p": 0.3, + "user_prompt": "", + "visual_files_var": "" + } + }, + "upstream": [ + "Switch:FluffyCoinsSell" + ] + }, + "Agent:SharpSlothsSlide": { + "downstream": [ + "Message:OliveLawsArgue" + ], + "obj": { + "component_name": "Agent", + "params": { + "cite": true, + "delay_after_error": 1, + "description": "", + "exception_default_value": "", + "exception_goto": [], + "exception_method": "", + "frequencyPenaltyEnabled": false, + "frequency_penalty": 0.7, + "llm_id": "qwen-turbo-latest@Tongyi-Qianwen", + "maxTokensEnabled": false, + "max_retries": 3, + "max_rounds": 1, + "max_tokens": 256, + "mcp": [], + "message_history_window_size": 12, + "outputs": { + "content": { + "type": "string", + "value": "" + } + }, + "presencePenaltyEnabled": false, + "presence_penalty": 0.4, + "prompts": [ + { + "content": "User query questions:\n\n\n\n{sys.query}\n\n\n\nInformation Extraction Agent:\n\n{Agent:SadDodosRescue@content}", + "role": "user" + } + ], + "sys_prompt": " \n\nYou are a senior investment banking (IB) analyst with years of experience in capital market research. You excel at writing investment research reports covering publicly listed companies, industries, and macroeconomics. You possess strong financial analysis skills and industry insights, combining quantitative and qualitative analysis to provide high-value references for investment decisions. \n\n**You are able to retain and present differentiated viewpoints from various reports and sources in your research, and when discrepancies arise, you do not merge them into a single conclusion. Instead, you compare and analyze the differences.** \n\n\n \n\n\n\n\n \n\nYou will receive financial information extracted by the information extraction agent.\n\n \n\n\n\nBased on the content returned by the information extraction agent (no fabrication of data), write a professional, complete, and structured investment research report. The report must be logically rigorous, clearly organized, and use professional language, suitable for reference by fund managers, institutional investors, and other professional readers.\nWhen there are differences in analysis or forecasts between different reports or institutions, you must list and identify the sources in the report. You should not select only one viewpoint. You need to point out the differences, their possible causes, and their impact on investment judgments.\n\n\n\n\n##1. Summary\nProvide a concise overview of the company\u2019s core business, recent performance, industry positioning, and major investment highlights.\nSummarize key conclusions in 3-5 sentences.\nHighlight any discrepancies in core conclusions and briefly describe the differing viewpoints and areas of disagreement.\n##2. Company Overview\nDescribe the company's main business, core products/services, market share, competitive advantages, and business model.\nHighlight any differences in the description of the company\u2019s market position or competitive advantages from different sources. Present and compare these differences.\n##3. Recent Financial Performance\nSummarize key metrics from the latest financial report (e.g., revenue, net profit, gross margin, EPS).\nHighlight the drivers behind the trends and compare the differential analyses from different reports. Present this comparison in a table.\n##4. Industry Trends & Opportunities\nOverview of industry development trends, market size, and major drivers.\nIf different sources provide differing forecasts for industry growth rates, technological trends, or competitive landscape, list these and provide background information. Present this comparison in a table.\n##5. Investment Recommendation\nProvide a clear investment recommendation based on the analysis above (e.g., \"Buy/Hold/Neutral/Sell\"), presented in a table.\nInclude investment ratings or recommendations from all sources, with the source and date clearly noted.\nIf you provide a combined recommendation based on different viewpoints, clearly explain the reasoning behind this integration.\n##6. Appendix & References\nList the data sources, analysis methods, important formulas, or chart descriptions used.\nAll references must come from the information extraction agent and the company financial data table provided, or publicly noted sources.\nFor differentiated viewpoints, provide full citation information (author, institution, date) and present this in a table.\n\n\n\n\nLanguage Style: Financial, professional, precise, and analytical.\nViewpoint Retention: When there are multiple viewpoints and conclusions, all must be retained and compared. You cannot choose only one.\nCitations: When specific data or viewpoints are referenced, include the source in parentheses (e.g., Source: Morgan Stanley Research, 2024-05-07).\nFacts: All data and conclusions must come from the information extraction agent or their noted legitimate sources. No fabrication is allowed.\nReadability: Use short paragraphs and bullet points to make it easy for professional readers to grasp key information and see the differences in viewpoints.\n\n\n\n\nGenerate a complete investment research report that meets investment banking industry standards, which can be directly used for institutional investment internal reference, while faithfully retaining differentiated viewpoints from various reports and providing the corresponding analysis.\n", + "temperature": 0.1, + "temperatureEnabled": false, + "tools": [], + "topPEnabled": false, + "top_p": 0.3, + "user_prompt": "", + "visual_files_var": "" + } + }, + "upstream": [ + "Agent:SadDodosRescue" + ] + }, + "CodeExec:LightSheepTrade": { + "downstream": [ + "Message:OliveLawsArgue" + ], + "obj": { + "component_name": "CodeExec", + "params": { + "arguments": { + "input_text": "YahooFinance:QuickAdsDig@report" + }, + "lang": "python", + "outputs": { + "md_table": { + "type": "String", + "value": "" + } + }, + "script": "import re\n\ndef format_number(value: str) -> str:\n \"\"\"Convert scientific notation or floating-point numbers to comma-separated numbers\"\"\"\n try:\n num = float(value)\n if num.is_integer():\n return f\"{int(num):,}\" # If it's an integer, format without decimal places\n else:\n return f\"{num:,.2f}\" # Otherwise, keep two decimal places and add commas\n except:\n return value # Return the original value if it's not a number (e.g., \u2014 or empty)\n\ndef extract_md_table_single_column(input_text: str) -> str:\n # Use English indicators directly\n indicators = [\n \"Total Assets\", \"Total Equity\", \"Tangible Book Value\", \"Total Debt\", \n \"Net Debt\", \"Cash And Cash Equivalents\", \"Working Capital\", \n \"Long Term Debt\", \"Common Stock Equity\", \"Ordinary Shares Number\"\n ]\n \n # Core indicators and their corresponding units\n unit_map = {\n \"Total Assets\": \"USD\",\n \"Total Equity\": \"USD\",\n \"Tangible Book Value\": \"USD\",\n \"Total Debt\": \"USD\",\n \"Net Debt\": \"USD\",\n \"Cash And Cash Equivalents\": \"USD\",\n \"Working Capital\": \"USD\",\n \"Long Term Debt\": \"USD\",\n \"Common Stock Equity\": \"USD\",\n \"Ordinary Shares Number\": \"Shares\"\n }\n\n lines = input_text.splitlines()\n\n # Automatically detect the date column, keeping only the first one\n date_pattern = r\"\\d{4}-\\d{2}-\\d{2}\"\n header_line = \"\"\n for line in lines:\n if re.search(date_pattern, line):\n header_line = line\n break\n\n if not header_line:\n raise ValueError(\"Date column header row not found\")\n\n dates = re.findall(date_pattern, header_line)\n first_date = dates[0] # Keep only the first date\n header = f\"| Indicator | {first_date} |\"\n divider = \"|------------------------|------------|\"\n\n rows = []\n for ind in indicators:\n unit = unit_map.get(ind, \"\")\n display_ind = f\"{ind} ({unit})\" if unit else ind\n\n found = False\n for line in lines:\n if ind in line:\n # Match numbers and possible units\n pattern = r\"(nan|[0-9\\.]+(?:[eE][+-]?\\d+)?)\"\n values = re.findall(pattern, line)\n # Replace 'nan' with '\u2014' and format the number\n first_value = values[0].strip() if values and values[0].strip().lower() != \"nan\" else \"\u2014\"\n first_value = format_number(first_value) if first_value != \"\u2014\" else \"\u2014\"\n rows.append(f\"| {display_ind} | {first_value} |\")\n found = True\n break\n if not found:\n rows.append(f\"| {display_ind} | \u2014 |\")\n\n md_table = \"\\n\".join([header, divider] + rows)\n return md_table\n\ndef main(input_text: str):\n return extract_md_table_single_column(input_text)\n" + } + }, + "upstream": [ + "YahooFinance:QuickAdsDig" + ] + }, + "Message:OliveLawsArgue": { + "downstream": [], + "obj": { + "component_name": "Message", + "params": { + "content": [ + "Company financial statements:\n\n{CodeExec:LightSheepTrade@md_table}\n\n\n{Agent:SharpSlothsSlide@content}" + ] + } + }, + "upstream": [ + "Agent:SharpSlothsSlide", + "CodeExec:LightSheepTrade" + ] + }, + "Message:TwentyBanksLeave": { + "downstream": [], + "obj": { + "component_name": "Message", + "params": { + "content": [ + "Your query is not supported." + ] + } + }, + "upstream": [ + "Switch:FluffyCoinsSell" + ] + }, + "Switch:FluffyCoinsSell": { + "downstream": [ + "YahooFinance:QuickAdsDig", + "Agent:SadDodosRescue", + "Message:TwentyBanksLeave" + ], + "obj": { + "component_name": "Switch", + "params": { + "conditions": [ + { + "items": [ + { + "cpn_id": "Agent:ManyToesBrush@content", + "operator": "not contains", + "value": "Not Found" + } + ], + "logical_operator": "and", + "to": [ + "YahooFinance:QuickAdsDig", + "Agent:SadDodosRescue" + ] + } + ], + "end_cpn_ids": [ + "Message:TwentyBanksLeave" + ] + } + }, + "upstream": [ + "Agent:ManyToesBrush" + ] + }, + "YahooFinance:QuickAdsDig": { + "downstream": [ + "CodeExec:LightSheepTrade" + ], + "obj": { + "component_name": "YahooFinance", + "params": { + "balance_sheet": true, + "cash_flow_statement": false, + "financials": false, + "history": false, + "info": false, + "news": false, + "outputs": { + "report": { + "type": "string", + "value": "" + } + }, + "stock_code": "sys.query" + } + }, + "upstream": [ + "Switch:FluffyCoinsSell" + ] + }, + "begin": { + "downstream": [ + "Agent:ManyToesBrush" + ], + "obj": { + "component_name": "Begin", + "params": { + "enablePrologue": true, + "inputs": {}, + "mode": "conversational", + "prologue": "Hi! I'm your assistant. What can I do for you?" + } + }, + "upstream": [] + } + }, + "globals": { + "sys.conversation_turns": 0, + "sys.files": [], + "sys.query": "", + "sys.user_id": "" + }, + "graph": { + "edges": [ + { + "data": { + "isHovered": false + }, + "id": "xy-edge__Agent:ManyToesBrushtool-Tool:AngryRabbitsPlayend", + "source": "Agent:ManyToesBrush", + "sourceHandle": "tool", + "target": "Tool:AngryRabbitsPlay", + "targetHandle": "end" + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__Agent:SadDodosRescuestart-Agent:SharpSlothsSlideend", + "source": "Agent:SadDodosRescue", + "sourceHandle": "start", + "target": "Agent:SharpSlothsSlide", + "targetHandle": "end" + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__Agent:SadDodosRescueagentBottom-Agent:MightyIdeasGlowagentTop", + "source": "Agent:SadDodosRescue", + "sourceHandle": "agentBottom", + "target": "Agent:MightyIdeasGlow", + "targetHandle": "agentTop" + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__Agent:MightyIdeasGlowtool-Tool:FullIconsStopend", + "source": "Agent:MightyIdeasGlow", + "sourceHandle": "tool", + "target": "Tool:FullIconsStop", + "targetHandle": "end" + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__YahooFinance:QuickAdsDigstart-CodeExec:LightSheepTradeend", + "markerEnd": "logo", + "source": "YahooFinance:QuickAdsDig", + "sourceHandle": "start", + "style": { + "stroke": "rgba(91, 93, 106, 1)", + "strokeWidth": 1 + }, + "target": "CodeExec:LightSheepTrade", + "targetHandle": "end", + "type": "buttonEdge", + "zIndex": 1001 + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__Agent:SharpSlothsSlidestart-Message:OliveLawsArgueend", + "markerEnd": "logo", + "source": "Agent:SharpSlothsSlide", + "sourceHandle": "start", + "style": { + "stroke": "rgba(151, 154, 171, 1)", + "strokeWidth": 1 + }, + "target": "Message:OliveLawsArgue", + "targetHandle": "end", + "type": "buttonEdge", + "zIndex": 1001 + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__beginstart-Agent:ManyToesBrushend", + "markerEnd": "logo", + "source": "begin", + "sourceHandle": "start", + "style": { + "stroke": "rgba(151, 154, 171, 1)", + "strokeWidth": 1 + }, + "target": "Agent:ManyToesBrush", + "targetHandle": "end", + "type": "buttonEdge", + "zIndex": 1001 + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__Agent:ManyToesBrushstart-Switch:FluffyCoinsSellend", + "source": "Agent:ManyToesBrush", + "sourceHandle": "start", + "target": "Switch:FluffyCoinsSell", + "targetHandle": "end" + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__Switch:FluffyCoinsSellCase 1-YahooFinance:QuickAdsDigend", + "markerEnd": "logo", + "source": "Switch:FluffyCoinsSell", + "sourceHandle": "Case 1", + "style": { + "stroke": "rgba(151, 154, 171, 1)", + "strokeWidth": 1 + }, + "target": "YahooFinance:QuickAdsDig", + "targetHandle": "end", + "type": "buttonEdge", + "zIndex": 1001 + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__Switch:FluffyCoinsSellCase 1-Agent:SadDodosRescueend", + "markerEnd": "logo", + "source": "Switch:FluffyCoinsSell", + "sourceHandle": "Case 1", + "style": { + "stroke": "rgba(151, 154, 171, 1)", + "strokeWidth": 1 + }, + "target": "Agent:SadDodosRescue", + "targetHandle": "end", + "type": "buttonEdge", + "zIndex": 1001 + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__Switch:FluffyCoinsSellend_cpn_ids-Message:TwentyBanksLeaveend", + "markerEnd": "logo", + "source": "Switch:FluffyCoinsSell", + "sourceHandle": "end_cpn_ids", + "style": { + "stroke": "rgba(151, 154, 171, 1)", + "strokeWidth": 1 + }, + "target": "Message:TwentyBanksLeave", + "targetHandle": "end", + "type": "buttonEdge", + "zIndex": 1001 + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__CodeExec:LightSheepTradestart-Message:OliveLawsArgueend", + "markerEnd": "logo", + "source": "CodeExec:LightSheepTrade", + "sourceHandle": "start", + "style": { + "stroke": "rgba(91, 93, 106, 1)", + "strokeWidth": 1 + }, + "target": "Message:OliveLawsArgue", + "targetHandle": "end", + "type": "buttonEdge", + "zIndex": 1001 + }, + { + "data": { + "isHovered": false + }, + "id": "xy-edge__Agent:SadDodosRescuetool-Tool:ClearKiwisRollend", + "source": "Agent:SadDodosRescue", + "sourceHandle": "tool", + "target": "Tool:ClearKiwisRoll", + "targetHandle": "end" + } + ], + "nodes": [ + { + "data": { + "form": { + "enablePrologue": true, + "inputs": {}, + "mode": "conversational", + "prologue": "Hi! I'm your assistant. What can I do for you?" + }, + "label": "Begin", + "name": "begin" + }, + "dragging": false, + "id": "begin", + "measured": { + "height": 48, + "width": 200 + }, + "position": { + "x": -250.58492312820874, + "y": 304.13718826989873 + }, + "selected": false, + "sourcePosition": "left", + "targetPosition": "right", + "type": "beginNode" + }, + { + "data": { + "form": { + "cite": true, + "delay_after_error": 1, + "description": "", + "exception_default_value": "", + "exception_goto": [], + "exception_method": "", + "frequencyPenaltyEnabled": false, + "frequency_penalty": 0.7, + "llm_id": "qwen-turbo-latest@Tongyi-Qianwen", + "maxTokensEnabled": false, + "max_retries": 3, + "max_rounds": 1, + "max_tokens": 256, + "mcp": [], + "message_history_window_size": 12, + "outputs": { + "content": { + "type": "string", + "value": "" + } + }, + "presencePenaltyEnabled": false, + "presence_penalty": 0.4, + "prompts": [ + { + "content": "{sys.query}", + "role": "user" + } + ], + "sys_prompt": " \n\nYour responsibility is to identify and extract the stock name or abbreviation from the user's natural language query and return the corresponding unique stock code.\n\n \n\n\n\n \n\n1. Only one result is allowed: - If a stock is identified \u2192 only return the corresponding stock code; - If no stock is identified \u2192 only return \u201cNot Found\u201d. 2. **Do not** output any additional text, punctuation, explanation, prefixes, or line breaks. 3. The output must strictly adhere to the . \n\n\n\n\n\nOnly output the stock code (e.g., AAPL or 600519)\nOr only output \u201cNot Found\u201d\n\n\n\n\nUser input: \u201cHelp me check the research report of Apple\u201d \u2192 Output: AAPL\nUser input: \u201cHow is Maotai\u2019s financial performance\u201d \u2192 Output: 600519\nUser input: \u201cHow is the Shanghai Composite Index doing today\u201d \u2192 Output: Not Found\n\n\n\n - Tavily Search: Use this tool when you are unsure of the stock code. - If you are confident, you do not need to use the tool. \n\n\n\n\n\nOnly output the result, no explanations, hints, or notes allowed.\nThe output can only be the stock code or \u201cNot Found\u201d, otherwise, it is considered an incorrect answer.\n", + "temperature": 0.1, + "temperatureEnabled": false, + "tools": [ + { + "component_name": "TavilySearch", + "name": "TavilySearch", + "params": { + "api_key": "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", + "days": 7, + "exclude_domains": [], + "include_answer": false, + "include_domains": [], + "include_image_descriptions": false, + "include_images": false, + "include_raw_content": true, + "max_results": 5, + "outputs": { + "formalized_content": { + "type": "string", + "value": "" + }, + "json": { + "type": "Array", + "value": [] + } + }, + "query": "sys.query", + "search_depth": "basic", + "topic": "general" + } + } + ], + "topPEnabled": false, + "top_p": 0.3, + "user_prompt": "", + "visual_files_var": "" + }, + "label": "Agent", + "name": "Extract Stock Code Agent" + }, + "dragging": false, + "id": "Agent:ManyToesBrush", + "measured": { + "height": 76, + "width": 200 + }, + "position": { + "x": 1.784314979916303, + "y": 285.7261182739586 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "agentNode" + }, + { + "data": { + "form": { + "description": "This is an agent for a specific task.", + "user_prompt": "This is the order you need to send to the agent." + }, + "label": "Tool", + "name": "flow.tool_0" + }, + "dragging": false, + "id": "Tool:AngryRabbitsPlay", + "measured": { + "height": 48, + "width": 200 + }, + "position": { + "x": -1.1174997064789522, + "y": 392.2709327777357 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "toolNode" + }, + { + "data": { + "form": { + "content": [ + "Your query is not supported." + ] + }, + "label": "Message", + "name": "Reply to irrelevant message node" + }, + "dragging": false, + "id": "Message:TwentyBanksLeave", + "measured": { + "height": 48, + "width": 200 + }, + "position": { + "x": 1274.991898394738, + "y": 540.2215056031129 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "messageNode" + }, + { + "data": { + "form": { + "balance_sheet": true, + "cash_flow_statement": false, + "financials": false, + "history": false, + "info": false, + "news": false, + "outputs": { + "report": { + "type": "string", + "value": "" + } + }, + "stock_code": "sys.query" + }, + "label": "YahooFinance", + "name": "YahooFinance" + }, + "dragging": false, + "id": "YahooFinance:QuickAdsDig", + "measured": { + "height": 48, + "width": 200 + }, + "position": { + "x": 676.5378050046916, + "y": 74.09222900489664 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "ragNode" + }, + { + "data": { + "form": { + "cite": true, + "delay_after_error": 1, + "description": "", + "exception_default_value": "", + "exception_goto": [], + "exception_method": "", + "frequencyPenaltyEnabled": false, + "frequency_penalty": 0.7, + "llm_id": "kimi-k2-turbo-preview@Moonshot", + "maxTokensEnabled": false, + "max_retries": 3, + "max_rounds": 1, + "max_tokens": 256, + "mcp": [ + { + "mcp_id": "30d6ef8ea8d511f0828382e3548809fa", + "tools": {} + } + ], + "message_history_window_size": 12, + "outputs": { + "content": { + "type": "string", + "value": "" + } + }, + "presencePenaltyEnabled": false, + "presence_penalty": 0.4, + "prompts": [ + { + "content": "user's query is {sys.query}\n\n\n{Agent:ManyToesBrush@content}\n", + "role": "user" + } + ], + "sys_prompt": " \n\nYou are the information extraction agent. You understand the user\u2019s query and delegate tasks to investoday and the internal research report retrieval agent. \n\n \n\n\n\n 1. Based on the stock code output by the \"Extract Stock Code\" agent, call investoday's list_news to retrieve the latest authoritative research reports and views, and save all publicly available key information. \n\n2. Call the \"Internal Research Report Retrieval Agent\" and save the full text of the research report output. \n\n3. Output the content retrieved from investoday and the Internal Research Report Retrieval Agent in full. \n\n\n\n\n\nThe output must be divided into two sections:\n#1. Title: \u201cinvestoday\u201d\nDirectly output the content collected from investoday without any additional processing.\n#2. Title: \"Internal Research Report Retrieval Agent\"\nDirectly output the content provided by the Internal Research Report Retrieval Agent.\n", + "temperature": 0.1, + "temperatureEnabled": false, + "tools": [], + "topPEnabled": false, + "top_p": 0.3, + "user_prompt": "", + "visual_files_var": "" + }, + "label": "Agent", + "name": "Information Extraction Agent" + }, + "dragging": false, + "id": "Agent:SadDodosRescue", + "measured": { + "height": 76, + "width": 200 + }, + "position": { + "x": 674.0210917308762, + "y": 154.63747017677127 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "agentNode" + }, + { + "data": { + "form": { + "arguments": { + "input_text": "YahooFinance:QuickAdsDig@report" + }, + "lang": "python", + "outputs": { + "md_table": { + "type": "String", + "value": "" + } + }, + "script": "import re\n\ndef format_number(value: str) -> str:\n \"\"\"Convert scientific notation or floating-point numbers to comma-separated numbers\"\"\"\n try:\n num = float(value)\n if num.is_integer():\n return f\"{int(num):,}\" # If it's an integer, format without decimal places\n else:\n return f\"{num:,.2f}\" # Otherwise, keep two decimal places and add commas\n except:\n return value # Return the original value if it's not a number (e.g., \u2014 or empty)\n\ndef extract_md_table_single_column(input_text: str) -> str:\n # Use English indicators directly\n indicators = [\n \"Total Assets\", \"Total Equity\", \"Tangible Book Value\", \"Total Debt\", \n \"Net Debt\", \"Cash And Cash Equivalents\", \"Working Capital\", \n \"Long Term Debt\", \"Common Stock Equity\", \"Ordinary Shares Number\"\n ]\n \n # Core indicators and their corresponding units\n unit_map = {\n \"Total Assets\": \"USD\",\n \"Total Equity\": \"USD\",\n \"Tangible Book Value\": \"USD\",\n \"Total Debt\": \"USD\",\n \"Net Debt\": \"USD\",\n \"Cash And Cash Equivalents\": \"USD\",\n \"Working Capital\": \"USD\",\n \"Long Term Debt\": \"USD\",\n \"Common Stock Equity\": \"USD\",\n \"Ordinary Shares Number\": \"Shares\"\n }\n\n lines = input_text.splitlines()\n\n # Automatically detect the date column, keeping only the first one\n date_pattern = r\"\\d{4}-\\d{2}-\\d{2}\"\n header_line = \"\"\n for line in lines:\n if re.search(date_pattern, line):\n header_line = line\n break\n\n if not header_line:\n raise ValueError(\"Date column header row not found\")\n\n dates = re.findall(date_pattern, header_line)\n first_date = dates[0] # Keep only the first date\n header = f\"| Indicator | {first_date} |\"\n divider = \"|------------------------|------------|\"\n\n rows = []\n for ind in indicators:\n unit = unit_map.get(ind, \"\")\n display_ind = f\"{ind} ({unit})\" if unit else ind\n\n found = False\n for line in lines:\n if ind in line:\n # Match numbers and possible units\n pattern = r\"(nan|[0-9\\.]+(?:[eE][+-]?\\d+)?)\"\n values = re.findall(pattern, line)\n # Replace 'nan' with '\u2014' and format the number\n first_value = values[0].strip() if values and values[0].strip().lower() != \"nan\" else \"\u2014\"\n first_value = format_number(first_value) if first_value != \"\u2014\" else \"\u2014\"\n rows.append(f\"| {display_ind} | {first_value} |\")\n found = True\n break\n if not found:\n rows.append(f\"| {display_ind} | \u2014 |\")\n\n md_table = \"\\n\".join([header, divider] + rows)\n return md_table\n\ndef main(input_text: str):\n return extract_md_table_single_column(input_text)\n" + }, + "label": "CodeExec", + "name": "Code-generated balance sheet" + }, + "dragging": false, + "id": "CodeExec:LightSheepTrade", + "measured": { + "height": 48, + "width": 200 + }, + "position": { + "x": 970.444642975358, + "y": 74.04386270784316 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "ragNode" + }, + { + "data": { + "form": { + "cite": true, + "delay_after_error": 1, + "description": "", + "exception_default_value": "", + "exception_goto": [], + "exception_method": "", + "frequencyPenaltyEnabled": false, + "frequency_penalty": 0.7, + "llm_id": "qwen-turbo-latest@Tongyi-Qianwen", + "maxTokensEnabled": false, + "max_retries": 3, + "max_rounds": 1, + "max_tokens": 256, + "mcp": [], + "message_history_window_size": 12, + "outputs": { + "content": { + "type": "string", + "value": "" + } + }, + "presencePenaltyEnabled": false, + "presence_penalty": 0.4, + "prompts": [ + { + "content": "User query questions:\n\n\n\n{sys.query}\n\n\n\nInformation Extraction Agent:\n\n{Agent:SadDodosRescue@content}", + "role": "user" + } + ], + "sys_prompt": " \n\nYou are a senior investment banking (IB) analyst with years of experience in capital market research. You excel at writing investment research reports covering publicly listed companies, industries, and macroeconomics. You possess strong financial analysis skills and industry insights, combining quantitative and qualitative analysis to provide high-value references for investment decisions. \n\n**You are able to retain and present differentiated viewpoints from various reports and sources in your research, and when discrepancies arise, you do not merge them into a single conclusion. Instead, you compare and analyze the differences.** \n\n\n \n\n\n\n\n \n\nYou will receive financial information extracted by the information extraction agent.\n\n \n\n\n\nBased on the content returned by the information extraction agent (no fabrication of data), write a professional, complete, and structured investment research report. The report must be logically rigorous, clearly organized, and use professional language, suitable for reference by fund managers, institutional investors, and other professional readers.\nWhen there are differences in analysis or forecasts between different reports or institutions, you must list and identify the sources in the report. You should not select only one viewpoint. You need to point out the differences, their possible causes, and their impact on investment judgments.\n\n\n\n\n##1. Summary\nProvide a concise overview of the company\u2019s core business, recent performance, industry positioning, and major investment highlights.\nSummarize key conclusions in 3-5 sentences.\nHighlight any discrepancies in core conclusions and briefly describe the differing viewpoints and areas of disagreement.\n##2. Company Overview\nDescribe the company's main business, core products/services, market share, competitive advantages, and business model.\nHighlight any differences in the description of the company\u2019s market position or competitive advantages from different sources. Present and compare these differences.\n##3. Recent Financial Performance\nSummarize key metrics from the latest financial report (e.g., revenue, net profit, gross margin, EPS).\nHighlight the drivers behind the trends and compare the differential analyses from different reports. Present this comparison in a table.\n##4. Industry Trends & Opportunities\nOverview of industry development trends, market size, and major drivers.\nIf different sources provide differing forecasts for industry growth rates, technological trends, or competitive landscape, list these and provide background information. Present this comparison in a table.\n##5. Investment Recommendation\nProvide a clear investment recommendation based on the analysis above (e.g., \"Buy/Hold/Neutral/Sell\"), presented in a table.\nInclude investment ratings or recommendations from all sources, with the source and date clearly noted.\nIf you provide a combined recommendation based on different viewpoints, clearly explain the reasoning behind this integration.\n##6. Appendix & References\nList the data sources, analysis methods, important formulas, or chart descriptions used.\nAll references must come from the information extraction agent and the company financial data table provided, or publicly noted sources.\nFor differentiated viewpoints, provide full citation information (author, institution, date) and present this in a table.\n\n\n\n\nLanguage Style: Financial, professional, precise, and analytical.\nViewpoint Retention: When there are multiple viewpoints and conclusions, all must be retained and compared. You cannot choose only one.\nCitations: When specific data or viewpoints are referenced, include the source in parentheses (e.g., Source: Morgan Stanley Research, 2024-05-07).\nFacts: All data and conclusions must come from the information extraction agent or their noted legitimate sources. No fabrication is allowed.\nReadability: Use short paragraphs and bullet points to make it easy for professional readers to grasp key information and see the differences in viewpoints.\n\n\n\n\nGenerate a complete investment research report that meets investment banking industry standards, which can be directly used for institutional investment internal reference, while faithfully retaining differentiated viewpoints from various reports and providing the corresponding analysis.\n", + "temperature": 0.1, + "temperatureEnabled": false, + "tools": [], + "topPEnabled": false, + "top_p": 0.3, + "user_prompt": "", + "visual_files_var": "" + }, + "label": "Agent", + "name": "Research report generation agent" + }, + "id": "Agent:SharpSlothsSlide", + "measured": { + "height": 76, + "width": 200 + }, + "position": { + "x": 974.0210917308762, + "y": 154.63747017677127 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "agentNode" + }, + { + "data": { + "form": { + "content": [ + "Company financial statements:\n\n{CodeExec:LightSheepTrade@md_table}\n\n\n{Agent:SharpSlothsSlide@content}" + ] + }, + "label": "Message", + "name": "Reply message node" + }, + "dragging": false, + "id": "Message:OliveLawsArgue", + "measured": { + "height": 48, + "width": 200 + }, + "position": { + "x": 1279.3354680249918, + "y": 83.53099404318621 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "messageNode" + }, + { + "data": { + "form": { + "cite": true, + "delay_after_error": 1, + "description": "You are a senior financial content analyst who can accurately identify the companies, stock codes, industries or topics mentioned in user questions, and completely extract relevant research content from the knowledge base to ensure that data, opinions and conclusions are not lost.", + "exception_default_value": "", + "exception_goto": [], + "exception_method": "", + "frequencyPenaltyEnabled": false, + "frequency_penalty": 0.7, + "llm_id": "kimi-k2-turbo-preview@Moonshot", + "maxTokensEnabled": false, + "max_retries": 3, + "max_rounds": 1, + "max_tokens": 256, + "mcp": [], + "message_history_window_size": 12, + "outputs": { + "content": { + "type": "string", + "value": "" + } + }, + "presencePenaltyEnabled": false, + "presence_penalty": 0.4, + "prompts": [ + { + "content": "{sys.query}", + "role": "user" + } + ], + "sys_prompt": " \n\nRead user input \u2192 Identify the involved company/stock (supports abbreviations, full names, codes, and aliases) \u2192 Retrieve the most relevant research reports from the knowledge base \u2192 Output the full text of the research report, retaining the original format, data, chart descriptions, and risk warnings. \n\n\n\n\n\n \n\n1. Exact Match: Prioritize exact matches of company full names and stock codes. \n\n2. Content Fidelity: Fully retain the research report text stored in the knowledge base without deletion, modification, or omission of paragraphs. \n\n3. Original Data: Retain table data, dates, units, etc., in their original form. \n\n4. Complete Viewpoints: Include investment logic, financial analysis, industry comparisons, earnings forecasts, valuation methods, risk warnings, etc. \n\n5. Merging Multiple Reports: If there are multiple relevant research reports, output them in reverse chronological order. \n\n\n\n6. No Results Feedback: If no matching reports are found, output \u201cNo related research reports available in the knowledge base.\u201d\n\n\n\n ", + "temperature": 0.1, + "temperatureEnabled": false, + "tools": [ + { + "component_name": "Retrieval", + "name": "Retrieval", + "params": { + "cross_languages": [], + "description": "A knowledge base of research reports on stock analysis by senior experts", + "empty_response": "", + "kb_ids": [ + "60c53ed89acc11f0bc1e7a2a6d0b2755" + ], + "keywords_similarity_weight": 0.7, + "outputs": { + "formalized_content": { + "type": "string", + "value": "" + } + }, + "rerank_id": "", + "similarity_threshold": 0.2, + "top_k": 1024, + "top_n": 8, + "use_kg": false + } + } + ], + "topPEnabled": false, + "top_p": 0.3, + "user_prompt": "This is the order you need to send to the agent.", + "visual_files_var": "" + }, + "label": "Agent", + "name": "Internal Research Report Retrieval Agent" + }, + "dragging": false, + "id": "Agent:MightyIdeasGlow", + "measured": { + "height": 76, + "width": 200 + }, + "position": { + "x": 787.966928431608, + "y": 270.12089782504677 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "agentNode" + }, + { + "data": { + "form": { + "description": "This is an agent for a specific task.", + "user_prompt": "This is the order you need to send to the agent." + }, + "label": "Tool", + "name": "flow.tool_1" + }, + "dragging": false, + "id": "Tool:FullIconsStop", + "measured": { + "height": 48, + "width": 200 + }, + "position": { + "x": 786.0879409003913, + "y": 373.7912225392144 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "toolNode" + }, + { + "data": { + "form": { + "conditions": [ + { + "items": [ + { + "cpn_id": "Agent:ManyToesBrush@content", + "operator": "not contains", + "value": "Not Found" + } + ], + "logical_operator": "and", + "to": [ + "YahooFinance:QuickAdsDig", + "Agent:SadDodosRescue" + ] + } + ], + "end_cpn_ids": [ + "Message:TwentyBanksLeave" + ] + }, + "label": "Switch", + "name": "Switch" + }, + "dragging": false, + "id": "Switch:FluffyCoinsSell", + "measured": { + "height": 146, + "width": 200 + }, + "position": { + "x": 244.5649388872756, + "y": 249.25263304293162 + }, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "switchNode" + }, + { + "data": { + "form": { + "description": "This is an agent for a specific task.", + "user_prompt": "This is the order you need to send to the agent." + }, + "label": "Tool", + "name": "flow.tool_2" + }, + "id": "Tool:ClearKiwisRoll", + "measured": { + "height": 44, + "width": 200 + }, + "position": { + "x": 592.0210917308762, + "y": 294.6374701767713 + }, + "sourcePosition": "right", + "targetPosition": "left", + "type": "toolNode" + }, + { + "data": { + "form": { + "text": "Regarding the MCP message for the Information Extraction Agent: You must manually add an MCP in MCP Servers before you can use it!" + }, + "label": "Note", + "name": "MCP Note" + }, + "dragHandle": ".note-drag-handle", + "dragging": false, + "height": 185, + "id": "Note:SadWallsSniff", + "measured": { + "height": 185, + "width": 328 + }, + "position": { + "x": 527.9711365245946, + "y": 448.2236919343899 + }, + "resizing": false, + "selected": false, + "sourcePosition": "right", + "targetPosition": "left", + "type": "noteNode", + "width": 328 + } + ] + }, + "history": [], + "messages": [], + "path": [], + "retrieval": [] + }, + "avatar": + "data:image/png;base64,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" } \ No newline at end of file diff --git a/agent/templates/sql_assistant.json b/agent/templates/text2sql_data_expert.json similarity index 97% rename from agent/templates/sql_assistant.json rename to agent/templates/text2sql_data_expert.json index 6c6030f67d..d062270686 100644 --- a/agent/templates/sql_assistant.json +++ b/agent/templates/text2sql_data_expert.json @@ -1,12 +1,12 @@ { "id": 17, "title": { - "en": "SQL Assistant", - "de": "SQL Assistent", - "zh": "SQL助理"}, + "en": "Text-to-SQL data expert", + "de": "Text-to-SQL-Datenexperte", + "zh": "Text-to-SQL 问数专家"}, "description": { - "en": "SQL Assistant is an AI-powered tool that lets business users turn plain-English questions into fully formed SQL queries. Simply type your question (e.g., 'Show me last quarter's top 10 products by revenue') and SQL Assistant generates the exact SQL, runs it against your database, and returns the results in seconds. ", - "de": "SQL-Assistent ist ein KI-gestütztes Tool, mit dem Geschäftsanwender einfache englische Fragen in vollständige SQL-Abfragen umwandeln können. Geben Sie einfach Ihre Frage ein (z.B. 'Zeige mir die Top 10 Produkte des letzten Quartals nach Umsatz') und der SQL-Assistent generiert das exakte SQL, führt es gegen Ihre Datenbank aus und liefert die Ergebnisse in Sekunden.", + "en": "Text-to-SQL data expert lets business users turn plain-English questions into fully formed SQL queries. Simply type your question (e.g., 'Show me last quarter's top 10 products by revenue') and Text-to-SQL data expert generates the exact SQL, runs it against your database, and returns the results in seconds. ", + "de": "Text-to-SQL-Datenexperte ist ein KI-gestütztes Tool, mit dem Geschäftsanwender einfache englische Fragen in vollständige SQL-Abfragen umwandeln können. Geben Sie einfach Ihre Frage ein (z.B. 'Zeige mir die Top 10 Produkte des letzten Quartals nach Umsatz') und der SQL-Assistent generiert das exakte SQL, führt es gegen Ihre Datenbank aus und liefert die Ergebnisse in Sekunden.", "zh": "用户能够将简单文本问题转化为完整的SQL查询并输出结果。只需输入您的问题(例如,展示上个季度前十名按收入排序的产品),SQL助理就会生成精确的SQL语句,对其运行您的数据库,并几秒钟内返回结果。"}, "canvas_type": "Marketing", "dsl": { diff --git a/agent/templates/trip_planner.json b/agent/templates/trip_planner.json index 7ca15bc5d8..d6670b2303 100644 --- a/agent/templates/trip_planner.json +++ b/agent/templates/trip_planner.json @@ -2,13 +2,13 @@ { "id": 14, "title": { - "en": "Trip Planner", + "en": "Trip planner", "de": "Reiseplaner", - "zh": "旅行规划"}, + "zh": "旅行规划师"}, "description": { "en": "This smart trip planner utilizes LLM technology to automatically generate customized travel itineraries, with optional tool integration for enhanced reliability.", "de": "Dieser intelligente Reiseplaner nutzt LLM-Technologie zur automatischen Generierung maßgeschneiderter Reiserouten mit optionaler Tool-Integration für erhöhte Zuverlässigkeit.", - "zh": "智能旅行规划将利用大模型自动生成定制化的旅行行程,附带可选工具集成,以增强可靠性。"}, + "zh": "智能旅行规划师将利用大模型自动生成定制化的旅行行程,附带可选工具集成,以增强可靠性。"}, "canvas_type": "Consumer App", "dsl": { "components": { diff --git a/agent/templates/technical_docs_qa.json b/agent/templates/your_starter_dataset_chatbot.json similarity index 98% rename from agent/templates/technical_docs_qa.json rename to agent/templates/your_starter_dataset_chatbot.json index 37ab9e731c..4104cfc289 100644 --- a/agent/templates/technical_docs_qa.json +++ b/agent/templates/your_starter_dataset_chatbot.json @@ -2,14 +2,14 @@ { "id": 9, "title": { - "en": "Technical Docs QA", - "de": "Technische Dokumentation Fragen & Antworten", - "zh": "技术文档问答"}, + "en": "Your starter dataset chatbot", + "de": "Dein Starter-Datensatz-Chatbot", + "zh": "入门级知识库聊天助手"}, "description": { "en": "This is a document question-and-answer system based on a knowledge base. When a user asks a question, it retrieves relevant document content to provide accurate answers.", "de": "Dies ist ein dokumentenbasiertes Frage-und-Antwort-System auf Basis einer Wissensdatenbank. Wenn ein Benutzer eine Frage stellt, werden relevante Dokumenteninhalte abgerufen, um genaue Antworten zu liefern.", - "zh": "基于知识库的文档问答系统,当用户提出问题时,会检索相关本地文档并提供准确回答。"}, - "canvas_type": "Customer Support", + "zh": "基于知识库的入门级知识库聊天助手,当用户提出问题时,会检索相关本地文档并提供准确回答。"}, + "canvas_type": "Recommended", "dsl": { "components": { "Agent:StalePandasDream": { diff --git a/docs/guides/agent/agent_component_reference/execute_sql.md b/docs/guides/agent/agent_component_reference/execute_sql.md index 30c9c9912f..c08b73ffbb 100644 --- a/docs/guides/agent/agent_component_reference/execute_sql.md +++ b/docs/guides/agent/agent_component_reference/execute_sql.md @@ -24,7 +24,7 @@ The **Execute SQL** tool enables you to connect to a relational database and run ## Examples -You can pair an **Agent** component with the **Execute SQL** tool, with the **Agent** generating SQL statements and the **Execute SQL** tool handling database connection and query execution. An example of this setup can be found in the **SQL Assistant** Agent template shown below: +You can pair an **Agent** component with the **Execute SQL** tool, with the **Agent** generating SQL statements and the **Execute SQL** tool handling database connection and query execution. An example of this setup can be found in the **Text-to-SQL data expert** Agent template shown below: ![](https://raw.githubusercontent.com/infiniflow/ragflow-docs/main/images/exeSQL.jpg) diff --git a/docs/guides/agent/agent_introduction.md b/docs/guides/agent/agent_introduction.md index f310e503dd..8e05ab7889 100644 --- a/docs/guides/agent/agent_introduction.md +++ b/docs/guides/agent/agent_introduction.md @@ -43,7 +43,7 @@ We also provide templates catered to different business scenarios. You can eithe ![agent_template](https://raw.githubusercontent.com/infiniflow/ragflow-docs/main/images/agent_template_list.jpg) -2. To create an agent from scratch, click **Create Agent**. Alternatively, to create an agent from one of our templates, click the desired card, such as **Deep Research**, name your agent in the pop-up dialogue, and click **OK** to confirm. +2. To create an agent from scratch, click **Create Agent**. Alternatively, to create an agent from one of our templates, click the desired card, such as **Deep research**, name your agent in the pop-up dialogue, and click **OK** to confirm. *You are now taken to the **no-code workflow editor** page.* diff --git a/docs/guides/chat/implement_deep_research.md b/docs/guides/chat/implement_deep_research.md index 2b07a4116e..21f58f1e9f 100644 --- a/docs/guides/chat/implement_deep_research.md +++ b/docs/guides/chat/implement_deep_research.md @@ -25,6 +25,6 @@ To activate this feature: ![chat_tavily](https://raw.githubusercontent.com/infiniflow/ragflow-docs/main/images/chat_tavily.jpg) -*The following is a screenshot of a conversation that integrates Deep Research:* +*The following is a screenshot of a conversation that integrates Deep research:* ![Image](https://github.com/user-attachments/assets/165b88ff-1f5d-4fb8-90e2-c836b25e32e9) \ No newline at end of file diff --git a/docs/guides/chat/start_chat.md b/docs/guides/chat/start_chat.md index e5066a8b29..501b9fabb7 100644 --- a/docs/guides/chat/start_chat.md +++ b/docs/guides/chat/start_chat.md @@ -40,7 +40,7 @@ You start an AI conversation by creating an assistant. - **Top N** determines the *maximum* number of chunks to feed to the LLM. In other words, even if more chunks are retrieved, only the top N chunks are provided as input. - **Multi-turn optimization** enhances user queries using existing context in a multi-round conversation. It is enabled by default. When enabled, it will consume additional LLM tokens and significantly increase the time to generate answers. - **Use knowledge graph** indicates whether to use knowledge graph(s) in the specified dataset(s) during retrieval for multi-hop question answering. When enabled, this would involve iterative searches across entity, relationship, and community report chunks, greatly increasing retrieval time. - - **Reasoning** indicates whether to generate answers through reasoning processes like Deepseek-R1/OpenAI o1. Once enabled, the chat model autonomously integrates Deep Research during question answering when encountering an unknown topic. This involves the chat model dynamically searching external knowledge and generating final answers through reasoning. + - **Reasoning** indicates whether to generate answers through reasoning processes like Deepseek-R1/OpenAI o1. Once enabled, the chat model autonomously integrates Deep research during question answering when encountering an unknown topic. This involves the chat model dynamically searching external knowledge and generating final answers through reasoning. - **Rerank model** sets the reranker model to use. It is left empty by default. - If **Rerank model** is left empty, the hybrid score system uses keyword similarity and vector similarity, and the default weight assigned to the vector similarity component is 1-0.7=0.3. - If **Rerank model** is selected, the hybrid score system uses keyword similarity and reranker score, and the default weight assigned to the reranker score is 1-0.7=0.3. diff --git a/docs/release_notes.md b/docs/release_notes.md index 973bb5bdb8..3d700d71d4 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -364,7 +364,7 @@ Released on August 8, 2025. ### New agent templates (both workflow and agentic) -- SQL Assistant Workflow: Empowers non-technical teams (e.g., operations, product) to independently query business data. +- Text-to-SQL data expert Workflow: Empowers non-technical teams (e.g., operations, product) to independently query business data. - Choose Your Knowledge Base Workflow: Lets users select a dataset to query during conversations. [#9325](https://github.com/infiniflow/ragflow/pull/9325) - Choose Your Knowledge Base Agent: Delivers higher-quality responses with extended reasoning time, suited for complex queries. [#9325](https://github.com/infiniflow/ragflow/pull/9325) @@ -397,14 +397,14 @@ From v0.20.0 onwards, Agents are no longer compatible with earlier versions, and ### New agent templates introduced -- Multi-Agent based Deep Research: Collaborative Agent teamwork led by a Lead Agent with multiple Subagents, distinct from traditional workflow orchestration. +- Multi-Agent based Deep research: Collaborative Agent teamwork led by a Lead Agent with multiple Subagents, distinct from traditional workflow orchestration. - An intelligent Q&A chatbot leveraging internal datasets, designed for customer service and training scenarios. - A resume analysis template used by the RAGFlow team to screen, analyze, and record candidate information. - A blog generation workflow that transforms raw ideas into SEO-friendly blog content. - An intelligent customer service workflow. - A user feedback analysis template that directs user feedback to appropriate teams through semantic analysis. -- Trip Planner: Uses web search and map MCP servers to assist with travel planning. -- Image Lingo: Translates content from uploaded photos. +- Trip planner: Uses web search and map MCP servers to assist with travel planning. +- Photo text translator: Translates content from uploaded photos. - An information search assistant that retrieves answers from both internal datasets and the web. ## v0.19.1 @@ -551,7 +551,7 @@ Released on March 3, 2025. ### New features -- AI chat: Implements Deep Research for agentic reasoning. To activate this, enable the **Reasoning** toggle under the **Prompt engine** tab of your chat assistant dialogue. +- AI chat: Implements Deep research for agentic reasoning. To activate this, enable the **Reasoning** toggle under the **Prompt engine** tab of your chat assistant dialogue. - AI chat: Leverages Tavily-based web search to enhance contexts in agentic reasoning. To activate this, enter the correct Tavily API key under the **Assistant settings** tab of your chat assistant dialogue. - AI chat: Supports starting a chat without specifying datasets. - AI chat: HTML files can also be previewed and referenced, in addition to PDF files. @@ -561,11 +561,11 @@ Released on March 3, 2025. - Models: Updates the supported model list for Tongyi-Qianwen (Qwen), adding DeepSeek-specific models; adds ModelScope as a model provider. - APIs: Document metadata can be updated through an API. -The following diagram illustrates the workflow of RAGFlow's Deep Research: +The following diagram illustrates the workflow of RAGFlow's Deep research: ![Image](https://github.com/user-attachments/assets/f65d4759-4f09-4d9d-9549-c0e1fe907525) -The following is a screenshot of a conversation that integrates Deep Research: +The following is a screenshot of a conversation that integrates Deep research: ![Image](https://github.com/user-attachments/assets/165b88ff-1f5d-4fb8-90e2-c836b25e32e9)