This commit is contained in:
2026-03-12 17:58:15 +08:00
parent cd67c6dac2
commit 7931ce5070
7 changed files with 598 additions and 139 deletions

View File

@@ -12,7 +12,7 @@ from autogen_sdls_system import AutoGenSDLCSystem
def example_1_basic_workflow():
"""示例 1: 基本工作流 - 电池健康预测 API"""
"""示例 1: 基本工作流 - 自动驾驶车辆检测 API"""
print("\n" + "=" * 70)
print("示例 1: 基本 SDLC 工作流")
print("=" * 70)
@@ -25,15 +25,18 @@ def example_1_basic_workflow():
system = AutoGenSDLCSystem(api_key=api_key)
requirement = """
我需要一个电池健康状态 (SOH) 预测 API要求
1. 接收电池的电压、电流、温度数据
2. 输出健康度百分比0-100%
3. 符合汽车行业标准
4. 包含错误处理和边界情况检测
我需要一个自动驾驶目标检测与跟踪 API要求
1. 接收摄像头图像和激光雷达点云数据
2. 实现车辆、行人、骑行者的实时检测
3. 输出目标的 3D 边界框(位置、尺寸、朝向)
4. 支持多目标跟踪MOT输出轨迹信息
5. 符合车规级功能安全标准ISO 26262 ASIL-B
6. 响应时间 < 50ms检测精度 mAP > 85%
7. 包含异常处理(传感器失效、恶劣天气等)
"""
print(f"\n📋 需求:{requirement}")
result = system.run_workflow(requirement, max_round=15)
result = system.run_workflow(requirement, max_round=20)
if result["success"]:
print("\n✅ 工作流完成!")
@@ -92,7 +95,7 @@ def example_3_direct_agent_call():
pm_agent = ProductManagerAgent(llm_config=llm_config)
# 简单需求
requirement = "开发一个车载蓝牙连接管理模块"
requirement = "开发一个车载摄像头图像识别模块,支持车道线检测和交通标志识别"
print(f"\n📋 需求:{requirement}")
print("\n🤖 PM Agent 正在生成 SRS...\n")
@@ -126,13 +129,16 @@ def example_4_test_generation():
# 简单的 SRS 片段
srs_sample = """
【功能性需求】
FR-001: 系统应能接收电池电压数据(范围 0-5V
FR-002: 系统应能计算 SOH 百分比(范围 0-100%
FR-003: 系统应能检测异常数据并报错
FR-001: 系统应能接收摄像头 RGB 图像(分辨率 1920x1080
FR-002: 系统应能检测车辆、行人、骑行者三类目标
FR-003: 系统应能输出 3D 边界框x,y,z,long,width,height,yaw
FR-004: 系统应能处理夜间和雨雪天气场景
【非功能性需求】
NFR-001: 响应时间 < 100ms
NFR-002: 符合 MISRA-C 规范
NFR-001: 检测延迟 < 50ms
NFR-002: 检测精度 mAP@0.5 > 85%
NFR-003: 符合 ISO 26262 ASIL-B 功能安全标准
NFR-004: 支持 -40°C~85°C 工作温度范围
"""
print("\n📋 SRS 样本:")
@@ -167,15 +173,25 @@ def example_5_code_generation():
# SRS 和测试样本
srs_sample = """
FR-001: 实现 SOH 计算函数
FR-002: 输入验证(电压 0-5V温度 -20~60°C
FR-003: 输出限制在 0-100%
FR-001: 实现点云预处理函数(去噪、下采样、坐标变换)
FR-002: 实现 3D 目标检测函数(基于 PointPillars 或 VoxelNet
FR-003: 输入验证(点云格式 Nx5包含 x,y,z,intensity,timestamp
FR-004: 输出限制(边界框参数归一化,置信度 0-1
"""
test_sample = """
def test_soh_calculation():
assert calculate_soh(3.7, 2.0, 25)["soh"] > 0
assert calculate_soh(0, 0, 25)["soh"] == 0
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)
"""
print("\n📋 需求和测试样本已准备")
@@ -189,35 +205,52 @@ def test_soh_calculation():
print(f"\n❌ 生成失败:{e}")
def run_all_examples():
"""运行所有示例"""
def example_6_realtime_file_saving():
"""示例 6: 实时文件保存演示"""
print("\n" + "=" * 70)
print("🚀 AutoGen SDLC 系统 - 使用示例合集")
print("示例 6: 实时文件保存 - 生成的文件会立即创建")
print("=" * 70)
examples = [
("直接调用 PM Agent", example_3_direct_agent_call),
("QA Agent 生成测试", example_4_test_generation),
("Dev Agent 生成代码", example_5_code_generation),
("自定义 Agent 配置", example_2_custom_agents),
("完整工作流", example_1_basic_workflow),
]
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
print("❌ 请设置 DASHSCOPE_API_KEY 环境变量")
return
for name, func in examples:
print(f"\n\n{'='*70}")
print(f"▶️ 运行示例:{name}")
print('='*70)
try:
func()
except Exception as e:
print(f"\n❌ 示例执行失败:{e}")
input("\n按 Enter 键继续下一个示例...")
system = AutoGenSDLCSystem(api_key=api_key, workspace_dir="workspace_realtime_demo")
print("\n" + "=" * 70)
print("✅ 所有示例运行完成!")
print("=" * 70)
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')}")
if __name__ == "__main__":
@@ -225,6 +258,7 @@ if __name__ == "__main__":
# example_3_direct_agent_call()
# example_4_test_generation()
# example_5_code_generation()
# example_6_realtime_file_saving() # 新增:实时文件保存演示
# 运行所有示例
run_all_examples()
example_1_basic_workflow()