159 lines
8.4 KiB
Python
159 lines
8.4 KiB
Python
"""
|
||
工作流注册表 - 主代理与 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,
|
||
}
|
||
|
||
}
|
||
|
||
# 路由标志 -> 任务分类描述(供主代理阶段四 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())
|