204 lines
7.0 KiB
Python
204 lines
7.0 KiB
Python
from __future__ import annotations
|
||
|
||
"""
|
||
AI Prompt 集中管理
|
||
|
||
所有 AI 相关 prompt 模板放在此处,避免在 services 中硬编码。
|
||
使用 .format() 或 f-string 时需保证占位符与调用处一致。
|
||
"""
|
||
|
||
from .ai_prompts_catalog import (
|
||
PROMPT_IMPACT_ANALYSIS,
|
||
PROMPT_STRATEGIC_ANALYSIS_HEADER,
|
||
PROMPT_RAG_CONTEXT_HEADER,
|
||
PROMPT_RAG_CONTEXT_ITEM,
|
||
PROMPT_CODE_AUDIT,
|
||
PROMPT_CONTEXT_INSIGHTS,
|
||
PROMPT_FEISHU_HUMANIZED_REPLY,
|
||
PROMPT_FEISHU_PROJECT_SIGNAL_CLASSIFICATION,
|
||
PROMPT_FEISHU_LEVEL_CLASSIFICATION,
|
||
PROMPT_FEISHU_SIGNAL_EXTRACTION,
|
||
PROMPT_FEISHU_PROJECT_PREFILL,
|
||
PROMPT_FEISHU_TASK_ORCHESTRATION,
|
||
PROMPT_SIGNAL_SOURCE_ONBOARDING,
|
||
PROMPT_AI_WORKER_SIGNAL_SOURCE_EXECUTION,
|
||
PROMPT_AI_PMO_INTENT_CLASSIFICATION,
|
||
PROMPT_AI_PMO_SIGNAL_BATCH_ANALYSIS,
|
||
PROMPT_DRAFT_GENERATOR,
|
||
PROMPT_RAG_INTENT_CLASSIFICATION,
|
||
PROMPT_RAG_ANSWER,
|
||
PROMPT_DECISION_QA,
|
||
PROMPT_RAG_DB_PROJECT_QA,
|
||
PROMPT_GENERATE_CHARTER,
|
||
PROMPT_DECOMPOSE_TASKS,
|
||
PROMPT_RECOMMEND_ASSIGNEES,
|
||
PROMPT_ALIGNMENT_SCORE,
|
||
PROMPT_COGNITIVE_CONFLICTS,
|
||
PROMPT_EVALUATE_MODEL_REQUIREMENT,
|
||
PROMPT_ANALYZE_CAPABILITY_GAP,
|
||
PROMPT_ANALYZE_COST_ROI,
|
||
PROMPT_ANALYZE_COST_OPTIMIZATION,
|
||
PROMPT_ASSESS_MODEL_UPDATE_IMPACT,
|
||
PROMPT_EXPERIMENT_SYNC_DECISION,
|
||
PROMPT_SKILL_SCORE_UPDATE,
|
||
PROMPT_WORKLOAD_OPTIMIZATION,
|
||
PROMPT_ANALYZE_FOOD_CALORIES,
|
||
PROMPT_SIGNAL_PLANNER,
|
||
PROMPT_FEISHU_DIRECT_QA,
|
||
PROMPT_FEISHU_MIXED_QA,
|
||
PROMPT_PROJECT_STATUS_QA,
|
||
PROMPT_MEMBER_WORKLOAD_QA,
|
||
PROMPT_AI_PMO_QA,
|
||
PROMPT_EXTERNAL_TREND_QA,
|
||
PROMPT_INDUSTRY_TREND_QA,
|
||
)
|
||
from .ai_prompt_registry import (
|
||
PROMPT_REGISTRY,
|
||
PROMPT_REGISTRY_MAP,
|
||
get_prompt_registry,
|
||
get_prompt_registry_entry,
|
||
iter_prompt_registry_keys,
|
||
)
|
||
|
||
|
||
# Deprecated compatibility aliases kept outside the registry surface.
|
||
PROMPT_FEISHU_REQUIREMENT_ANALYSIS = PROMPT_FEISHU_PROJECT_SIGNAL_CLASSIFICATION
|
||
PROMPT_TASK_BREAKDOWN = PROMPT_DECOMPOSE_TASKS
|
||
|
||
|
||
def build_default_role_prompt_bundle() -> dict:
|
||
"""返回默认角色 Prompt 配置(每次调用返回新对象)。"""
|
||
return {
|
||
"version": 1,
|
||
"active_role_key": "pm_dispatcher",
|
||
"roles": [
|
||
{
|
||
"role_key": "pm_dispatcher",
|
||
"role_name": "产品经理(立项评审)",
|
||
"role_description": "负责查重、评审、起草立项建议并给出确认前的产品方案",
|
||
"enabled": True,
|
||
"system_prompt": """
|
||
你是 PMFlow 的 PMO 协作中枢中的立项评审角色(pm_dispatcher)。
|
||
|
||
职责边界(只做评审与起草,不直接执行写操作):
|
||
1. 聚焦查重、复用/合并、立项评审,优先判断是否已有同名或相似项目。
|
||
2. 输出面向业务决策的结论:是否新建、复用、合并或暂缓。
|
||
3. 基于项目上下文产出可讨论草案,覆盖项目定位、MVP、需求清单、风险与负责人建议。
|
||
4. 若信息不足,提出关键澄清问题(最多 3 个),不凭空补齐。
|
||
|
||
输出框架:
|
||
1. 先结论:1-2 句复述需求并给出立项方向。
|
||
2. 再查重:明确同名或相似项目判断,给出差异点与复用价值。
|
||
3. 再方案:给出 MVP、关键需求、主要风险、负责人建议、后续动作。
|
||
4. 全程专业、克制、结论先行,避免空泛口号。
|
||
|
||
禁止项:
|
||
- 不要编造不存在的数据、进展或执行结果。
|
||
- 不要把评审写成机械化模板。
|
||
- 不要使用命令式、生硬语气。
|
||
- 不要输出与 PMFlow 业务无关的泛化建议。
|
||
""".strip(),
|
||
},
|
||
{
|
||
"role_key": "tech_architect",
|
||
"role_name": "技术架构师",
|
||
"role_description": "负责技术方案约束、风险评估与实现边界",
|
||
"enabled": True,
|
||
"system_prompt": """
|
||
你是 PMFlow 的技术架构角色(tech_architect)。
|
||
|
||
职责边界:
|
||
1. 专注可行性、依赖、风险边界,不代替产品评审或交付推进。
|
||
2. 输出技术结论与约束,帮助团队判断是否能安全落地。
|
||
|
||
输出要点:
|
||
1. 先给结论:可行 / 有风险 / 需拆分。
|
||
2. 再给依据:关键依赖、性能风险、安全风险、兼容风险、成本约束。
|
||
3. 再给路径:最小可行步骤、建议拆分方式、必要前置条件。
|
||
4. 结尾明确:是否建议立即进入开发。
|
||
|
||
风格要求:
|
||
- 简洁、严谨、可执行。
|
||
- 不讲空话,不编造验证结果。
|
||
""".strip(),
|
||
},
|
||
{
|
||
"role_key": "delivery_coach",
|
||
"role_name": "交付推进官",
|
||
"role_description": "负责推进节奏、协调分工与交付闭环",
|
||
"enabled": True,
|
||
"system_prompt": """
|
||
你是 PMFlow 的交付推进角色(delivery_coach)。
|
||
|
||
职责边界:
|
||
1. 聚焦节奏、排期、负责人、推进动作。
|
||
2. 不代替技术评审,不输出与推进无关的实现细节。
|
||
|
||
输出格式:
|
||
1. 当前状态判断(一句话,先结论)。
|
||
2. 建议动作(不超过 3 条,动词开头,强调优先级与负责人)。
|
||
3. 风险提示(如有,突出阻塞与依赖)。
|
||
|
||
风格要求:
|
||
- 明确、友好、推动协作。
|
||
- 结论先行,动作可执行,避免空泛管理话术。
|
||
""".strip(),
|
||
},
|
||
],
|
||
}
|
||
|
||
|
||
__all__ = [
|
||
"PROMPT_IMPACT_ANALYSIS",
|
||
"PROMPT_TASK_BREAKDOWN",
|
||
"PROMPT_STRATEGIC_ANALYSIS_HEADER",
|
||
"PROMPT_RAG_CONTEXT_HEADER",
|
||
"PROMPT_RAG_CONTEXT_ITEM",
|
||
"PROMPT_CODE_AUDIT",
|
||
"PROMPT_CONTEXT_INSIGHTS",
|
||
"PROMPT_FEISHU_REQUIREMENT_ANALYSIS",
|
||
"PROMPT_FEISHU_HUMANIZED_REPLY",
|
||
"PROMPT_FEISHU_PROJECT_SIGNAL_CLASSIFICATION",
|
||
"PROMPT_FEISHU_LEVEL_CLASSIFICATION",
|
||
"PROMPT_FEISHU_SIGNAL_EXTRACTION",
|
||
"PROMPT_FEISHU_PROJECT_PREFILL",
|
||
"PROMPT_FEISHU_TASK_ORCHESTRATION",
|
||
"PROMPT_SIGNAL_SOURCE_ONBOARDING",
|
||
"PROMPT_AI_WORKER_SIGNAL_SOURCE_EXECUTION",
|
||
"PROMPT_AI_PMO_INTENT_CLASSIFICATION",
|
||
"PROMPT_AI_PMO_SIGNAL_BATCH_ANALYSIS",
|
||
"PROMPT_DRAFT_GENERATOR",
|
||
"PROMPT_RAG_INTENT_CLASSIFICATION",
|
||
"PROMPT_RAG_ANSWER",
|
||
"PROMPT_DECISION_QA",
|
||
"PROMPT_RAG_DB_PROJECT_QA",
|
||
"PROMPT_GENERATE_CHARTER",
|
||
"PROMPT_DECOMPOSE_TASKS",
|
||
"PROMPT_RECOMMEND_ASSIGNEES",
|
||
"PROMPT_ALIGNMENT_SCORE",
|
||
"PROMPT_COGNITIVE_CONFLICTS",
|
||
"PROMPT_EVALUATE_MODEL_REQUIREMENT",
|
||
"PROMPT_ANALYZE_CAPABILITY_GAP",
|
||
"PROMPT_ANALYZE_COST_ROI",
|
||
"PROMPT_ANALYZE_COST_OPTIMIZATION",
|
||
"PROMPT_ASSESS_MODEL_UPDATE_IMPACT",
|
||
"PROMPT_EXPERIMENT_SYNC_DECISION",
|
||
"PROMPT_SKILL_SCORE_UPDATE",
|
||
"PROMPT_WORKLOAD_OPTIMIZATION",
|
||
"PROMPT_ANALYZE_FOOD_CALORIES",
|
||
"PROMPT_SIGNAL_PLANNER",
|
||
"PROMPT_FEISHU_DIRECT_QA",
|
||
"PROMPT_FEISHU_MIXED_QA",
|
||
"PROMPT_PROJECT_STATUS_QA",
|
||
"PROMPT_MEMBER_WORKLOAD_QA",
|
||
"PROMPT_AI_PMO_QA",
|
||
"PROMPT_EXTERNAL_TREND_QA",
|
||
"PROMPT_INDUSTRY_TREND_QA",
|
||
"PROMPT_REGISTRY",
|
||
"PROMPT_REGISTRY_MAP",
|
||
"get_prompt_registry",
|
||
"get_prompt_registry_entry",
|
||
"iter_prompt_registry_keys",
|
||
"build_default_role_prompt_bundle",
|
||
]
|