Files
autogen/usage_examples.py

265 lines
8.6 KiB
Python
Raw Permalink Normal View History

2026-03-12 13:27:03 +08:00
"""
使用示例 - 展示如何使用 AutoGen SDLC 系统
包含多个实际场景的演示
"""
import os
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
from autogen_sdls_system import AutoGenSDLCSystem
def example_1_basic_workflow():
2026-03-12 17:58:15 +08:00
"""示例 1: 基本工作流 - 自动驾驶车辆检测 API"""
2026-03-12 13:27:03 +08:00
print("\n" + "=" * 70)
print("示例 1: 基本 SDLC 工作流")
print("=" * 70)
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
print("❌ 请设置 DASHSCOPE_API_KEY 环境变量")
return
system = AutoGenSDLCSystem(api_key=api_key)
requirement = """
2026-03-12 17:58:15 +08:00
我需要一个自动驾驶目标检测与跟踪 API要求
1. 接收摄像头图像和激光雷达点云数据
2. 实现车辆行人骑行者的实时检测
3. 输出目标的 3D 边界框位置尺寸朝向
4. 支持多目标跟踪MOT输出轨迹信息
5. 符合车规级功能安全标准ISO 26262 ASIL-B
6. 响应时间 < 50ms检测精度 mAP > 85%
7. 包含异常处理传感器失效恶劣天气等
2026-03-12 13:27:03 +08:00
"""
print(f"\n📋 需求:{requirement}")
2026-03-12 17:58:15 +08:00
result = system.run_workflow(requirement, max_round=20)
2026-03-12 13:27:03 +08:00
if result["success"]:
print("\n✅ 工作流完成!")
print(f"📄 摘要:{result['summary'][:300]}...")
else:
print(f"\n❌ 工作流失败:{result.get('error')}")
def example_2_custom_agents():
"""示例 2: 自定义 Agent 配置"""
print("\n" + "=" * 70)
print("示例 2: 自定义 Agent 配置")
print("=" * 70)
from config.llm_config import get_llm_config
from agents import create_pm_agent, create_qa_agent
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
print("❌ 请设置 DASHSCOPE_API_KEY 环境变量")
return
# 使用不同的模型配置
llm_config = get_llm_config(
model="qwen3.5-flash",
api_key=api_key,
temperature=0.5, # 降低温度使输出更稳定
max_tokens=3000
)
# 创建自定义 Agent
pm_agent = create_pm_agent(llm_config=llm_config)
qa_agent = create_qa_agent(llm_config=llm_config)
print("✅ 已创建自定义配置的 Agent")
print(f" PM Agent: {pm_agent.name}")
print(f" QA Agent: {qa_agent.name}")
def example_3_direct_agent_call():
"""示例 3: 直接调用单个 Agent"""
print("\n" + "=" * 70)
print("示例 3: 直接调用 PM Agent 生成 SRS")
print("=" * 70)
from agents import ProductManagerAgent
from config.llm_config import get_agent_llm_config
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
print("❌ 请设置 DASHSCOPE_API_KEY 环境变量")
return
# 创建 PM Agent
llm_config = get_agent_llm_config("PM_Agent", api_key=api_key)
pm_agent = ProductManagerAgent(llm_config=llm_config)
# 简单需求
2026-03-12 17:58:15 +08:00
requirement = "开发一个车载摄像头图像识别模块,支持车道线检测和交通标志识别"
2026-03-12 13:27:03 +08:00
print(f"\n📋 需求:{requirement}")
print("\n🤖 PM Agent 正在生成 SRS...\n")
try:
srs = pm_agent.generate_srs(requirement)
print("\n✅ SRS 生成成功!")
print(f"📄 前 500 字符预览:\n{srs[:500]}...")
except Exception as e:
print(f"\n❌ 生成失败:{e}")
def example_4_test_generation():
"""示例 4: QA Agent 生成测试用例"""
print("\n" + "=" * 70)
print("示例 4: QA Agent 生成测试用例")
print("=" * 70)
from agents import QAAgent
from config.llm_config import get_agent_llm_config
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
print("❌ 请设置 DASHSCOPE_API_KEY 环境变量")
return
# 创建 QA Agent
llm_config = get_agent_llm_config("QA_Agent", api_key=api_key)
qa_agent = QAAgent(llm_config=llm_config)
# 简单的 SRS 片段
srs_sample = """
功能性需求
2026-03-12 17:58:15 +08:00
FR-001: 系统应能接收摄像头 RGB 图像分辨率 1920x1080
FR-002: 系统应能检测车辆行人骑行者三类目标
FR-003: 系统应能输出 3D 边界框x,y,z,long,width,height,yaw
FR-004: 系统应能处理夜间和雨雪天气场景
2026-03-12 13:27:03 +08:00
非功能性需求
2026-03-12 17:58:15 +08:00
NFR-001: 检测延迟 < 50ms
NFR-002: 检测精度 mAP@0.5 > 85%
NFR-003: 符合 ISO 26262 ASIL-B 功能安全标准
NFR-004: 支持 -40°C~85°C 工作温度范围
2026-03-12 13:27:03 +08:00
"""
print("\n📋 SRS 样本:")
print(srs_sample)
print("\n🤖 QA Agent 正在生成测试用例...\n")
try:
test_cases = qa_agent.generate_test_cases(srs_sample)
print("\n✅ 测试用例生成成功!")
print(f"📄 预览:\n{test_cases[:500]}...")
except Exception as e:
print(f"\n❌ 生成失败:{e}")
def example_5_code_generation():
"""示例 5: Dev Agent 生成代码"""
print("\n" + "=" * 70)
print("示例 5: Dev Agent 生成代码")
print("=" * 70)
from agents import DevAgent
from config.llm_config import get_agent_llm_config
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
print("❌ 请设置 DASHSCOPE_API_KEY 环境变量")
return
# 创建 Dev Agent
llm_config = get_agent_llm_config("Dev_Agent", api_key=api_key)
dev_agent = DevAgent(llm_config=llm_config)
# SRS 和测试样本
srs_sample = """
2026-03-12 17:58:15 +08:00
FR-001: 实现点云预处理函数去噪下采样坐标变换
FR-002: 实现 3D 目标检测函数基于 PointPillars VoxelNet
FR-003: 输入验证点云格式 Nx5包含 x,y,z,intensity,timestamp
FR-004: 输出限制边界框参数归一化置信度 0-1
2026-03-12 13:27:03 +08:00
"""
test_sample = """
2026-03-12 17:58:15 +08:00
def test_pointcloud_preprocessing():
raw_points = np.random.rand(10000, 5).astype(np.float32)
processed = preprocess_pointcloud(raw_points)
assert processed.shape[0] < raw_points.shape[0] # 下采样后点数减少
assert not np.isnan(processed).any() # 无 NaN
def test_3d_detection():
points = np.random.rand(5000, 5).astype(np.float32)
boxes, scores = detect_objects_3d(points)
assert len(boxes) == len(scores)
assert all(0 <= s <= 1 for s in scores)
assert boxes.shape[1] == 7 # (x,y,z,l,w,h,yaw)
2026-03-12 13:27:03 +08:00
"""
print("\n📋 需求和测试样本已准备")
print("\n🤖 Dev Agent 正在生成代码...\n")
try:
code = dev_agent.generate_code(srs_sample, test_sample)
print("\n✅ 代码生成成功!")
print(f"📄 代码预览:\n{code[:500]}...")
except Exception as e:
print(f"\n❌ 生成失败:{e}")
2026-03-12 17:58:15 +08:00
def example_6_realtime_file_saving():
"""示例 6: 实时文件保存演示"""
2026-03-12 13:27:03 +08:00
print("\n" + "=" * 70)
2026-03-12 17:58:15 +08:00
print("示例 6: 实时文件保存 - 生成的文件会立即创建")
2026-03-12 13:27:03 +08:00
print("=" * 70)
2026-03-12 17:58:15 +08:00
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
print("❌ 请设置 DASHSCOPE_API_KEY 环境变量")
return
2026-03-12 13:27:03 +08:00
2026-03-12 17:58:15 +08:00
system = AutoGenSDLCSystem(api_key=api_key, workspace_dir="workspace_realtime_demo")
requirement = """
我需要一个简单的 Python 工具函数库要求
1. 包含一个计算阶乘的函数 factorial(n)
2. 包含一个判断质数的函数 is_prime(n)
3. 包含一个生成斐波那契数列的函数 fibonacci(n)
4. 每个函数都要有完整的文档字符串和类型注解
5. 符合 PEP8 规范
"""
print(f"\n📋 需求:{requirement}")
print("\n💡 提示:在对话过程中,您会看到文件被实时保存到 workspace_realtime_demo 目录\n")
result = system.run_workflow(requirement, max_round=15)
if result["success"]:
print("\n✅ 工作流完成!")
print(f"📄 摘要:{result['summary'][:300]}...")
# 显示生成的文件
print(f"\n📁 已保存 {len(result['saved_files'])} 个文件:")
for file in result["saved_files"]:
print(f"{file}")
# 验证文件是否真的存在
print("\n🔍 验证文件是否存在...")
import os
for file in result["saved_files"]:
if os.path.exists(file):
print(f"{file} (存在)")
else:
print(f"{file} (不存在)")
else:
print(f"\n❌ 工作流失败:{result.get('error')}")
2026-03-12 13:27:03 +08:00
if __name__ == "__main__":
# 可以选择运行单个示例或全部示例
# example_3_direct_agent_call()
# example_4_test_generation()
# example_5_code_generation()
2026-03-12 17:58:15 +08:00
# example_6_realtime_file_saving() # 新增:实时文件保存演示
2026-03-12 13:27:03 +08:00
# 运行所有示例
2026-03-12 17:58:15 +08:00
example_1_basic_workflow()