Files
autogen/usage_examples.py
2026-03-12 17:58:15 +08:00

265 lines
8.6 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.

"""
使用示例 - 展示如何使用 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():
"""示例 1: 基本工作流 - 自动驾驶车辆检测 API"""
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 = """
我需要一个自动驾驶目标检测与跟踪 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=20)
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)
# 简单需求
requirement = "开发一个车载摄像头图像识别模块,支持车道线检测和交通标志识别"
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 = """
【功能性需求】
FR-001: 系统应能接收摄像头 RGB 图像(分辨率 1920x1080
FR-002: 系统应能检测车辆、行人、骑行者三类目标
FR-003: 系统应能输出 3D 边界框x,y,z,long,width,height,yaw
FR-004: 系统应能处理夜间和雨雪天气场景
【非功能性需求】
NFR-001: 检测延迟 < 50ms
NFR-002: 检测精度 mAP@0.5 > 85%
NFR-003: 符合 ISO 26262 ASIL-B 功能安全标准
NFR-004: 支持 -40°C~85°C 工作温度范围
"""
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 = """
FR-001: 实现点云预处理函数(去噪、下采样、坐标变换)
FR-002: 实现 3D 目标检测函数(基于 PointPillars 或 VoxelNet
FR-003: 输入验证(点云格式 Nx5包含 x,y,z,intensity,timestamp
FR-004: 输出限制(边界框参数归一化,置信度 0-1
"""
test_sample = """
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📋 需求和测试样本已准备")
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}")
def example_6_realtime_file_saving():
"""示例 6: 实时文件保存演示"""
print("\n" + "=" * 70)
print("示例 6: 实时文件保存 - 生成的文件会立即创建")
print("=" * 70)
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
print("❌ 请设置 DASHSCOPE_API_KEY 环境变量")
return
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')}")
if __name__ == "__main__":
# 可以选择运行单个示例或全部示例
# example_3_direct_agent_call()
# example_4_test_generation()
# example_5_code_generation()
# example_6_realtime_file_saving() # 新增:实时文件保存演示
# 运行所有示例
example_1_basic_workflow()