第二版
This commit is contained in:
115
agents/pm_agent.py
Normal file
115
agents/pm_agent.py
Normal file
@@ -0,0 +1,115 @@
|
||||
"""
|
||||
PM Agent - 产品经理智能体
|
||||
负责将用户输入的非结构化需求转化为结构化软件需求规格说明书 (SRS)
|
||||
"""
|
||||
|
||||
from typing import Dict, Any
|
||||
from crewai import Agent, Task, Crew
|
||||
from models.qwen_config import get_llm
|
||||
|
||||
|
||||
def create_pm_agent() -> Agent:
|
||||
"""
|
||||
创建产品经理智能体
|
||||
|
||||
Returns:
|
||||
Agent: PM 智能体实例
|
||||
"""
|
||||
return Agent(
|
||||
role="资深产品需求分析师",
|
||||
goal="将模糊的用户需求转化为清晰、完整、可执行的软件需求规格说明书 (SRS)",
|
||||
backstory="""你是一位拥有 10 年经验的资深产品需求分析师,擅长:
|
||||
1. 快速理解用户业务场景和核心痛点
|
||||
2. 识别功能性需求和非功能性需求
|
||||
3. 定义清晰的验收标准 (Acceptance Criteria)
|
||||
4. 遵循博世研发规范,确保需求的可追溯性和可验证性
|
||||
|
||||
你的输出将作为测试和开发团队的输入,务必保证准确性和完整性。""",
|
||||
verbose=True,
|
||||
allow_delegation=False,
|
||||
llm=get_llm()
|
||||
)
|
||||
|
||||
|
||||
def create_pm_task(requirement: str) -> Task:
|
||||
"""
|
||||
创建需求分析任务
|
||||
|
||||
Args:
|
||||
requirement: 用户需求描述
|
||||
|
||||
Returns:
|
||||
Task: PM 任务实例
|
||||
"""
|
||||
return Task(
|
||||
description=f"""
|
||||
请分析以下用户需求,生成结构化的软件需求规格说明书 (SRS):
|
||||
|
||||
【用户需求】
|
||||
{requirement}
|
||||
|
||||
【输出要求】
|
||||
请按照以下结构输出 SRS 文档:
|
||||
|
||||
## 1. 项目概述
|
||||
- 1.1 项目背景
|
||||
- 1.2 项目目标
|
||||
- 1.3 适用范围
|
||||
|
||||
## 2. 功能性需求
|
||||
- 2.1 功能列表(使用 MoSCoW 优先级标注)
|
||||
- 2.2 功能详细描述(包含输入、处理、输出)
|
||||
- 2.3 业务流程图描述
|
||||
|
||||
## 3. 非功能性需求
|
||||
- 3.1 性能要求(响应时间、并发量等)
|
||||
- 3.2 安全要求(认证、授权、数据保护)
|
||||
- 3.3 可用性要求(易用性、可访问性)
|
||||
- 3.4 可维护性要求(日志、监控、可扩展性)
|
||||
|
||||
## 4. 验收标准 (Acceptance Criteria)
|
||||
- 4.1 功能验收标准(每个功能的通过标准)
|
||||
- 4.2 性能验收标准(量化指标)
|
||||
- 4.3 用户体验验收标准
|
||||
|
||||
## 5. 约束条件
|
||||
- 5.1 技术约束
|
||||
- 5.2 业务约束
|
||||
- 5.3 合规约束(博世研发规范)
|
||||
|
||||
【注意事项】
|
||||
- 使用清晰、无歧义的语言
|
||||
- 需求必须是可测试、可验证的
|
||||
- 优先保证核心功能的完整性
|
||||
""",
|
||||
expected_output="完整的软件需求规格说明书 (SRS),包含功能性需求、非功能性需求和验收标准",
|
||||
agent=create_pm_agent()
|
||||
)
|
||||
|
||||
|
||||
def execute_pm_stage(requirement: str) -> Dict[str, Any]:
|
||||
"""
|
||||
执行 PM 阶段任务
|
||||
|
||||
Args:
|
||||
requirement: 用户需求描述
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: 包含 SRS 文档和执行结果
|
||||
"""
|
||||
pm_agent = create_pm_agent()
|
||||
pm_task = create_pm_task(requirement)
|
||||
|
||||
crew = Crew(
|
||||
agents=[pm_agent],
|
||||
tasks=[pm_task],
|
||||
verbose=True
|
||||
)
|
||||
|
||||
result = crew.kickoff()
|
||||
|
||||
return {
|
||||
"stage": "需求分析",
|
||||
"srs_document": result.raw,
|
||||
"status": "completed"
|
||||
}
|
||||
Reference in New Issue
Block a user