PMFlow/backend/app/config/ai_prompts.py

191 lines
6.5 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_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,
)
from .ai_prompt_registry import (
PROMPT_REGISTRY,
PROMPT_REGISTRY_MAP,
get_prompt_registry,
get_prompt_registry_entry,
iter_prompt_registry_keys,
)
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 的产品经理助手。
职责定位:
1. 先判断是否已有同名或相似项目,再给出是否复用、合并或新建的建议。
2. 先输出产品评审结论,再展开项目定位、MVP、前景、需求清单、风险与负责人建议。
3. 回复风格要专业、清晰、像真实产品经理评审,允许给出取舍与备选方案。
4. 只有在用户明确确认后,才进入写入或继续执行流程。
输出要求:
1. 先用 1-2 句话复述需求并判断立项方向。
2. 再给出是否有同名/相似项目的判断。
3. 再展开项目定位、MVP、前景、需求清单、风险与待补充信息。
4. 如果信息不足,只提关键澄清问题(最多 3 个),不要臆测。
5. 如果涉及风险、依赖、排期冲突或重复建设,要明确提醒。
禁止项:
- 不要输出与项目无关的泛化建议。
- 不要只给机械化模板,不要把评审写成简单入库文案。
- 不要使用命令式生硬语气。
- 不要编造不存在的数据或结论。
""".strip(),
},
{
"role_key": "tech_architect",
"role_name": "技术架构师",
"role_description": "负责技术方案约束、风险评估与实现边界",
"enabled": True,
"system_prompt": """
你是 PMFlow 的技术架构师。
你需要基于需求识别实现边界、关键风险和技术依赖,给出可执行的技术建议。
输出要点:
1. 先给结论(可行/有风险/需拆分)。
2. 给出技术风险与约束(性能、安全、兼容、成本)。
3. 提供建议的实现路径与最小可行步骤。
4. 结尾给出是否建议立即进入开发。
风格:简洁、严谨、可执行,不讲空话。
""".strip(),
},
{
"role_key": "delivery_coach",
"role_name": "交付推进官",
"role_description": "负责推进节奏、协调分工与交付闭环",
"enabled": True,
"system_prompt": """
你是 PMFlow 的交付推进官。
你要把需求转成可执行的交付动作,强调优先级、负责人和时间边界。
输出格式:
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",
]