| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- import os
- import time
- import sys
- # Add the current directory to sys.path to ensure imports work correctly
- sys.path.append(os.getcwd())
- sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "agents")))
- sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "src")))
- from agents.outline_agent import OutlineAgent
- from agents.chapter_generate_agent import ChapterGenerateAgent
- from hello_agents import HelloAgentsLLM
- def print_step(step_name):
- print("\n" + "="*60)
- print(f"正在执行步骤: {step_name}")
- print("="*60 + "\n")
- def main():
- # Configuration
- novel_id = f"test_novel_{int(time.time())}"
- title = "测试Agent功能小说"
- user_idea = "一个关于AI程序员意外穿越到自己编写的代码世界中的故事,他需要修复这个世界的BUG才能回到现实。"
-
- print(f"测试配置:\n小说ID: {novel_id}\n标题: {title}\n创意: {user_idea}\n")
- # Initialize LLM
- # Assuming environment variables are set correctly for the default provider
- try:
- llm = HelloAgentsLLM()
- print("LLM 初始化成功。")
- except Exception as e:
- print(f"LLM 初始化失败: {e}")
- return
- # ---------------------------------------------------------
- # Test Outline Agent
- # ---------------------------------------------------------
- print_step("1. 初始化 OutlineAgent (大纲生成Agent)")
- try:
- outline_agent = OutlineAgent(name="TestOutlineAgent", llm=llm)
- print("OutlineAgent 初始化完成。")
- except Exception as e:
- print(f"OutlineAgent 初始化失败: {e}")
- return
- print_step("2. 生成大纲 (Generate Outline)")
- print(f"调用 outline_agent.run,输入创意: {user_idea}")
- start_time = time.time()
-
- try:
- outline_content, outline_note_id = outline_agent.run(
- user_input=user_idea,
- novel_id=novel_id,
- title=title,
- tags=["科幻", "穿越", "程序员"],
- target_length=1000 # Keep it short for testing
- )
- except Exception as e:
- print(f"大纲生成失败: {e}")
- # import traceback
- # traceback.print_exc()
- return
- end_time = time.time()
- print(f"大纲生成耗时: {end_time - start_time:.2f} 秒。")
- print(f"生成的大纲 Note ID: {outline_note_id}")
- print("大纲内容预览 (前500字符):")
- print("-" * 30)
- print(outline_content[:500] + "...")
- print("-" * 30)
- # ---------------------------------------------------------
- # Test Chapter Generate Agent
- # ---------------------------------------------------------
- print_step("3. 初始化 ChapterGenerateAgent (章节生成Agent)")
- try:
- chapter_agent = ChapterGenerateAgent(
- name="TestChapterAgent",
- llm=llm,
- max_steps=3, # Limit steps for testing
- chapter_length=1000 # Keep it short
- )
- print("ChapterGenerateAgent 初始化完成。")
- except Exception as e:
- print(f"ChapterGenerateAgent 初始化失败: {e}")
- return
- print_step("4. 生成第一章 (Generate Chapter 1)")
- print("调用 chapter_agent.run 生成第一章...")
- start_time = time.time()
-
- try:
- # The first run doesn't have previous chapters, so it should start fresh based on outline
- chapter_data, chapter_note_id = chapter_agent.run(
- user_input="第一章:主角醒来发现自己在代码构成的森林里。",
- novel_id=novel_id,
- novel_title=title
- )
- except Exception as e:
- print(f"章节生成失败: {e}")
- # import traceback
- # traceback.print_exc()
- return
-
- end_time = time.time()
- print(f"第一章生成耗时: {end_time - start_time:.2f} 秒。")
- print(f"生成的章节 Note ID: {chapter_note_id}")
- print(f"章节标题: {chapter_data.get('title')}")
- print(f"章节摘要: {chapter_data.get('summary')}")
- print("章节内容预览 (前500字符):")
- print("-" * 30)
- print(chapter_data.get('content', '')[:500] + "...")
- print("-" * 30)
- # ---------------------------------------------------------
- # Verification
- # ---------------------------------------------------------
- print_step("5. 验证输出文件 (Verify Output Files)")
- outline_path = os.path.join("outputs", f"{title}-{novel_id}", "outline")
- chapter_path = os.path.join("outputs", f"{title}-{novel_id}", "chapters")
-
- print(f"检查大纲目录: {outline_path}")
- if os.path.exists(outline_path) and os.listdir(outline_path):
- print("PASS: 大纲目录存在且不为空。")
- else:
- print("FAIL: 大纲目录缺失或为空。")
- print(f"检查章节目录: {chapter_path}")
- if os.path.exists(chapter_path) and os.listdir(chapter_path):
- print("PASS: 章节目录存在且不为空。")
- else:
- print("FAIL: 章节目录缺失或为空。")
- print("\n" + "="*60)
- print("测试流程结束")
- print("="*60)
- if __name__ == "__main__":
- main()
|