run.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. """
  2. 内容寻找 Agent 运行入口
  3. 使用示例:
  4. python run.py
  5. """
  6. import asyncio
  7. import logging
  8. from pathlib import Path
  9. from agent.core.runner import AgentRunner, RunConfig
  10. from agent.trace.store import FileSystemTraceStore
  11. from agent.llm import create_openrouter_llm_call
  12. from agent.memory.stores import FileSystemMemoryStore
  13. from agent import SearchRequest, ContentFinderAgent
  14. # 导入工具(确保工具被注册)
  15. from tools import crawler, content_eval, feedback
  16. logging.basicConfig(level=logging.INFO)
  17. logger = logging.getLogger(__name__)
  18. async def main():
  19. """主函数"""
  20. # 初始化存储
  21. base_path = Path(__file__).parent / ".cache"
  22. trace_store = FileSystemTraceStore(base_path=str(base_path / "traces"))
  23. memory_store = FileSystemMemoryStore(base_path=str(base_path / "memory"))
  24. # 初始化LLM
  25. llm_call = create_openrouter_llm_call(
  26. model="anthropic/claude-sonnet-4.5"
  27. )
  28. # 初始化Runner
  29. runner = AgentRunner(
  30. llm_call=llm_call,
  31. trace_store=trace_store,
  32. memory_store=memory_store,
  33. skills_dir=str(Path(__file__).parent / "skills"),
  34. )
  35. # 初始化ContentFinderAgent
  36. agent = ContentFinderAgent(
  37. runner=runner,
  38. trace_store=trace_store,
  39. memory_store=memory_store,
  40. )
  41. # 示例1:搜索内容
  42. logger.info("=== 示例1:搜索美食类视频内容 ===")
  43. search_request = SearchRequest(
  44. keywords=["美食", "探店", "美食推荐"],
  45. tags=["美食", "探店"],
  46. platforms=["douyin", "kuaishou"],
  47. filters={
  48. "min_views": 10000,
  49. "min_likes": 500,
  50. },
  51. max_results=20,
  52. )
  53. results = await agent.search_content(search_request)
  54. logger.info(f"找到 {len(results)} 条内容")
  55. # 示例2:收集运营反馈
  56. if results:
  57. logger.info("\n=== 示例2:收集运营反馈 ===")
  58. first_content = results[0]
  59. feedback = await agent.collect_feedback(
  60. content_id=first_content.content_id,
  61. rating="excellent",
  62. notes="内容质量很高,符合平台调性",
  63. operator_id="operator_001",
  64. )
  65. logger.info(f"反馈已记录:{feedback}")
  66. # 示例3:更新内容表现
  67. if results:
  68. logger.info("\n=== 示例3:更新内容表现 ===")
  69. from agent import ContentPerformance
  70. from datetime import datetime
  71. performance = ContentPerformance(
  72. content_id=first_content.content_id,
  73. platform_views=150000,
  74. platform_likes=8000,
  75. platform_shares=500,
  76. internal_views=5000,
  77. internal_engagement=0.15,
  78. conversion_rate=0.08,
  79. update_time=datetime.now(),
  80. )
  81. await agent.update_performance(
  82. content_id=first_content.content_id,
  83. performance=performance,
  84. )
  85. logger.info("表现数据已更新")
  86. # 示例4:优化搜索策略
  87. logger.info("\n=== 示例4:优化搜索策略 ===")
  88. strategy = await agent.optimize_strategy()
  89. logger.info(f"优化后的策略:{strategy}")
  90. if __name__ == "__main__":
  91. asyncio.run(main())