generate_persona.py 2.2 KB

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