wx-agent/workflow_registry.py

169 lines
8.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
工作流注册表 - 主代理与 app 共用
主代理阶段四根据此配置路由到所有注册的子 agent
app 据此执行对应工作流。
添加新工作流时,在此配置 WORKFLOW_CONFIG 与 ROUTE_DESCRIPTIONS。
"""
# ============================================================================
# =============== 工作流配置区域 - 添加新工作流时只需修改这里 ===============
# ============================================================================
# 格式:
# "route_flag": {
# "module": "workflows.workflow_xxx",
# "function": "run_xxx_workflow",
# "is_async": True/False,
# }
# ============================================================================
WORKFLOW_CONFIG = {
"fault_diagnosis": {
"module": "workflows.workflow_fault_diagnosis",
"function": "run_fault_diagnosis_workflow",
"is_async": True,
},
"qa": {
"module": "workflows.workflow_qa",
"function": "run_qa_workflow",
"is_async": True,
},
"问题排查": {
"module": "workflows.workflow_fault_diagnosis",
"function": "run_fault_diagnosis_workflow",
"is_async": True,
},
"spare_parts_statistics": {
"module": "workflows.workflow_spare_parts_statistics",
"function": "run_spare_parts_statistics_workflow",
"is_async": True,
},
"rules": {
"module": "workflows.workflow_qa",
"function": "run_qa_workflow",
"is_async": True,
},
"other": {
"module": "workflows.workflow_fault_diagnosis",
"function": "run_fault_diagnosis_workflow",
"is_async": True,
#
# "module": "workflows.workflow_other",
# "function": "run_other_workflow",
# "is_async": True,
},
"report":{
# "module": "workflows.workflow_qa_report",
# "function": "run_qa_report_agent",
# "is_async": True,
"module": "workflows.workflow_fault_diagnosis",
"function": "run_fault_diagnosis_workflow",
"is_async": True,
},
"百科问答":{
"module": "workflows.workflow_baike",
"function": "run_baike_workflow",
"is_async": True,
},
"操作使用":{
"module": "workflows.workflow_operate",
"function": "run_operate_workflow",
"is_async": True,
},
"统计":{
"module": "workflows.workflow_statistics",
"function": "run_statistics_workflow",
"is_async": True,
},
"wiki_admin": {
"module": "workflows.workflow_wiki_admin",
"function": "run_wiki_admin_workflow",
"is_async": True,
},
"Wiki\u77e5\u8bc6\u5e93\u7ba1\u7406": {
"module": "workflows.workflow_wiki_admin",
"function": "run_wiki_admin_workflow",
"is_async": True,
}
}
# 路由标志 -> 任务分类描述(供主代理阶段四 LLM 使用)
ROUTE_DESCRIPTIONS = {
"fault_diagnosis": """
- 特征:用户描述**当前或近期发生的设备异常、报警、性能下降等具体故障现象**,需要分析原因或定位问题。
- 关键词:报警、异常、异响、冒烟、过热、无法启动、突然停机、振动大、压力低、温度高、故障代码、不工作
- 示例:
• 主机滑油压力突然降到0.2MPa并报警
• 柴油机启动后冒黑烟且转速不稳
• 舵机发出异常噪音,疑似齿轮损坏
- 注意:若历史记录中包含“请补充”、“【需要更多信息】”,通常属于此类,因已聚焦具体故障场景。
当用户问题中只有舷号、设备或故障现象时属于此类舷号一般为连续的阿拉伯数字如“101”,"111","122","163""16","17","554","602","545","985","31","3261","799","905","781"等,或者数字后加舰比如“101舰","199舰","18舰"等。
""",
"qa": """
- 特征:询问定义、原理、结构、功能、分类、标准配置、常见类型、安全规范等**一般性知识**;也包括对专业术语、现象、部件作用的解释。
**即使问题表述模糊、不完整、缺少上下文,只要涉及船舶、机械、电气、动力等技术内容,均优先归为此类。**
- 关键词:什么是、如何工作、为什么、请问、介绍、解释、有哪些、常见、典型、一般、作用、组成、是不是、叫什么
- 示例:
• 船舶主发动机有哪些常见故障类型?
• 涡轮增压器的工作原理是什么?
• 主机由哪些主要部件组成?
• 什么是MAN B&W柴油机
- 注意:
• **本类作为技术相关问题的默认兜底类别**——凡涉及设备、系统、部件、工况、参数等技术语境的问题,若无法明确归入 fault_diagnosis / repair / spare_parts_statistics / rules则优先视为 qa。
""",
"repair": """
- 特征:用户明确请求**维修方法、操作步骤、检修流程、更换方案或现场处理建议**,通常在已知故障或需预防性维护时提出。
- 关键词:怎么修、如何维修、维修步骤、检修方法、更换、拆卸、安装、处理、修复、维护、保养、调整
- 示例:
• 主机喷油器漏油,怎么更换?
• 给出主机缸套磨损的维修方案
• 如何拆卸增压器进行检修?
""",
"spare_parts_statistics": """
- 特征:用户需要对**备品备件的数量、使用记录、库存、消耗趋势、预测需求或成本分析**进行查询或统计。
- 关键词:备件、备品、库存、数量、统计、预测、分析、消耗、需求、清单、台账、寿命、更换周期、用了多少、还剩多少
- 示例:
• 统计过去一年主机喷油嘴的使用数量
• 预测下季度所需空冷器备件数量
• 主机活塞环的平均更换周期是多少?
- 注意若仅问“某个部件是不是备件”或“这个备件叫什么名字”属于知识问答qa而非本类。
""",
"rules": """
- 特征:用户询问与船舶设备维修、检验、安全、环保、保密等相关的**国家法规、军用标准如GJB、行业规范、船级社要求或管理制度**。
- 关键词法规、标准、规范、规定、合规、条例、依据、要求、准则、制度、认证、资质、船级社、CCS、IMO、SOLAS、MARPOL、资格
- 示例:
• 船舶主机修理需遵循哪些GJB标准
• IMO对主机排放有哪些强制要求
• 舰船维修单位需要哪些资质?
• 保密资格申请流程是什么?
- 注意:若问题提到“标准里有没有…”但未指明具体法规/标准名称,且无“法规”“标准”等关键词,可先归为 qa一旦明确提及“法规”“标准”“规范”“SOLAS”等则归为 rules。
""",
"other": """
- 特征:**完全不涉及新的技术问题、故障诊断、维修请求、备件统计、法规查询或报告生成**,而是针对**已有对话内容、方案、步骤或文本的反馈、修正、补充、顺序调整或格式优化**。典型场景包括:
• 指出之前提供的操作步骤有误(如“异物清理步骤有误”)
• 要求调整操作顺序(如“这一步应当先怎样,然后再怎么操作,最后……”)
• 对生成内容提出修改意见(如“步骤有误/有补充”“请重写第三点”)
• 请求优化语言、格式或结构(如“请用更简洁的方式表达”)
• 闲聊、非技术性确认或与当前技术任务无关的交互
- 注意:
• **只要用户意图是修正、补充或调整已有内容,而非提出新问题,即使涉及技术术语,也应归为 other**。
• 不要将此类反馈误判为 repair 或 qa——它们不是在问“该怎么修”或“原理是什么”而是在说“你刚才说的不对/不全”。
• 此类通常出现在多轮对话中,是对前文输出的回应。
""",
"report": """
- 特征:用户明确要求**生成、整理、导出或汇总**某种形式的文档、报表、清单或总结材料。通常涉及将分散的故障记录、维修历史、备件数据或问答内容整合成结构化文本(如日报、周报、故障分析报告、维修总结、备件消耗表等)。
- 关键词:生成报告、写总结、导出表格、整理清单、汇总数据、形成文档、日报、周报、月报、分析报告、维修记录单、台账报表
- 示例:
• 请根据本周的故障记录生成一份主机系统运行分析报告
• 总结这次对话
• 导出过去一年的备件消耗统计报告
• 帮我写一份关于此次主机停机事故的详细处理总结
"""
}
VALID_ROUTE_FLAGS = tuple(WORKFLOW_CONFIG.keys())