Files
crewai/agents_config.py
2026-03-13 14:20:58 +08:00

303 lines
8.1 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.

"""
Agent 配置文件
定义所有 Agent 的角色、目标、背景描述和任务模板
"""
from typing import Dict, Any
from crewai import Agent
# Qwen3.5-flash 模型配置(阿里百炼 - DashScope
QWEN_MODEL_CONFIG = {
"model": "qwen3.5-flash", # 阿里百炼 Qwen3.5-flash 对应 qwen-plus
"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"api_key_env": "DASHSCOPE_API_KEY",
}
def get_product_manager_agent() -> Agent:
"""创建产品经理 Agent"""
from crewai.llm import LLM
# 创建一个基础的 LLM 占位符(会在 configure_llm 中被替换)
llm_placeholder = LLM(
model="qwen-plus",
api_key="placeholder", # 会被 configure_llm 替换
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
return Agent(
role="ProductManager",
goal="将用户需求转化为清晰的产品需求文档 (PRD)",
backstory="""你是一位经验丰富的产品经理,擅长理解用户需求并转化为可执行的产品规格。
你的职责包括:
1. 分析用户需求的核心痛点和业务价值
2. 定义功能列表和优先级
3. 编写详细的功能描述和验收标准
4. 识别潜在的技术风险和业务风险""",
verbose=True,
allow_delegation=False,
llm=llm_placeholder,
)
def get_qa_engineer_agent() -> Agent:
"""创建 QA 工程师 Agent"""
from crewai.llm import LLM
# 创建一个基础的 LLM 占位符(会在 configure_llm 中被替换)
llm_placeholder = LLM(
model="qwen-plus",
api_key="placeholder", # 会被 configure_llm 替换
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
return Agent(
role="QAEngineer",
goal="根据产品需求制定测试计划和测试用例",
backstory="""你是一位资深 QA 工程师,专注于软件质量保障。
你的职责包括:
1. 分析 PRD 文档,识别测试范围
2. 设计测试策略(单元测试、集成测试、端到端测试)
3. 编写详细的测试用例,包括正常场景和异常场景
4. 定义验收标准和性能指标""",
verbose=True,
allow_delegation=False,
llm=llm_placeholder,
)
def get_software_developer_agent() -> Agent:
"""创建软件开发工程师 Agent"""
from crewai.llm import LLM
# 创建一个基础的 LLM 占位符(会在 configure_llm 中被替换)
llm_placeholder = LLM(
model="qwen-plus",
api_key="placeholder", # 会被 configure_llm 替换
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
return Agent(
role="SoftwareDeveloper",
goal="根据需求和测试用例设计技术方案并生成代码框架",
backstory="""你是一位全栈软件架构师,拥有深厚的技术功底。
你的职责包括:
1. 根据 PRD 和测试用例设计系统架构
2. 选择合适的技术栈和框架
3. 设计数据库 schema 和 API 接口
4. 生成核心模块的代码框架和关键算法实现
5. 编写技术文档和部署指南""",
verbose=True,
allow_delegation=False,
llm=llm_placeholder,
)
def get_coordinator_agent() -> Agent:
"""创建协调员 Agent - 负责最终审核和交付"""
from crewai.llm import LLM
# 创建一个基础的 LLM 占位符(会在 configure_llm 中被替换)
llm_placeholder = LLM(
model="qwen-plus",
api_key="placeholder", # 会被 configure_llm 替换
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
return Agent(
role="Coordinator",
goal="审核所有产出物,确保质量并生成最终交付报告",
backstory="""你是一位项目协调员,负责把控整体交付质量。
你的职责包括:
1. 审核 PRD、测试计划和技术方案的完整性
2. 识别各文档之间的一致性和潜在冲突
3. 汇总所有产出物,生成结构化交付报告
4. 评估项目风险和后续建议
5. 在需要时请求人工确认(通过 API 控制)""",
verbose=True,
allow_delegation=False,
llm=llm_placeholder,
)
# 任务模板配置
TASK_TEMPLATES = {
"product_manager": """
## 任务:产品需求分析
### 用户需求输入:
{user_requirement}
### 输出要求:
请按照以下结构输出产品需求文档 (PRD)
1. **项目概述**
- 项目背景
- 目标用户群体
- 核心价值主张
2. **功能需求列表**
- 按优先级排序P0/P1/P2
- 每个功能的详细描述
- 用户故事格式(作为...我希望...以便...
3. **非功能需求**
- 性能要求
- 安全性要求
- 可用性要求
4. **验收标准**
- 每个功能的验收条件
- 关键业务指标 (KPI)
5. **风险评估**
- 技术风险
- 业务风险
- 缓解措施
请使用 Markdown 格式输出,确保结构清晰、内容完整.
""",
"qa_engineer": """
## 任务:制定测试计划
### 输入信息:
- 产品需求文档 (来自 ProductManager):
{prd_content}
### 输出要求:
请按照以下结构输出测试计划文档:
1. **测试策略**
- 测试范围界定
- 测试类型(单元/集成/E2E/性能/安全)
- 测试环境规划
2. **测试用例设计**
- 针对每个 P0/P1 功能设计测试用例
- 包含:测试目的、前置条件、测试步骤、预期结果
- 覆盖正常流程和异常流程
3. **自动化测试建议**
- 推荐使用的测试框架
- 需要自动化的测试场景列表
- CI/CD 集成建议
4. **性能测试方案**
- 压测场景设计
- 性能基准指标
- 监控指标
5. **验收检查清单**
- 上线前必须通过的检查项
请使用 Markdown 格式,测试用例使用表格形式展示。
""",
"software_developer": """
## 任务:技术方案设计与代码实现
### 输入信息:
- 产品需求文档:
{prd_content}
- 测试计划:
{qa_plan}
### 输出要求:
请按照以下结构输出技术方案文档:
1. **系统架构设计**
- 架构图(使用文字描述或 ASCII art
- 技术选型及理由
- 系统组件划分
2. **API 接口设计**
- RESTful API 列表(方法、路径、请求/响应格式)
- 接口鉴权方案
- 错误码规范
3. **数据模型设计**
- 数据库表结构(表名、字段、类型、索引)
- ER 关系描述
- 数据迁移策略
4. **核心代码实现**
- 关键模块的代码框架Python/TypeScript 等)
- 核心算法伪代码或实现
- 重要设计模式的应用
5. **部署方案**
- 基础设施需求
- Docker 容器化配置示例
- CI/CD 流水线配置建议
6. **开发注意事项**
- 代码规范
- 日志和监控
- 安全最佳实践
请确保代码片段语法正确,注释清晰。
""",
"coordinator": """
## 任务:最终审核与交付报告
### 输入信息:
- 产品需求文档:
{prd_content}
- 测试计划:
{qa_plan}
- 技术方案:
{dev_plan}
### 输出要求:
请按照以下结构输出最终交付报告:
1. **交付摘要**
- 项目基本信息
- 交付物清单
- 整体质量评估
2. **一致性检查**
- PRD 与测试计划的匹配度
- 技术方案对需求的覆盖度
- 发现的遗漏或不一致点
3. **质量评估**
- 文档完整性评分1-10 分)
- 技术可行性评估
- 测试覆盖度评估
4. **风险提示**
- 高风险项列表
- 中低风险项列表
- 风险缓解建议
5. **后续行动建议**
- 短期行动计划1-2 周)
- 中期目标1-3 月)
- 长期演进方向
6. **交付确认**
- 是否满足交付标准
- 需要人工复核的点
- 最终结论(通过/有条件通过/不通过)
请使用专业、客观的语气,给出具体、可执行的建议。
""",
}
def create_agents() -> Dict[str, Agent]:
"""创建所有 Agent 实例"""
return {
"product_manager": get_product_manager_agent(),
"qa_engineer": get_qa_engineer_agent(),
"software_developer": get_software_developer_agent(),
"coordinator": get_coordinator_agent(),
}