fix
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user