generate_persona.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. """
  2. 账号人设信息生成脚本
  3. """
  4. import asyncio
  5. import sys
  6. from pathlib import Path
  7. from dotenv import load_dotenv
  8. # 加载项目根目录 .env
  9. load_dotenv(Path(__file__).parent.parent / ".env")
  10. from create.utils import run_agent
  11. DEFAULT_MODEL = "google/gemini-3-flash-preview"
  12. async def generate_content(
  13. account_name: str,
  14. model: str = DEFAULT_MODEL,
  15. **run_config_kwargs
  16. ) -> str:
  17. """
  18. 完整内容生成流程:人设提取 -> 自动搜索灵感 -> 选题生成 -> 创作脚本生成
  19. 使用单一agent调用完成整个流程,agent会自动:
  20. 1. 提取账号人设信息
  21. 2. 基于人设自动生成搜索关键词并搜索灵感
  22. 3. 生成选题
  23. 4. 生成创作脚本
  24. Args:
  25. account_name: 账号名称
  26. model: 模型名称
  27. **run_config_kwargs: 其他 RunConfig 参数
  28. Returns:
  29. str: 最终生成的完整内容(包含人设、灵感、选题和创作脚本)
  30. """
  31. # 创建输出目录
  32. output_dir = Path(__file__).parent / "data" / account_name
  33. output_dir.mkdir(parents=True, exist_ok=True)
  34. # 读取完整流程prompt
  35. print("=" * 60)
  36. print("开始执行完整内容生成流程...")
  37. print("=" * 60)
  38. print("流程包括:人设提取 -> 自动搜索灵感 -> 选题生成 -> 创作脚本生成")
  39. print("=" * 60)
  40. workflow_prompt_path = Path(__file__).parent / "prompt" / "full_workflow.md"
  41. workflow_prompt = workflow_prompt_path.read_text(encoding="utf-8")
  42. # 替换账号名称占位符
  43. workflow_prompt = workflow_prompt.replace("{账号名称}", account_name)
  44. # 单次agent调用完成整个流程
  45. final_result = await run_agent(workflow_prompt, model=model, **run_config_kwargs)
  46. # 保存最终结果
  47. final_file = output_dir / "full_workflow_result.md"
  48. final_file.write_text(final_result, encoding="utf-8")
  49. print(f"\n✅ 完整流程执行完成")
  50. print(f"📁 最终结果已保存到: {final_file}\n")
  51. return final_result
  52. async def main():
  53. """主函数"""
  54. account_name = '健康知识'
  55. result = await generate_content(account_name)
  56. print("=" * 60)
  57. print("最终结果:")
  58. print("=" * 60)
  59. print(result)
  60. if __name__ == "__main__":
  61. asyncio.run(main())