80 lines
2.5 KiB
Python
80 lines
2.5 KiB
Python
|
|
"""
|
|||
|
|
实时文件保存演示脚本
|
|||
|
|
展示如何在对话过程中实时创建文件
|
|||
|
|
"""
|
|||
|
|
import os
|
|||
|
|
import sys
|
|||
|
|
from pathlib import Path
|
|||
|
|
|
|||
|
|
sys.path.insert(0, str(Path(__file__).parent))
|
|||
|
|
|
|||
|
|
from autogen_sdls_system import AutoGenSDLCSystem
|
|||
|
|
|
|||
|
|
|
|||
|
|
def demo_realtime_saving():
|
|||
|
|
"""演示实时文件保存功能"""
|
|||
|
|
print("=" * 70)
|
|||
|
|
print("🚀 AutoGen SDLC - 实时文件保存演示")
|
|||
|
|
print("=" * 70)
|
|||
|
|
|
|||
|
|
# 检查 API Key
|
|||
|
|
api_key = os.getenv("DASHSCOPE_API_KEY")
|
|||
|
|
if not api_key:
|
|||
|
|
print("\n❌ 错误:未设置 DASHSCOPE_API_KEY 环境变量")
|
|||
|
|
print("请运行:$env:DASHSCOPE_API_KEY='your_api_key' (PowerShell)")
|
|||
|
|
print("或:export DASHSCOPE_API_KEY='your_api_key' (Linux/Mac)")
|
|||
|
|
return
|
|||
|
|
|
|||
|
|
# 创建系统实例,使用独立的工作目录
|
|||
|
|
workspace = "workspace_realtime_demo"
|
|||
|
|
print(f"\n📂 工作目录:{Path(workspace).absolute()}")
|
|||
|
|
|
|||
|
|
system = AutoGenSDLCSystem(
|
|||
|
|
api_key=api_key,
|
|||
|
|
workspace_dir=workspace
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 简单需求用于快速演示
|
|||
|
|
requirement = """
|
|||
|
|
我需要一个 Python 工具函数库,包含以下功能:
|
|||
|
|
1. factorial(n): 计算阶乘
|
|||
|
|
2. is_prime(n): 判断质数
|
|||
|
|
3. fibonacci(n): 生成斐波那契数列前 n 项
|
|||
|
|
要求:每个函数都有类型注解和完整文档字符串
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
print(f"\n📋 需求:{requirement}")
|
|||
|
|
print("\n💡 提示:您会看到文件在对话过程中被实时创建...\n")
|
|||
|
|
|
|||
|
|
# 运行工作流
|
|||
|
|
result = system.run_workflow(requirement, max_round=15)
|
|||
|
|
|
|||
|
|
# 显示结果
|
|||
|
|
print("\n" + "=" * 70)
|
|||
|
|
if result["success"]:
|
|||
|
|
print("✅ 工作流成功完成!")
|
|||
|
|
print(f"\n📄 摘要:\n{result['summary'][:500]}...")
|
|||
|
|
|
|||
|
|
# 显示生成的文件
|
|||
|
|
print(f"\n📁 已保存 {len(result['saved_files'])} 个文件:")
|
|||
|
|
for file in result["saved_files"]:
|
|||
|
|
exists = "✓" if Path(file).exists() else "✗"
|
|||
|
|
print(f" {exists} {file}")
|
|||
|
|
|
|||
|
|
# 显示工作目录内容
|
|||
|
|
print(f"\n📂 工作目录内容:")
|
|||
|
|
workspace_path = Path(workspace)
|
|||
|
|
if workspace_path.exists():
|
|||
|
|
for item in workspace_path.iterdir():
|
|||
|
|
if item.is_file():
|
|||
|
|
size = f"({item.stat().st_size} bytes)"
|
|||
|
|
print(f" 📄 {item.name} {size}")
|
|||
|
|
else:
|
|||
|
|
print(f"❌ 工作流失败:{result.get('error', '未知错误')}")
|
|||
|
|
|
|||
|
|
print("\n" + "=" * 70)
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
demo_realtime_saving()
|