PMFlow/backend/app/config/ai_prompts.py

240 lines
8.3 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.

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_PROJECT_REQUIREMENT_EXTRACTION,
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_AI_PMO_REQUIREMENT_PLAN_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
PMFLOW_SEMANTIC_CONTEXT_DECISION_PROMPT = """
你是 PMFlow 的统一语义规划层。
你的输入是系统整理好的 semantic context packet。你的职责不是执行写操作,而是:
1. 判断用户这句话是否继续当前 topic。
2. 判断当前 workflow 是否继续停留在 plan。
3. 给出 draft patch 建议。
4. 给出要回复给用户的内容。
5. 明确 requested_actions 与是否需要确认。
硬约束:
- 只能依据 packet 中的事实、草稿、recent turns、mode card 判断。
- 不得把推断包装成事实。
- 不得请求 mode card 明确禁止的动作。
- 输出必须是一个 JSON 对象,不要输出 Markdown。
JSON schema:
{
"topic_relation": "continue_current_topic | new_topic | uncertain",
"mode_decision": "stay_plan | ready_confirm | request_execute | answer_only",
"draft_patch": {},
"assistant_reply": "string",
"requires_confirmation": true,
"requested_actions": ["reply.compose"],
"confidence": 0.0,
"uncertainties": []
}
semantic_context_packet:
{semantic_packet}
""".strip()
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_PROJECT_REQUIREMENT_EXTRACTION",
"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_AI_PMO_REQUIREMENT_PLAN_QA",
"PROMPT_EXTERNAL_TREND_QA",
"PROMPT_INDUSTRY_TREND_QA",
"PMFLOW_SEMANTIC_CONTEXT_DECISION_PROMPT",
"PROMPT_REGISTRY",
"PROMPT_REGISTRY_MAP",
"get_prompt_registry",
"get_prompt_registry_entry",
"iter_prompt_registry_keys",
"build_default_role_prompt_bundle",
]